【PAT甲级真题】- PAT Judge (25)
题目来源PAT Judge (25)题目描述点击链接自行查看注意点排序先按总分再按解决题目数再按id思路简介思路很简单直接模拟即可但是坑倒是很多主要是要区分编译没过和过了但是得 0 分方案初始化时分数为-2编译没过存为-1后面输出时-2-,-10只要有一个题过了就把总分从 -2 设置为 0总分小于 0 则属于没过任何一个题遇到的问题没区分编译没过和得分为 0 的情况编译没过记为-1后参加了后续的运算导致总分变高vectorstruct要求数据结构内有默认构造函数不然会报错用coutsetfill(0)setw(5)补 0 到 5 位数PAT的模拟题是真的很麻烦。。代码/** * https://www.nowcoder.com/pat/5/problem/4122 * 模拟 */#includebits/stdc.husingnamespacestd;structScore{intsum,id,perfect_count;Score():id(0),sum(0),perfect_count(0){}Score(intid,intsum,intcount):id(id),sum(sum),perfect_count(count){}};boolcmp(Score a,Score b){if(a.sumb.sum){if(a.perfect_countb.perfect_count){returna.idb.id;}returna.perfect_countb.perfect_count;}returna.sumb.sum;}voidsolve(){intn,m,k;cinnmk;vectorints(m);for(inti0;im;i)cins[i];vectorvectorintv(n,vectorint(m2,-2));for(inti0;ik;i){intid,ni,ns;cinidnins;id--,ni--;if(v[id][ni]ns){//分数大才更新if(ns-1){//从没过编译,只记录题目的分数v[id][ni]-1;//等于-1为了能输入0continue;}if(v[id][m]-2)v[id][m]0;if(v[id][ni]0)v[id][m]-v[id][ni];//曾经交过v[id][m]ns;v[id][ni]ns;if(nss[ni]){if(v[id][m1]-1)v[id][m1]0;v[id][m1];}}}vectorScoreres(n);for(inti0;in;i){res[i]Score(i,v[i][m],v[i][m1]);}sort(res.begin(),res.end(),cmp);intrank1,sumres[0].sum;for(inti0;in;i){if(res[i].sum0)break;//至少得1分if(res[i].sum!sum){ranki1,sumres[i].sum;}coutrank ;//id为了匹配索引减了1这里加回来coutsetfill(0)setw(5)res[i].id1 sum ;for(intj0;jm;j){if(v[res[i].id][j]-2)cout- ;elsecout(v[res[i].id][j]0?0:v[res[i].id][j]) ;}cout\n;}}intmain(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);//fstream in(in.txt,ios::in);cin.rdbuf(in.rdbuf());intt1;//cint;while(t--){solve();}return0;}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2454159.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!