【习题 8-8 UVA - 1612】Guess
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
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的更多相关文章
- 紫书 习题8-8 UVa 1612 (贪心+精度)
这道题我很快就写出来了, 但是一直WA, 然后发现是精度, 这坑了我一个小时-- (1)贪心.每次就尽量分数高, 可以保证最后分数最高 (2)神tm精度问题.记住判断大于小于和等于的时候要用EPS(1 ...
- Uva 1612 Guess
Thinking about it: 题目要求最后一名(也就是第N位)的分数要尽量的大,那么就一定要求第N-1名的分数也要尽量大.假如N-1可以取400和500,那么N-1应该取500,如果取400, ...
- UVa 1612 Guess (贪心+题意)
题意:有 n 位选手参加编程比赛.比赛有3道题目,每个选手的每道题目都有一个评测之前的预得分(这个分数和选手提交程序的时间相关,提交的越早,预得分越大). 接下来 是系统评测.如果某道题未通过测试,则 ...
- UVA - 1612 Guess (猜名次)(贪心)
题意:有n(n<=16384)位选手参加编程比赛.比赛有3道题目,每个选手的每道题目都有一个评测之前的预得分(这个分数和选手提交程序的时间相关,提交得越早,预得分越大).接下来是系统测试.如果某 ...
- 【uva 1612】Guess(算法效率,2种想法)
题意:已知 N 位选手的3题的预期得分,得分要不全拿,要不为0.且知道最后的实际名次,而且得分相同的选手,ID小的排在前面.问这样的名次可能吗.若可能,输出最后一名的最高可能得分.(N≤16384) ...
- ACM训练计划建议(写给本校acmer,欢迎围观和指正)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- ACM训练计划建议(转)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- 动态规划 Dynamic Programming 学习笔记
文章以 CC-BY-SA 方式共享,此说明高于本站内其他说明. 本文尚未完工,但内容足够丰富,故提前发布. 内容包含大量 \(\LaTeX\) 公式,渲染可能需要一些时间,请耐心等待渲染(约 5s). ...
- UVa第五章STL应用 习题((解题报告))具体!
例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...
随机推荐
- css columns 与overflow结合的问题
想实现上面这样分栏,并且溢出滚动的效果.可是自己下面的代码只能得到横向滚动条.觉得出现这个情况觉得还蛮有意思的,特地记录一下. <li v-for="(item,index) in s ...
- 测试cnblog文章内部JS
添加几个按钮 行内js 写法: <button onclick="javascript:alert('行内js')">行内js</button> 注意:al ...
- win2003系统同步Linux ntp server批处理
最后更新时间: 2018/12/15 一般windows配置时间服务器,只需要在windows系统右下角,点时间,里面配置好对应NTP服务器地址就行, 至多再修改一下注册表 HKEY_LOCAL_MA ...
- wall---向系统当前所有打开的终端上输出信息
wall命令用于向系统当前所有打开的终端上输出信息.通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送 ...
- IDEA使用GIT 上传到GitHub
1.下载Git https://www.git-scm.com/download/ 2.安装 3.IDEA配置Git(设置Git路径,点击Test),如下代表成功 4.创建仓库 5.add 6.pus ...
- springMVC的rest风格的url请求
rest是一个架构风格,用url来访问网络上的任何资源.rest的一种思想就是用http中的动作get,post,put,delete,来进行增删改查. 这里介绍的是springMVC的rest请求. ...
- C++对象模型——效率有了,弹性呢(第七章)
7.4 效率有了,弹性呢 传统的C++对象模型提供有效率的运行期支持.这份效率,再加上与C之间的兼容性,造成了C++的广泛被接受度.然而,在某些领域方面,像是动态共享函数库(dynamicall ...
- Dubbo源代码分析(三):Dubbo之服务端(Service)
如上图所看到的的Dubbo的暴露服务的过程,不难看出它也和消费者端非常像,也须要一个像reference的对象来维护service关联的全部对象及其属性.这里的reference就是provider. ...
- orm 通用方法——QueryModelCount条件查询记录数
定义代码: /** * 描述:根据条件查询对象数 * 作者:Tianqi * 日期:2014-09-17 * param:model 对象实例 * param:cond 查询条件 * return:i ...
- Debian9 ifconfig命令找不到解决办法
Debian9 ifconfig命令找不到解决办法 ifconfig.route.arp和netstat等命令行工具(它们统称为net-tools),管理和排查各种网络配置.这类工具原先起源于BSD ...