LuoguP7080 [NWRRC2013]Ballot Analyzing Device 题解
Content
有 \(n\) 名选手参加一个比赛,有 \(m\) 个人为他们投票。第 \(i\) 个人的投票情况用一个长度为 \(n\),并且仅包含 . 和 X 两个字符的字符串,其中,如果第 \(j\) 位是 X,则第 \(i\) 个人将票投给了第 \(j\) 名选手,否则没有。规定每个投票者能且仅能将票投给一个人,否则都算无效票(即投的票数 \(\geqslant 2\) 或者 \(=0\))。请将每名选手按照他们所得到的票的比例排序(如果有两名选手得到的票的比例相同,在投票次序中先出现的那名选手排在前面),并输出他们的名字和得票比例,最后还要输出无效票所占的比例。
比例输出为百分数,\(\%\) 前面的部分四舍五入到 \(2\) 位小数。
数据范围:\(2\leqslant n\leqslant 10,1\leqslant m\leqslant 1000\)。
Solution
直接按照题意模拟就好,不过要注意四舍五入的问题。printf 的自动四舍五入有时候会出现 bug 导致 WA on test 19,所以需要自己手写一个函数来处理四舍五入。具体实现可以参考这里的代码。
Code
int n, m, in;
string tp;
struct user {
string name;
int val, id;
bool operator < (const user& cz) const {return val > cz.val || (val == cz.val && id < cz.id);}
}a[17];
inline void judge(string s) {
int len = s.size(), xnum = 0, xpl;
F(i, 0, len - 1) if(s[i] == 'X') xnum++, xpl = i + 1;
if(xnum != 1) {in++; return;}
a[xpl].val++;
}
inline double getans(int x) {
double ans = x * 1.0 / m, aa = ans * 10000;
return floor(aa + 0.5) / 100.0;
}
int main() {
n = Rint, m = Rint;
F(i, 1, n) {
cin >> a[i].name;
a[i].id = i;
}
F(i, 1, m) {
cin >> tp;
judge(tp);
}
sort(a + 1, a + n + 1);
F(i, 1, n) {
cout << a[i].name << ' ';
double ans = getans(a[i].val);
printf("%.2lf%%\n", ans);
}
printf("Invalid %.2lf%%\n", getans(in));
return 0;
}
LuoguP7080 [NWRRC2013]Ballot Analyzing Device 题解的更多相关文章
- Codeforces Gym 100269B Ballot Analyzing Device 模拟题
Ballot Analyzing Device 题目连接: http://codeforces.com/gym/100269/attachments Description Election comm ...
- HNU 12845 Ballot Analyzing Device
题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12845&courseid=270 解题报告:有m个认给 ...
- Codeforces Gym 100269A Arrangement of Contest 水题
Problem A. Arrangement of Contest 题目连接: http://codeforces.com/gym/100269/attachments Description Lit ...
- 2015 Multi-University Training Contest 1 题解&&总结
---------- HDU 5288 OO’s Sequence 题意 给定一个数列(长度<$10^5$),求有多少区间[l,r],且区间内有多少数,满足区间内其它数不是他的约数. 数的范围$ ...
- Analyzing UI Performance with Systrace 使用systrace工具分析ui性能
While developing your application, you should check that user interactions are buttery smooth, runni ...
- Xcode 9 Analyzing Crash Reports
Analyzing Crash Reports After you distribute your app for testing by using TestFlight or after you m ...
- HDU 5294 Tricks Device 网络流 最短路
Tricks Device 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5294 Description Innocent Wu follows D ...
- Kuangbin 带你飞专题十一 网络流题解 及模版 及上下界网络流等问题
首先是几份模版 最大流:虽然EK很慢但是优势就是短.求最小割的时候可以根据增广时的a数组来判断哪些边是割边.然而SAP的最大流版我只会套版,并不知道该如何找到这个割边.在尝试的时候发现了一些问题.所以 ...
- Android 性能优化(25)*性能工具之「Systrace」Analyzing UI Performance with Systrace:用Systrace得到ui性能报告
Analyzing UI Performance with Systrace In this document Overview 简介 Generating a Trace 生成Systrace文件 ...
随机推荐
- 【JAVA】笔记(12)---集合(1)-概述篇
楔子: 1.集合相当于一个容器,数组虽然也相当于一个容器,但是集合的特性更符合我们日常开发的需求,所以集合的使用更加频繁: 2.集合特性: 1)集合的长度可变,数组一经初始化,长度固定: 2)集合可以 ...
- 【程序员翻身计划】Java高性能编程第一章-Java多线程概述
目标 重点: 线程安全的概念 线程通信的方式与应用 reactor线程模型 线程数量的优化 jdk常用命令 Netty框架的作用 难点 java运行的原理 同步关键字的原理 AQS的抽象 JUC的源码 ...
- 【机器学*与R语言】2-懒惰学*K*邻(kNN)
目录 1.理解使用KNN进行分类 KNN特点 KNN步骤 1)计算距离 2)选择合适的K 3)数据准备 2.用KNN诊断乳腺癌 1)收集数据 2)探索和准备数据 3)训练模型 4)评估模型的性能 5) ...
- R shinydashboard——3.外观
目录 1.皮肤 2.注销面板 3.CSS 4. 标题延长 5.侧边栏宽度 6.图标 7.状态和颜色 1.皮肤 shinydashboard有很多颜色主题和外观的设置.默认为蓝色,可指定黑丝.紫色.绿色 ...
- MicrosoftPowerBI—2019-nCov 新型冠状病毒肺炎多功能动态看板
https://app.powerbi.cn/view?r=eyJrIjoiNmE0ZDU0MGItOTFjYy00MWYyLWFmZjMtMThkM2EwMzg5YjgyIiwidCI6ImQxNj ...
- a.out的由来
用过linux的都知道,在linux下编译链接程序,如果不加-o参数,生成的binary代码的名字都是默认的a.out.一不小心,a.out还会覆盖上次其他code生成的binary代码. a.out ...
- mysql—从字符串中提取数字(类型1)
select reason,CHAR_LENGTH(reason),mid(reason,5,CHAR_LENGTH(reason)-5)+0 from `table` 解释: CHAR_LENGTH ...
- 48-Merge Sorted Array
$88. Merge Sorted Array My Submissions QuestionEditorial Solution Total Accepted: 98885 Total Submis ...
- ubuntu终端颜色快速配置
ubuntu终端颜色快速配置 根据以下step步骤设置即可 step1:备份:cp ~/.bashrc ~/.bashrc.backup step2:打开文件:vim ~/.bashrc step3: ...
- Nginx编译参数详细介绍
/configure --help --help 显示本提示信息 --prefix=PATH 设定安装目录 --sbin-path=PATH 设定程序文件目录 --conf-path=PATH 设定配 ...