寒冰王座
2015-08-21 16:01
190 查看
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13188 Accepted Submission(s): 6725[align=left]Problem Description[/align]
不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前.
死亡骑士:"我要买道具!"
地精商人:"我们这里有三种道具,血瓶150块一个,魔法药200块一个,无敌药水350块一个."
死亡骑士:"好的,给我一个血瓶."
说完他掏出那张N元的大钞递给地精商人.
地精商人:"我忘了提醒你了,我们这里没有找客人钱的习惯的,多的钱我们都当小费收了的,嘿嘿."
死亡骑士:"......"
死亡骑士想,与其把钱当小费送个他还不如自己多买一点道具,反正以后都要买的,早点买了放在家里也好,但是要尽量少让他赚小费.
现在死亡骑士希望你能帮他计算一下,最少他要给地精商人多少小费.
[align=left]Input[/align]
输入数据的第一行是一个整数T(1<=T<=100),代表测试数据的数量.然后是T行测试数据,每个测试数据只包含一个正整数N(1<=N<=10000),N代表死亡骑士手中钞票的面值.
注意:地精商店只有题中描述的三种道具.
[align=left]Output[/align]
对于每组测试数据,请你输出死亡骑士最少要浪费多少钱给地精商人作为小费.
[align=left]Sample Input[/align]
2 900 250
[align=left]Sample Output[/align]
0 50
刚开始没有考虑到对已经访问过的数字进行标记而导致错误
#include<queue> #include<stdio.h> #include<string.h> using namespace std; int x[10008]; int main() { int n,m,min,t; scanf("%d",&n); while(n--) { //priority_queue<int,vector<int>,greater<int> >q; queue<int>q; min=350; scanf("%d",&m); q.push(m); memset(x,0,sizeof(x)); while(!q.empty()) { int u=q.front(); if(min>u) min=u; q.pop(); for(int i=0;i<3;i++) { if(i==0) t=u-150; if(i==1) t=u-200; if(i==2) t=u-350; if(t>=0&&x[t]==0) { x[t]=1; q.push(t); } } } printf("%d\n",min); } return 0; }
相关文章推荐
- mac系统使用技巧链接汇总
- 文章标题
- GDI+画电子印章
- 剑指off-判断5张牌是否是顺子
- WPF 自定义控件依赖属性怎么实时变化?
- 利用mod_wsgi部署Django应用
- C#获取网络图片显示到picturebox
- Linux 查看文件和文件夹大小
- 电赛总结(四)——波形发生芯片总结之AD9834
- php-fpm 启动参数及重要配置详解
- c#用户控件的生命周期
- 莫比乌斯函数
- android 组件DatePicker实例
- UVA---10608-Friends(并查集)
- String,创建对象问题
- 2.DB-Mysql++实例
- 编程方法论/架构设计/模式相关转载链接汇总
- 背景填充全屏
- SQL Server XML基础学习之<6>--XQuery的 value() 方法、 exist() 方法 和 nodes() 方法
- js+正则+单双引号问题