题意:

给出n,m,代表微波炉有n个按钮,要求达到总时间为m

然后给出n个数,代表n个按钮能增加的时间,问最少几步,能够使得按出的总时间大于等于要求的时间,并且相差最小

输出最小的步数与相差的最小值

要求,当总时间小于0时,时间为0,大于3600时,时间为3600

题意:

给出n,m,代表微波炉有n个按钮,要求达到总时间为m

然后给出n个数,代表n个按钮能增加的时间,问最少几步,能够使得按出的总时间大于等于要求的时间,并且相差最小

输出最小的步数与相差的最小值

要求,当总时间小于0时,时间为0,大于3600时,时间为3600

Sample Input

2
3 50
-10 10 60
1 50
20

Sample Output

2 0
3 10

AC代码:

#include<stdio.h>
#include<queue>
#include<string.h>
#define INF 0x3f3f3f3f
using namespace std;
int step[];
int a[];
int main()
{
int t,n,m,v,nt,i;
scanf("%d",&t);
while(t--)
{
memset(step,INF,sizeof(step));
queue<int>q;
scanf("%d%d",&n,&m);
for( i= ; i<n ;i++)
scanf("%d",&a[i]);
q.push();
step[]=;///记录步数
while(!q.empty())
{
v=q.front();
q.pop();
for( i= ; i<n ;i++)
{
nt=v+a[i];///时间点
if(nt<)
nt=;
if(nt>)
nt=;
if(step[nt]<=step[v]+)
continue;
step[nt]=step[v]+;
q.push(nt);
}
}
for( i=m; i<=;i++)
if(step[i]!=INF)
break;
printf("%d %d\n",step[i],i-m);
}
}

做题报告:

题意要理解清楚,要明白小于0为0,大于3600为3600,大胆暴力

最新文章

  1. renderman、arnold及全局光照
  2. event相关
  3. 【leetcode】Count Primes(easy)
  4. RadGridView标头分行
  5. MyBatis与Hibernate对比
  6. HDU 4160
  7. vector(相对线程安全) arryList(线程不安全)
  8. 《JavaScript 闯关记》之初探
  9. CSS border三角、圆角图形生成技术简介
  10. Java进阶篇(六)——Swing程序设计(下)
  11. OOP编程七大原则
  12. 逆FizzBuzz问题求最短序列
  13. linux 扩展文件系统
  14. 1.2:Properties
  15. Ajax写成绩批量录入
  16. KERMIT,XMODEM,YMODEM,ZMODEM传输协议小结
  17. [World Final 2016] Branch Assignment
  18. mysql xtrabackup工具备份
  19. [Winform]无边框窗口悬浮右下角并可以拖拽移动
  20. es6解构赋值的几个用法

热门文章

  1. 人工智能一之TensorFlow环境配置
  2. Codeforces 960F 线段树
  3. HDU 4879 ZCC loves march (并查集,set,map)
  4. Blender 基础 骨架 01
  5. php学习笔记-return语句
  6. java中是如何解决编码问题的,比如char类型的对象是如何存储的呢?
  7. poj1769 Minimizing maximizer
  8. 101334E Exploring Pyramids
  9. 《Head First Servlets & JSP》-2-概述
  10. android 应用间共享数据,调用其他app数据资源