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

【题意】

在这里输入题意

【题解】

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. 紫书 例题 10-22 UVa 1640(数位统计)

    这道题的题解有几个亮点 一个是每次只统计一个数字来简化思维 一个是统计当前位数的时候分三个部分来更新答案 具体看代码,有注释 #include<cstdio> #include<cs ...

  2. ARM官方《CMSIS-RTOS教程》之线程Threads

    创建线程Creating Threads 一旦RTOS开始运行,就会有很多系统调用来管理和控制活跃的线程.默认情况下,main()函数自动被创建为第一个可运行的线程.在第一个例子里我们使用main() ...

  3. Java基础学习总结(22)——异常处理

    一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要. package cn.javastudy.summary; public ...

  4. Linux Virtual Server技术

    1 LVS简单介绍 Linux VirtualServer是一个高扩展和高可用性server,在一个真正server的集群中构建而成,包括Linux操作系统中的负载均衡. server的架构对于终端用 ...

  5. 前端编程提高之旅(十二)----position置入值应用

    这次内推项目用到的遮罩及其页面下方button都涉及一个概念position置入值得概念.效果图例如以下: 一个元素position属性不是默认值static.那么该元素被称为定位元素. 定位的元素生 ...

  6. Swift的闭包,枚举,类和结构体

    闭包(Closures) 使用过其它语言的应该对代码块并不陌生,Swift中的闭包与C,OC中的Block相似. 表示自包括的函数代码块.能够在代码中传递和使用. 而且能够捕获和存储上下文的变量以及常 ...

  7. php数组增加元素

    php数组增加元素 截图 代码 <HTML> <HEAD> <TITLE>给数组增加元素</TITLE> </HEAD> <? $Ci ...

  8. JUnit中assertEquals和assertSame方法的不同

    1)提供的接口数量不完全相同. assertEquals支持boolean,long,int等等java primitiveType变量.assertSame只支持Object. 2)比较的逻辑不同, ...

  9. 关于vue中的语法糖v-model

    开发src-在线系统的过程中,封装了很多组件,如Dialog prompt等,在开源项目的组件中这些组件使用v-model来控制显示,我来总结一下关于自己学习到的v-model知识 1. 使用prop ...

  10. JS取出两个数组的不同或相同元素

    JS合并两个数组的方法 我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况.比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合 ...