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

【题意】

在这里输入题意

【题解】

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. HDU-2045 不容易系列之(3)—— LELE的RPG难题 找规律&递推

    题目链接:https://cn.vjudge.net/problem/HDU-2045 找规律 代码 #include <cstdio> long long num[51][2]; int ...

  2. GIL解释锁及进程池和线程池

    官方介绍 ''' 定义: In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple nati ...

  3. Java web application——Listener

    应用程序事件提供ServletContext和HttpSession以及ServletRequest对象状态更改的通知,用户编写响应状态更改的事件监听器类,并配置和部署他们.Servlet容器会调用事 ...

  4. Systemd曝3漏洞,大部分Linux将受到攻击

    Linux 系统与服务管理工具 Systemd 被曝存在 3 大漏洞,影响几乎所有 Linux 发行版. Systemd 是 Linux 系统的基本构建块,它提供了对系统和服务的管理功能,以 PID ...

  5. HDU 4928 Series 2

    有了题解以后这题就成了一个模拟题.不过写了好久才把它写对…… Sad #include <iostream> #include <cstdio> #include <cs ...

  6. Java基础学习总结(17)——线程

    一.线程的基本概念 线程理解:线程是一个程序里面不同的执行路径 每一个分支都叫做一个线程,main()叫做主分支,也叫主线程. 程只是一个静态的概念,机器上的一个.class文件,机器上的一个.exe ...

  7. SQL2008所有数据导出导入两种方法

    方法一:生成脚本导出导入sql2008所有数据 第一步.右键要导出的数据库.任务--生成脚本 第二步,在设置脚本编写选项处,点击--高级(A),选择要编写脚本的数据的类型为:架构和数据 假设找不到 要 ...

  8. hdu 思维风暴

    点击打开链接 偶然在杭电上看到的题目,数学题.好像是一道六年级奥赛题目,反正我是没有想出来,也知道往那上面想.就是找不到规律啊.学习了网上的方法, 这道题须要求出来多添加的点,就是与之前每条边添加的点 ...

  9. 通过C语言程序改动控制台的背景和前景颜色

    本文主要解说怎样通过C语言来改动dos背景和前景颜色.我们首先来看一下dos的背景颜色的属性. 打开開始菜单,点击执行,弹出执行对话框.输入cmd,回车. (打开dos控制台) 在命令提示符界面下,输 ...

  10. PipeCAD之管道标准库PipeStd(2)

    PipeCAD之管道标准库PipeStd(2) eryar@163.com Key Words. PipeCAD, PipeStd, 管道设计软件,管件库 1. Introduction 管道标准部件 ...