CSU 1648
来源:互联网 发布:衬衣品牌 知乎 编辑:程序博客网 时间:2024/05/16 11:59
1648: Swipe
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 130 Solved: 25
[Submit][Status][Web Board]
Description
德鲁伊在炉石传说中是一个很稳定的职业,主流的卡组套路有咆哮德,城墙德以及让人很无奈的疲劳德。然而,大部分的卡组总都包括“横扫”这张德鲁伊的职业法术卡。
我们假定战场上的敌人数目不定,敌人的血量已知,我们想知道最少使用多少张“横扫”能消灭战场上所有敌人。
Input
第一行一个整数T( T<=100), 表示测试数据的组数。
接下来有T组数据,
每组数据第一行n ( n<=1000) ,表示战场上敌人的数目
第二行有n个数,表示每个敌人当前的血量 (数值不大于1000000)
Output
每组数据输出一个整数,占一行,表示消灭所有敌人所需的最少“横扫”数目
Sample Input
231 2 324 1 4 1 1
Sample Output
21
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1648
#include <iostream>#include <cstdio>#include <cstring>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <cmath>#include <algorithm>using namespace std;const double pi = acos(-1.0);const int INF = 0x3f3f3f3f; int n,sum,m;int s[1005]; int cmp(int a,int b){ return a<b;} int main (){ int T; scanf ("%d",&T); while (T--) { sum = 0; scanf ("%d",&n); for (int i=0; i<n; i++) { scanf ("%d",&s[i]); } sort(s, s+n,cmp); for (m=0;;m++) { if (m >= s[n-1]) break; s[n-1] -= 3; int t=n-1; int tp=s[n-1]; if(s[n-1]<s[0]) { for(int i=n-1; i>0; i--) { s[i]=s[i-1]; } s[0]=tp; } else { for (int i=n-2; i>=0; i--) { if (s[n-1] >= s[i]) { t=i+1; break; } } for(int i=n-1; i>t; i--) { s[i]=s[i-1]; } s[t]=tp; } } printf ("%d\n",m); } return 0;}/************************************************************** Problem: 1648 User: xky1306101 Language: C++ Result: Accepted Time:748 ms Memory:1492 kb
0 0
- CSU 1648
- CSU 1648: Swipe
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- CSU
- C/C++库文件的生成与使用
- hdu 5248 序列变换【二分】
- ScrollView嵌套ListView只显示一行(总结)
- 计算几何小模板
- 生活还是很美好的
- CSU 1648
- java下载网络文件并重命名
- 编程实现队列的入队、出队、测长、打印
- VelocityTracker类介绍
- mulitset,mulitmap
- mysql语句优化原则
- linux自学笔记
- Ansible(14)wait_for模块
- 生成二维码,使用JS技术