HNCU1097:赌徒(二分)
来源:互联网 发布:刷金币软件 编辑:程序博客网 时间:2024/04/30 20:55
http://hncu.acmclub.com/index.php?app=problem_title&id=111&problem_id=1097
题目描述
有n个赌徒打算赌一局。规则是:
每人下一个赌注,赌注为非负整数,且任意两个赌注都不相同。胜者为赌注恰好是其余任意三个人的赌注之和的那个人。如果有多个胜者,我们取赌注最大的那个为最终胜者。
例如,A,B,C,D,E分别下赌注为2、3、5、7、12,最终胜者是E,因为12=2+3+7。
输入格式
输入包含多组测试数据。每组首先输入一个整数n(1<=n<=1000),表示赌徒的个数。
接下来n行每行输入一个非负整数b(0<=b<32768),表示每个赌徒下的赌注。
当n=0时,输入结束。
输出
对于每组输入,输出最终胜者的赌注,如果没有胜者,则输出no solution。
样例输入
5
2
3
5
7
12
5
2
16
64
256
1024
0
样例输出
12
no solution
简单二分
#include <stdio.h>#include <algorithm>using namespace std;int bin(int *a,int l,int h,int k){ int m; while(l<h) { m = (l+h)/2; if(k == a[m]) return m; else if(k<a[m]) h = m; else l = m+1; } return -1;}int main(){ int n,i,j,k,tem,s,a[1005],flag,ans; while(~scanf("%d",&n),n) { flag = 0; for(i = 0; i<n; i++) scanf("%d",&a[i]); sort(a,a+n); for(i = n-1; i>=0; i--) { for(j = 0; j<i; j++) { for(k = j+1; k<n; k++) { tem = a[i]-a[k]-a[j]; s = bin(a,k+1,n,tem); if(s!=-1 && s!=i) { ans = i; flag = 1; break; } } if(flag) break; } if(flag) break; } if(flag) printf("%d\n",a[ans]); else printf("no solution\n"); } return 0;}
- HNCU1097:赌徒(二分)
- 赌徒
- 赌徒
- 赌徒
- TK题库 1097 赌徒(暴力+二分)
- 赌徒心理
- 小赌徒
- 赌徒心里
- 赌徒的日记
- 赌徒策略与机率
- 赌徒破产理论
- “魔鬼交易员”不过是赌徒
- 有关赌徒必胜方法
- 赌徒的梦想
- 赌徒心态与玩家忠诚度
- 社交游戏玩家大多是老虎机赌徒
- 幻想一夜暴富 “彩民”变“赌徒”
- [编程题]Be Unique (赌徒下注问题)
- NS2中有线网络trace文件分析脚本(awk)
- HTML中使用JS代码获取浏览器URL中的参数的方法
- 第七章 例7.5
- "黑马程序员"算法大全
- storm安装配置
- HNCU1097:赌徒(二分)
- 后台拼 checkbox 全选 取消全选
- 3、安装Android SDK installer_r20.0.3-windows.exe出现Failed to find Java version for 'C:\Windows\system32\
- Android图片 将Drawable转化为Bitmap
- 正则表达式30分钟入门教程
- 对文件中的行,单词和字符进行迭代
- ios学习笔记---用View动画仿UC浏览器菜单栏弹出效果
- linux 下动态链接库的制作与使用
- UVa 573 - The Snail