和cf的打分有点像啊

因为一共只有三道题,所以每个人的得分最多有8种可能性。把这8种可能性都算出来,存在数组里,排好序备用
排名就是一个天然的链表,给出了扫描的顺序
扫描时,维护两个变量:前一个player的最大得分 recd 和他的ID recdID
扫描到每个player时,从大到小遍历他的8种得分,如果有等于recd的得分,且这个player的ID大于recdID,则只需更新recdID。否则遇到第一个小于recd的得分,就更新recd和recdID。
如果在遍历完8种得分后,还没有满足上面两种情况的,则说明无解

不超过1000,两位小数,可以先*100.0,最后输出/100.0就可以减少误差

tmp_i[j] = (int)(round(tmp_f[j] * 100.0)); //注意转换

位运算: if(j & (1 << k)) 取j从右向左第k+1位

for(int j = 0; j < 8; j++) { //对应3个值取不取的8种情况(111,110,101...)
P[i].score[j] = 0;
for(int k = 0; k < 3; k++)
if(j & (1 << k))
P[i].score[j] += tmp_i[k];
}
sort(P[i].score, P[i].score + 8);

#include<cstdio>
#include<algorithm>
#include<cmath>
const int maxn = ; using namespace std; struct player{
int score[];
}P[maxn]; int nn, ID[maxn];
void read(int n){
double tmp_f[];
int tmp_i[];
for(int i = ; i <= n; i++) {
scanf("%lf%lf%lf", &tmp_f[], &tmp_f[], &tmp_f[]);
for(int j = ; j < ; j++)
tmp_i[j] = (int)(round(tmp_f[j] * 100.0)); for(int j = ; j < ; j++) {
P[i].score[j] = ;
for(int k = ; k < ; k++)
if(j & ( << k))
P[i].score[j] += tmp_i[k];
}
sort(P[i].score, P[i].score + );
}
} int main() {
int kase = ;
while(scanf("%d", &nn) == && nn) {
read(nn);
for(int i = ; i <= nn; i++)
scanf("%d", &ID[i]); int MAX = P[ID[]].score[]; //贪心策略
int pre_ID = ID[], i;
for(i = ; i <= nn; i++) {
int cur_ID = ID[i];
bool flag = false;
for(int j = ; j >= ; j--) {
if(P[cur_ID].score[j] == MAX && cur_ID > pre_ID) {
flag = true;
pre_ID = cur_ID;
break;
}
if(P[cur_ID].score[j] < MAX) {
flag = true;
pre_ID = cur_ID;
MAX = P[cur_ID].score[j];
break;
}
}
if(!flag)
break;
}
printf("Case %d: ", kase++);
if(i != nn + )
printf("No solution\n");
else
printf("%.2lf\n", MAX / 100.0);
}
return ;
}

uva1612 Guess的更多相关文章

  1. UVA-1612 Guess (贪心)

    题目大意:考试共有三道题,n个人,每个人对每道题的可能得分已知,现在已知考后排名情况,问排名合不合理. 题目分析:贪心.贪心策略:每处理一个排名,都让他的得分尽量高. # include<ios ...

随机推荐

  1. 【Cocos2d-HTML5 开发之一】新建HTML5项目及简单阐述与cocos2d/x引擎关系

    真的是有一段时间没写博了,这段时间呢,发生的事情真的挺多,另外自己呢也闲来做了一些自己的喜欢的东西,主要做的还是基于Mac系统的Cocoa框架的各种编辑器吧.(对了,今年初也出了自己第二本书<i ...

  2. python-day-10-python mysql and ORM

    本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令事务  创建数据库 外键 增删改查表 权限 索引 python 操作mysql  ORM sq ...

  3. cardboard sdk for unity 系统分析 - 属性行为分析CardBoard类

    一.CardBoard类是个单例类,全局只有一个CardBoard对像且在需要时才生成: CardBoard中主要使用了BaseVRDevice device这个对像,而这个对像也是单例类BaseVR ...

  4. Codeforces702A - Maximum Increase【尺取】

    题意: 求一个连续的最长子序列长度: 思路: 没看仔细还wa1了-以为LIS- 然后写了尺取吧...= =太不仔细了.不过收获是LIS特么写挫了然后看了学长的blog<-点我- 题目的挫code ...

  5. hdoj1257【疑问】(贪心)

    这完全可以达到3*1e4个啊...如果这样子,这复杂度就炸了吧?... #include<iostream> #include<cstdio> #include<math ...

  6. R Factor 如何转为c()

    从 R语言本身来说 > f [1] 130015.IB 130013.IB Levels: 130013.IB 130015.IB > data = c(f) > data [1] ...

  7. STL<queue>的使用

    队列是一种基本的线性数据结构.它满足先进先出(First In ,First Out)的原则. 我们可以应用这种数据结构实现很多复杂的问题.但每次要手写队列的相关函数并不省事,我们便可以应用STL中的 ...

  8. Seek the Name, Seek the Fame POJ - 2752

    Seek the Name, Seek the Fame POJ - 2752 http://972169909-qq-com.iteye.com/blog/1071548 (kmp的next的简单应 ...

  9. (好题)树状数组+离散化+DFS序+离线/莫队 HDOJ 4358 Boring counting

    题目传送门 题意:给你一棵树,树上的每个节点都有树值,给m个查询,问以每个点u为根的子树下有多少种权值恰好出现k次. 分析:首先要对权值离散化,然后要将树形转换为线形,配上图:.然后按照右端点从小到大 ...

  10. 题解报告:hdu 4607 Park Visit(最长链)

    Problem Description Claire and her little friend, ykwd, are travelling in Shevchenko's Park! The par ...