oj-选举
来源:互联网 发布:中国作家 知乎 编辑:程序博客网 时间:2024/04/30 03:13
题目描述
某地进行选举,一共要选出 14 位议员。有若干个党派,一张选票只能投给一个党派。现在有
X 张选票,已知每个党派获得的选票。有一些党派得到的票数太少,以至于可以忽略不计。现
在的选举规则是这样的:首先只考虑获得不少于所有选票数的 5%的党派,将这些党派得到的
选票数除以 1~14 的每个数,这样每个党派就将得到 14 个有理数。第一个议员来自于最大的那
个数代表的党派,第二个议员来自于第二大的数代表的党派,这样直到 14 个议员都产生。注意:
保证一定能够选出 14 个议员,也就是说没有两个有理数是相等的。
现在请输出那些产生议员的党派和产生的数量。
输入
第一行包含一个正整数 X(1<=X<=2500000),表示所有的选票。
接下来一个整数 N(0<=N<=10),表示我们考虑的党派数量。接下来 N 行,每行一个字符和一
个整数 G ,以空格隔开。字符代表党派名称,整数 G 代表该党派获得的选票数量,
0<=G<=250000。
注意,因为有些党派忽略不计,所以列出的党派获得选票数之和不一定等于选票的总数。
输出
有多少个党派获得不少于 5%的选票,输出就有多少行。
输出党派的编号和它产生的议员的数量,用空格隔开。
样例输入
235217
3
A 107382
C 18059
B 43265
样例输出
A 9
B 4
C 1
提示
输出满足题目要求的党派编号按字典顺序输出
这道题没别的难点,就是考细节~~
首先是要>=5%
然后按字典序输出~
这些全都不是问题!!
然后我就草率地提交了= =
#include<cstdio>#include<algorithm>using namespace std;int x,n,e=-13;char c[5];struct nde{double num;char gp;}a[300];struct as{int per;char gp;}ans[30];bool cmp1(nde p,nde q){if(p.num!=q.num) return p.num>q.num;return p.gp<q.gp;}bool cmp2(as p,as q){if(p.per!=q.per) return p.per>q.per;return p.gp<q.gp;}int main(){int i,j,k;scanf("%d%d",&x,&n);for(i=1;i<=n;i++){scanf("%s %d",c,&k);if((x+0.0)/(k+0.0)<=20){e+=14;a[e].gp=c[0];a[e].num=k+0.0;for(j=1;j<14;j++){a[e+j].gp=a[e].gp;a[e+j].num=a[e].num/(j+1.0);}}}sort(a+1,a+e+15,cmp1);for(i=1;i<=14;i++){ans[a[i].gp-'A'+1].per++;ans[a[i].gp-'A'+1].gp=a[i].gp;}//sort(ans+1,ans+28,cmp2);//for(i=1;ans[i].per;i++)for(i=1;i<=26;i++)if(ans[i].per)printf("%c %d\n",ans[i].gp,ans[i].per);}
于是很光荣地...W..A....了..........
经同学指点,我发现了代码中很致命的错....
题目要求,就算一个党派没人也要输出啊!!
然而我并没有...
后来经过一点小~改~动~终于 A C 了 !!!
#include<cstdio>#include<algorithm>using namespace std;int x,n,e=-13;char c[5];struct nde{double num;char gp;}a[300];struct as{int per;char gp;}ans[30];bool cmp1(nde p,nde q){if(p.num!=q.num) return p.num>q.num;return p.gp<q.gp;}/*bool cmp2(as p,as q){if(p.per!=q.per) return p.per>q.per;return p.gp<q.gp;}*/int main(){int i,j,k;scanf("%d%d",&x,&n);for(i=1;i<=n;i++){scanf("%s %d",c,&k);if((x+0.0)/(k+0.0)<=20+0.000005){e+=14;a[e].gp=c[0];a[e].num=k+0.0;for(j=1;j<14;j++){a[e+j].gp=a[e].gp;a[e+j].num=a[e].num/(j+1.0);}ans[a[e].gp-'A'+1].per=-1;ans[a[e].gp-'A'+1].gp=a[e].gp;}}sort(a+1,a+e+15,cmp1);for(i=1;i<=14;i++){if(ans[a[i].gp-'A'+1].per==-1) ans[a[i].gp-'A'+1].per=0;ans[a[i].gp-'A'+1].per++;ans[a[i].gp-'A'+1].gp=a[i].gp;}//sort(ans+1,ans+28,cmp2);//for(i=1;ans[i].per;i++)for(i=1;i<=26;i++)if(ans[i].per){if(ans[i].per==-1) ans[i].per=0;printf("%c %d\n",ans[i].gp,ans[i].per);}}
啊简直了复赛迫在眉睫居然犯这种不审题的错误..
没事总比freopen忘记写或忘删注释或者文件名打错好.....
啊啊啊啊啊good luck to me!!
然后继续复习~
代码中-1是为了标记这个党派至少被考虑过~
到时候再把-1单独考虑~~
别问我注释的是什么,只是当初搞错了输出顺序....
- oj-选举
- 选举
- 选举
- 选举
- 提前选举
- 选举地图
- 选举算法
- 选举计数
- 总统选举
- Master选举
- 投票选举
- 选举问题
- 选举游戏
- 选举游戏
- ZooKeeper_14_Leader选举
- Java社区选举结果
- DR/BDR选举过程
- “想尽办法”赢得选举
- Android中的Selector的用法
- 拉电阻是用于灌电流的时候,下拉电阻是用于拉电流
- 无限级分类之迭代查找家谱树
- hrbust 1356 Leyni,罗莉和队列【思维+逆向思维】好题~
- nginx,apache开启文件目录浏览功能
- oj-选举
- 【29.89%】【codeforces 734D】Anton and Chess
- Java Web开发
- Tomcat项目部署成功,运行时404报错排错
- 面试算法题:求所有的素数也就是质数
- POJ - 3101 Astronomy(有理数的公倍数)
- yeoman---mac安装
- nginx 403 forbidden 二种原因
- 【URAL 1900】Brainwashing Device(预处理区间和+DP)