【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

double千万不要用==判断相等。。。
而且两个保留2位有效数字的数字x,y
判断它们相等应该这样。
int temp1 = round(x*100.0),temp2 = round(y*100.0);
temp1==temp2的话,才成立
不能直接*100
会出现精度误差。

然后就是把每个人的所有可能成绩都算出来(8种);

然后从大到小排序。

一开始每个人都得最高分。

set中以分数和id为关键字进行排序。

然后对于读入的第i个分数a[i]。

如果set的头元素不为a[i];

那么就让头元素的得分更低一点;

即从第i高的得分变成第i+1高的得分。

直到不能更低为止。(无解

【代码】

/*
1.Shoud it use long long ?
2.Have you ever test several sample(at least therr) yourself?
3.Can you promise that the solution is right? At least,the main ideal
4.use the puts("") or putchar() or printf and such things?
5.init the used array or any value?
6.use error MAX_VALUE?
7.use scanf instead of cin/cout?
8.whatch out the detail input require
*/
/*
一定在这里写完思路再敲代码!!!
*/
#include <bits/stdc++.h>
#define index fuck_index
using namespace std; const int N = 2e4; int n,index[N];
vector<double> v[N];
double vv[3]; struct abc{
int ind; abc(int x):ind(x){} friend bool operator < (abc a,abc b){
int temp1 = round(v[a.ind][index[a.ind]]*100.0);
int temp2 = round(v[b.ind][index[b.ind]]*100.0);
if (temp1!=temp2)
return temp1>temp2;
else
return a.ind<b.ind;
}
}; set <abc> myset; bool ok(){
int pre;
for (int i = 1;i <= n;i++){
int x;cin >> x;
if (i==n){
cout <<fixed<<setprecision(2)<<v[x][index[x]] << endl;
return true;
}
while ( (*myset.begin()).ind!=x){ int temp = (*myset.begin()).ind;
myset.erase(myset.begin());
if (index[temp]==((int)v[temp].size()-1)) {
for (int j = i+1;j <= n;j++) cin >> x;
return false;
}
index[temp]++;
myset.insert(abc(temp));
} myset.erase(myset.begin());
} return true;
} int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
int kase = 0;
while (cin>>n && n){
myset.clear();
for (int i = 1;i <= n;i++){
v[i].clear();
for (int j = 0;j < 3;j++) cin >> vv[j];
for (int j = 0;j < 3;j++) v[i].push_back(vv[j]);
for (int j = 0;j < 3;j++)
for (int k = j+1;k < 3;k++)
v[i].push_back(vv[j]+vv[k]);
v[i].push_back(vv[0]+vv[1]+vv[2]);
v[i].push_back(0);
sort(v[i].begin(),v[i].end());
reverse(v[i].begin(),v[i].end());
index[i] = 0;
} for (int i = 1;i <= n;i++) myset.insert(abc(i));
cout<<"Case "<<++kase<<": ";
if (!ok()) cout <<"No solution"<<endl; } return 0;
}

【习题 8-8 UVA - 1612】Guess的更多相关文章

  1. 紫书 习题8-8 UVa 1612 (贪心+精度)

    这道题我很快就写出来了, 但是一直WA, 然后发现是精度, 这坑了我一个小时-- (1)贪心.每次就尽量分数高, 可以保证最后分数最高 (2)神tm精度问题.记住判断大于小于和等于的时候要用EPS(1 ...

  2. Uva 1612 Guess

    Thinking about it: 题目要求最后一名(也就是第N位)的分数要尽量的大,那么就一定要求第N-1名的分数也要尽量大.假如N-1可以取400和500,那么N-1应该取500,如果取400, ...

  3. UVa 1612 Guess (贪心+题意)

    题意:有 n 位选手参加编程比赛.比赛有3道题目,每个选手的每道题目都有一个评测之前的预得分(这个分数和选手提交程序的时间相关,提交的越早,预得分越大). 接下来 是系统评测.如果某道题未通过测试,则 ...

  4. UVA - 1612 Guess (猜名次)(贪心)

    题意:有n(n<=16384)位选手参加编程比赛.比赛有3道题目,每个选手的每道题目都有一个评测之前的预得分(这个分数和选手提交程序的时间相关,提交得越早,预得分越大).接下来是系统测试.如果某 ...

  5. 【uva 1612】Guess(算法效率,2种想法)

    题意:已知 N 位选手的3题的预期得分,得分要不全拿,要不为0.且知道最后的实际名次,而且得分相同的选手,ID小的排在前面.问这样的名次可能吗.若可能,输出最后一名的最高可能得分.(N≤16384) ...

  6. ACM训练计划建议(写给本校acmer,欢迎围观和指正)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  7. ACM训练计划建议(转)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  8. 动态规划 Dynamic Programming 学习笔记

    文章以 CC-BY-SA 方式共享,此说明高于本站内其他说明. 本文尚未完工,但内容足够丰富,故提前发布. 内容包含大量 \(\LaTeX\) 公式,渲染可能需要一些时间,请耐心等待渲染(约 5s). ...

  9. UVa第五章STL应用 习题((解题报告))具体!

    例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...

随机推荐

  1. php数据类型及运算

    数据类型: 标量类型: int(intege), float, string, bool 复合类型: array, object 特殊类型: null, resouce进制转换十进制转二进制decb ...

  2. NodeJS学习笔记 (30)定时器-timers

    https://github.com/chyingp/nodejs-learning-guide

  3. js实现简易打点计时器

    很简单的实现一个打点计时器,规定从start至end,每次加1,每次打印间隔100ms,并且返回取消方法. 代码如下: //打点计时器,每间隔100毫秒+1 function count(start, ...

  4. caioj 1071 动态规划入门(二维一边推4:相似基因) (最长公共子序列拓展)

    复制上一题总结 caioj 1069到1071 都是最长公共字序列的拓展,我总结出了一个模型,屡试不爽    (1) 字符串下标从1开始,因为0用来表示字符为空的情况,而不是第一个字符     (2) ...

  5. JDK工具(零)--简要介绍JDK1.6自带的42个工具

    Java的开发人员肯定都知道JDK的bin目录中有"java.exe"和"javac.exe"这两个命令行工具, 但并非所有的Java程序员都了解过JDK的bi ...

  6. java回调方法、钩子方法以及模板方法模式

    在面向对象的语言中,回调则是通过接口或抽象类来实现的,我们把实现这种接口的类称为回调类,回调类的对象称为回调对象,其处理事件的方法叫做回调方法.(摘自百度百科) 那么通过上面那句话将百度百科中的&qu ...

  7. 对照 Android 的 Intent 与 iOS StoryBoard 的 Segue - Intent 假设也能添加个prepareForSegue回调就好了

    对照 Android 的 Intent 与 iOS StoryBoard 的 Segue - Intent 假设也能添加个prepareForSegue回调就好了 太阳火神的漂亮人生 (http:// ...

  8. zico源代码分析(一) 数据接收和存储部分

    zorka和zico的代码地址:https://github.com/jitlogic 由于zico是zorka的collecter端,所以在介绍zico之前首先说一下zorka和数据结构化存储和传输 ...

  9. 【LeetCode-面试算法经典-Java实现】【063-Unique Paths II(唯一路径问题II)】

    [063-Unique Paths II(唯一路径问题II)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Follow up for "Unique Pa ...

  10. IDEA中的maven web 项目中如何设置自己的本地仓库

    我们在创建maven项目的时候如何不使用系统指定的本地仓库,而使用自己设置的仓库呢,这里小女子就来进行讲解一下吧! 讲解一:你要想找到settings.xml你就要自己我去官网上去下载apache-m ...