德鲁伊在炉石传说中是一个很稳定的职业,主流的卡组套路有咆哮德,城墙德以及让人很无奈的疲劳德。然而,大部分的卡组总都包括“横扫”这张德鲁伊的职业法术卡。
我们假定战场上的敌人数目不定,敌人的血量已知,我们想知道最少使用多少张“横扫”能消灭战场上所有敌人。
标签:csu
2
3
1 2 3
2
4
1 4 1 1
2
1
#include <iostream> #include <stdio.h> #include <string.h> #include <stack> #include <queue> #include <map> #include <set> #include <vector> #include <math.h> #include <bitset> #include <algorithm> #include <climits> using namespace std; #define LS 2*i #define RS 2*i+1 #define UP(i,x,y) for(i=x;i<=y;i++) #define DOWN(i,x,y) for(i=x;i>=y;i--) #define MEM(a,x) memset(a,x,sizeof(a)) #define W(a) while(a) #define gcd(a,b) __gcd(a,b) #define LL long long #define N 20005 #define MOD 1000000007 #define INF 0x3f3f3f3f #define EXP 1e-8 int a[1005],t,n; int main() { int i,j,k; scanf("%d",&t); W(t--) { scanf("%d",&n); UP(i,0,n-1) { scanf("%d",&a[i]); } if(n==1) { if(a[0]%4) printf("%d\n",a[0]/4+1); else printf("%d\n",a[0]/4); continue; } sort(a,a+n); int ans = 0; W(a[n-1]-ans>0) { ans++; a[n-1]-=3; for(i = n-2; i>=0; i--) { if(a[n-1]>a[i]||i==0) { int tem = a[i+1]; a[i+1] = a[n-1]; for(j=n-1; j>=i+3; j--) a[j]=a[j-1]; a[i+2] = tem; break; } } } printf("%d\n",ans); } return 0; }
标签:csu
原文地址:http://blog.csdn.net/libin56842/article/details/46290543