UVALive 3664 Guess(贪心+精度)
2015-08-28 13:11
417 查看
题目链接:
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1665
解题思路:
题目大意:
有n (n<16345)个人,每个人有三个数(小于1000且最多两位小数点),表示答对对应题的得分。规定总分越高的人rank越高。总分相同,id小的rank高。现在知道rank,问
这个rank是否可能,如果可能,就输出rank最小的那个人的最大得分是多少,反之,则输出No solution。
算法思想:
3个数,最多8种情况。然后按照rank依次向下推,每次选择一个最大的能符合条件的分数,当作这个人的分数。如果能推下去,则ok,否则,不能。
注意:
精度很坑。需要先转换成整数才过了。。。
AC代码:
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1665
解题思路:
题目大意:
有n (n<16345)个人,每个人有三个数(小于1000且最多两位小数点),表示答对对应题的得分。规定总分越高的人rank越高。总分相同,id小的rank高。现在知道rank,问
这个rank是否可能,如果可能,就输出rank最小的那个人的最大得分是多少,反之,则输出No solution。
算法思想:
3个数,最多8种情况。然后按照rank依次向下推,每次选择一个最大的能符合条件的分数,当作这个人的分数。如果能推下去,则ok,否则,不能。
注意:
精度很坑。需要先转换成整数才过了。。。
AC代码:
#include <iostream> #include <cstdio> #include <algorithm> #define INF 0x3f3f3f3f using namespace std; struct node{ int a[3],num[8]; }no[17000]; int Rank[17000]; int main(){ int n,t = 1; while(scanf("%d",&n),n){ for(int i = 1; i <= n; i++){ double x; for(int j = 0; j < 3; j++){ scanf("%lf",&x); no[i].a[j] = (int)((x+1e-4)*100);//x+1e-4这步必须要加,不然会因为精度问题出错 } for(int j = 0; j < 8; j++){ int sum = 0; for(int k = 0; k < 3; k++){ if((j >> k) & 1) sum += no[i].a[k]; } no[i].num[j] = sum; } sort(no[i].num,no[i].num+8); } int tmpnum,tmpsum = INF; int flag; for(int i = 1; i <= n; i++) scanf("%d",&Rank[i]); for(int i = 1; i <= n; i++){ flag = 0; for(int j = 7; j >= 0; j--){ if(no[Rank[i]].num[j] < tmpsum || (no[Rank[i]].num[j] == tmpsum && Rank[i] > tmpnum)){ flag = 1; tmpnum = Rank[i]; tmpsum = no[Rank[i]].num[j]; } if(flag) break; } if(!flag) break; } if(!flag) printf("Case %d: No solution\n",t++); else printf("Case %d: %.2lf\n",t++,tmpsum/100.0); } return 0; }
相关文章推荐
- 野人学Android基础篇之初探UI控件第四课--CheckBox
- 通过java.util.Properties类来读取.properties文件中key对应的value
- Android Fragment——添加一个没有UI的Fragment
- IOS UICollectionViewLayout详解
- 使用UIImageView播放图片
- 程序猿会不会找UI设计师做女朋友?
- [LeetCode] 187 - Repeated DNA Sequences
- soapui + groovy 接口自动化测试 第二章
- JS动态修改页面EasyUI datebox不生效、EasyUI动态添加Class、EasyUI动态渲染解析解决方案
- fineui经验积累1之EF实体关系对应对应错误
- soapui + groovy 接口自动化测试 第一章
- android 事件处理机制之requestDisallowInterceptTouchEvent详解
- Finui报错积累1之实体关系对应错误
- 【Material Design视觉设计语言】UI组件设计(六):分隔线
- Autofac QuickStart
- Java finished with non-zero exit value 2 - Android Gradle
- 使用continue语句
- android 布局xml中 android:fitsSystemWindows="true"
- 【Material Design视觉设计语言】UI组件设计(五):提示框
- UITableView设置cell为不可选?