【NBUT】[1651]Red packet
来源:互联网 发布:淘宝域名是什么 编辑:程序博客网 时间:2024/05/17 09:09
比较麻烦的二分
需要注意的是并不是选出一个可以最lucky的
而是发完他之后
无论后面怎么发都应该是他最lucky
所以可以进行二分搜索
然后判定时判断是因为mid过大还是因为mid过小
#include<stdio.h>int a[100020];int n,m,k,sum;bool judge(int x) { if((n-k==1&&x>sum)||(n-k==2&&(x>sum-1||x<=sum/2))||x>sum-(n-k-1)||x<=sum-x-(n-k-2)) return false; for(int i=0; i<=k; i++) { if(x<=a[i]) return false; } return true;}int main() { int T; scanf("%d",&T); while(T--) { scanf("%d %d %d",&n,&m,&k); sum=0; for(int i=0; i<k; i++) { scanf("%d",&a[i]); sum+=a[i]; } sum=m-sum; int l=0,r=m,res=0; while(l<=r) { int mid=(l+r)/2; if(judge(mid)) { res=mid; r=mid-1; } else { if((n-k==1&&mid>sum)||(n-k==2&&mid>sum-1)||mid>sum-(n-k-1)) r=mid-1; else l=mid+1; } } if(!res) printf("Impossible\n"); else printf("%d\n",res); } return 0;}
题目地址:【NBUT】[1651]Red packet
0 0
- NbUT 1651Red packet
- 【NBUT】[1651]Red packet
- NBUT 1651 Red packet
- 【NBUT】1651 - Red packet(二分)
- Red packet NBUT
- [1651] Red packet【二分】
- Noj 1651 Red packet
- Red packet
- Red packet
- Noj Red packet 1651 (二分)
- 【NBUTOJ】-1651-Red packet(二分)
- NBU:1651 Red packet(二分)【好】
- Noj Red packet -1651 (二分)
- NOJ 1651 Red packet(二分)
- 水题 nbut1651 Red packet
- Red packet 二分
- I - Red packet
- Red packet【二分】
- 学习C语言的第二天
- c#获取外网IP地址
- 常见的路由表建立算法
- HDU 3363 Ice-sugar Gourd
- 为什么要删除鲁迅?
- 【NBUT】[1651]Red packet
- ORACLE中Drop table cascade constraints之后果.
- UVA 10603 Fill【BFS】
- Android SyncAdapter同步实践
- 1. Two Sum
- 弹性ListView
- 使用Android Studio查找文件中含有中文字符串位置(正则表达式)
- 6. ZigZag Conversion
- [SCU4437] Carries [2015 Sichuan Province Contest Final B]