UESTC1263(贪心)
2016-01-17 00:06
423 查看
<span style="color: inherit; line-height: 1.1; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Helvetica, Arial, sans-serif; background-color: rgb(255, 255, 255);">The Desire of Asuna</span>
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
Submit
Status
ZYHAzwraith用自己心爱的键盘换来了很多支漂亮的荧光棒!
一天,他准备用一条由很多个莹光圈相互连接而成的荧光链送给女神Asuna。每个荧光圈只能由一支荧光棒首尾相接成一个环得到。现在他手中有 n 条荧光链,为了最后把这些链拼接成一条链,每次他可以选择任意一条荧光链中的任意一个荧光圈并用魔法把这个圈断开,然后用这个断开的荧光圈去连接任意两条荧光链使之成为一条。
现在ZYHAzwraith想知道最少需要多少次才能把这些荧光链链拼接成一条长链?
Input
第一行是一个整数 n ( 1≤n≤2000),表示有 n 条荧光链。
接下来一行有 n 个数,每个数 ai (1≤ai≤105)表示第 i 条链由 ai 个荧光圈相互连接
Output
输出一个整数表示最少的次数。
Sample input and output
Sample Input | Sample Output |
---|---|
3 3 2 1 | 1 |
3 4 3 4 | 2 |
Hint
第一组样例解释:
Source
第七届ACM趣味程序设计竞赛第三场(正式赛)噗~现在明白啦,比赛时卡的要命;贴个代码
//UESTC-1263(贪心) //有n条由荧光圈构成的荧光链,输入每个荧光链的荧光圈数,现在要将这n个链连成一条链。 //每次他可以选择任意一条荧光链中的任意一个荧光圈并用魔法把这个圈断开, //然后用这个断开的荧光圈去连接任意两条荧光链使之成为一条。问最少需要断开多少个荧光圈,才能将其连成一条链。 //贪心题,假如用a[i]表示第i条链的荧光圈数,首先将n个数按升序排列。从最小的链开始,每次从a[i]中断开一个圈,这时若 //a[i]==1那么连接任意两个链后n=n-2;否则由于断开a[i]的一个圈后,a[i]还剩a[i]-1个圈。相当于减少了两个链又增加了一条。 //所以此次后n=n-1; 可知当连的n==1或n==2时就可以退出循环直接输出了。 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[2001]; int main() { int i,j,k,n; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d",&a[i]); } sort(a,a+n); //从小到大排序 k=0,i=0; while(n) { for(j=a[i];j>0;j--) { if(n<=2) break; //当圈数连的小于等于2时;直接可以跳出循环。 if(a[i]==1) n-=2; //当a[i]==1或a[i]还剩的等于1时;可以消去两个圈。 else { n-=1; //否则消去一个圈 a[i]--; //链a[i]剩余的圈数 } k++; //记录断的圈数 } if(n==2) { k++; break; //当还剩两部分时,加1后退出 } else if(n==1) break; //否则直接退出。 } printf("%d\n",k); //打印出最少断圈数。 } return 0; }
相关文章推荐
- 【解决方法】You must rebuild it with bitcode enabled (Xc
- 如何做优化,UITabelView才能更加顺滑
- 关于UIWindow的创建过程
- 计算UILabel的size
- Android TV-Building Layouts for TV
- AS-->如何更高效的使用 Gradle, 快速build apk
- Educational Codeforces Round 2 B.Queries about less or equal elements(排序&&二分)
- UESTC--1271--Search gold(贪心)
- UESTC--1271--Search gold(贪心)
- UI学习第06天
- getRequestDispatcher()与sendRedirect()的区别
- 关于UIWindow的一点儿思考
- iOS - UICollectionView学习
- UITextFielddelegate委托方法注释
- UESTC Memory 1262 (打表&暴力模拟)
- UESTC第七届ACM趣味程序设计竞赛第四场(正式赛)
- 【SSH网上商城】Incorrect datetime value: '' for column 'pdate' at row 1
- UESTC--1272--Final Pan's prime numbers(水题)
- 内核发送uevent的API,用户空间解析uevent
- UESTC--1272--Final Pan's prime numbers(水题)