大吉大利今晚吃鸡——跑毒篇
2018-01-22 00:52
169 查看
题目链接:点击打开链接
问题
1. 边界部分恰好擦着的时候到底是死是活.......写到程序里就是有没有=的问题。
首先题目里明确指出打包的时候擦着就是死。
然后后面有个带着你理解第二个样例的部分,这个样例是有目的,是告诉你当你最后一步到边界时(只剩下一步)却只剩下一丝血是能活下来的。
2.思路难道真的是模拟?我没有,而只是把能走的最长距离算出来,然后和b比较一下就好啦。
更具体的注意点看注释吧。
贴代码:
#include <iostream>
using namespace std;
int main()
{
int T;
int a, b, c;
cin >> T;
for(int i = 1; i <= T; i++)
{
cin >> a >> b >> c;
//这几个m是核心时间
//m100直接走不打包最多能走几米,注意光走是向上取整
int m100 = (100 + a - 1) / a;
//m40是打包的话能走多远,打包向下取整
int m40 = (100 - (float)a*6 ) / a;
//这两个是80血量,同上
int m80 = (80 + a - 1 )/ a;
int m20 = (80 - (float)a*6 ) / a;
//打包情况下,如果是整除就要减一
if((100 - a*6) % a == 0)
m40--;
if((80 - a*6) % a == 0)
m20--;
//cout << m100<<' '<<m40<<' '<<m80<<' '<<m20<<endl;
//下面和b比较的都没有=,因为等于是能活的
//和6比较都有=,因为打包不能擦着
//直接走不打包的情况:打包没掉血快或者根本没包
if( m100 <= 6 || c == 0 ){
if(m100 < b)
cout << "NO\n";
else
cout << "YES\n";
continue;
}//打了一次包后在80血量的情况下掉血比再打包快
else if(m80 <= 6){
if(m40 + m80 < b)
cout << "NO\n";
else
cout << "YES\n";
continue;
}
else{//把所有包都用了后能走的最远距离
if(m40 + (c-1)*m20 + m80 < b)
cout << "NO\n";
else
cout << "YES\n";
continue;
}
}
return 0;
}
问题
1. 边界部分恰好擦着的时候到底是死是活.......写到程序里就是有没有=的问题。
首先题目里明确指出打包的时候擦着就是死。
然后后面有个带着你理解第二个样例的部分,这个样例是有目的,是告诉你当你最后一步到边界时(只剩下一步)却只剩下一丝血是能活下来的。
2.思路难道真的是模拟?我没有,而只是把能走的最长距离算出来,然后和b比较一下就好啦。
更具体的注意点看注释吧。
贴代码:
#include <iostream>
using namespace std;
int main()
{
int T;
int a, b, c;
cin >> T;
for(int i = 1; i <= T; i++)
{
cin >> a >> b >> c;
//这几个m是核心时间
//m100直接走不打包最多能走几米,注意光走是向上取整
int m100 = (100 + a - 1) / a;
//m40是打包的话能走多远,打包向下取整
int m40 = (100 - (float)a*6 ) / a;
//这两个是80血量,同上
int m80 = (80 + a - 1 )/ a;
int m20 = (80 - (float)a*6 ) / a;
//打包情况下,如果是整除就要减一
if((100 - a*6) % a == 0)
m40--;
if((80 - a*6) % a == 0)
m20--;
//cout << m100<<' '<<m40<<' '<<m80<<' '<<m20<<endl;
//下面和b比较的都没有=,因为等于是能活的
//和6比较都有=,因为打包不能擦着
//直接走不打包的情况:打包没掉血快或者根本没包
if( m100 <= 6 || c == 0 ){
if(m100 < b)
cout << "NO\n";
else
cout << "YES\n";
continue;
}//打了一次包后在80血量的情况下掉血比再打包快
else if(m80 <= 6){
if(m40 + m80 < b)
cout << "NO\n";
else
cout << "YES\n";
continue;
}
else{//把所有包都用了后能走的最远距离
if(m40 + (c-1)*m20 + m80 < b)
cout << "NO\n";
else
cout << "YES\n";
continue;
}
}
return 0;
}
相关文章推荐
- 大吉大利,今晚吃鸡——枪械篇
- A-大吉大利,今晚吃鸡——枪械篇
- 大吉大利,今晚吃鸡——跑毒篇
- 2018年全国多校算法寒假训练营练习比赛(第一场) - A - 大吉大利,今晚吃鸡——枪械篇(枚举)
- 2018年全国多校算法寒假训练营练习比赛(第一场) - F - 大吉大利,今晚吃鸡——跑毒篇
- 2018年全国多校算法寒假训练营练习比赛(第一场)-A大吉大利,今晚吃鸡——枪械篇
- 大吉大利,今晚吃鸡——枪械篇
- 2018年全国多校算法寒假训练营练习比赛(第一场) 大吉大利,今晚吃鸡——枪械篇
- A_大吉大利,今晚吃鸡——枪械篇
- 大吉大利,今晚吃鸡——跑毒篇
- 大吉大利,今晚吃鸡——枪械篇
- nowcoder 67 F 大吉大利,今晚吃鸡——跑毒篇
- 大吉大利,今晚吃鸡——跑毒篇
- 大吉大利今晚吃鸡——枪械篇
- [BZOJ5109][LOJ #6252][P4061][CodePlus 2017 11月赛]大吉大利,今晚吃鸡!(最短路+拓扑排序+传递闭包+map+bitset(hash+压位))
- 牛客网NowCoder-2018年全国多校算法寒假训练营练习比赛(第一场) A-大吉大利,今晚吃鸡——枪械篇 F-大吉大利,今晚吃鸡——跑毒篇 H-方块与收纳盒 I-找数字个数
- 牛客网 A-大吉大利,今晚吃鸡——枪械篇
- 大吉大利,今晚吃鸡——枪械篇
- 牛客网 F-大吉大利,今晚吃鸡——跑毒篇
- 2018年全国多校算法寒假训练营练习比赛(第一场)F. 大吉大利,今晚吃鸡——跑毒篇(模拟)