洛谷 P1634 P1639 题解

题目:

No.1 P1634 禽兽的传染病

No.2 P1639 [USACO18FEB] Teleportation B

第一道 P1634 禽兽的传染病:

题目背景

mxj 的启发。

题目描述

禽兽患传染病了。一个禽兽会每轮传染 x 个禽兽。试问 n 轮传染后有多少禽兽被传染?

输入格式

两个非负整数 x 和 n。

输出格式

一个整数,即被传染的禽兽数。

输入输出样例

输入 #1

10 2

输出 #1

121

说明/提示

保证x,n 以及答案都在64 位无符号整数的表示范围内。

思路:

很简单啊,只要用一个循环就搞定了,真的没什么好讲的

AC代码(注释又来了):

#include<bits/stdc++.h>//万能头文件
using namespace std;//cin,cout必备
int main()//main主函数
{
    long long x,n,sum=1;//定义变量
    cin >> x >> n;//读入数据
    while(n--)//n轮传染
    {
        sum=sum+sum*x;//不懂的看题去
    }
    cout<<sum;//输出
	return 0;//程序结束
}

第二道:P1639 [USACO18FEB] Teleportation B

题目描述

Farmer John 最讨厌的农活是运输牛粪。为了精简这个过程,他制造了一个伟大的发明:便便传送门!与使用拖拉机拖着装满牛粪的大车从一个地点到另一个地点相比,他可以使用便便传送门将牛粪从一个地点瞬间传送到另一个地点。

Farmer John 的农场沿着一条长直道路而建,所以他农场上的每个地点都可以简单地用该地点在道路上的位置来表示(相当于数轴上的一个点)。一个传送门可以用两个数 x 和 y 表示,被拖到地点 x 的牛粪可以瞬间传送到地点 y,反之亦然。

Farmer John 想要将牛粪从地点 a 运输到地点 b,他建造了一个可能对这一过程有所帮助的传送门(当然,如果没有帮助,他也可以不用)。请帮助他求出他需要使用拖拉机运输牛粪的总距离的最小值。

输入格式

输入仅包含一行,为四个用空格分隔的整数:a 和 b,表示起始地点和结束地点,后面是 x 和 y,表示传送门。所有的位置都是范围为 0…100 的整数,不一定各不相同。

输出格式

输出一个整数,为 Farmer John 需要用拖拉机运输牛粪的最小距离。

输入输出样例

输入 #1

3 10 8 2

输出 #1

3

说明/提示

在这个样例中,最佳策略是将牛粪从位置 3 运到位置 2,传送到位置 8,再运到位置 10。 所以需要用拖拉机的总距离为1+2=3。

思路:

很明显,一共有三种走法:

1.直接走,距离为|a-b|

2.从a走到x,传送到y,走到b,距离为|a-x|+|b-y|

3.从a走到y,传送到x,走到b,距离为|a-y|+|b-x|

AC代码:

#include<bits/stdc++.h>
using namespace std;
int mymin(int a,int b,int c)
{
    return min(a,min(b,c));
}
int main()
{
    int a,b,x,y;
    cin >> a >> b >> x >> y;
    cout<<mymin(abs(a-b),abs(a-x)+abs(y-b),abs(a-y)+abs(x-b));
	return 0;
}

这篇博客就到这里啦,我们下篇博客见!

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值