精华 发表在 手把手教你C++ 08-28 21:47:53
笨笨系列套题!~!
嘿嘿柯私人题目,请勿大量外传!!!每周1道!!!
1.笨笨的游戏(game.cpp)
题目背景:
聪明的笨笨是一条初中狗~他每天被各式各样的作业困扰着!
这天,语文老师给笨笨布置了一道抄写作业,这可是一个十分繁重的工作!
笨笨抄写久了会厌烦,于是他想到了一个好办法——将作业变成游戏!
题目要求:
笨笨想象有三个天才村,每个月都会进行国家级的科举考试!
一共进行n年,聪明的笨笨设定每年只有6个月
其中每个村最多只有一人选中,要么是状元,要么是第二名,要么就是没考好~(病句不要理它)
笨笨写完作业后想请你写一个程序,帮助他知道这个3个村的考试情况,究竟谁第一,谁第二,谁第三?
笨笨的排序规则是:第一名次数最多的村就是第一名,若第一名有次数相同的村,那么就比较第二名,看谁多
(良心数据保证没有出现全部相同的村!!!)
输入样例:
共6n+1行(共7n行净数据)
第一行:一个整数n,表示科举进行的年份。
//空行表示第i年和i+1年的隔断
每一行分别表示A村,B村,C村的本月考试情况
(“1”表示在此村中本月有一个第一名~)
(“2”表示在此村中本月有一个第二名~)
(“3”表示本月在这个村无人考试过关~)
输入样例:
3
1 0 2
1 0 0
1 0 0
0 1 1
1 0 1
1 0 1
1 0 2
0 1 1
1 2 2
2 1 2
0 1 2
0 2 1
1 0 0
2 0 1
2 1 0
2 0 0
2 1 1
1 0 1
输出样例:
A
C
B
共3行,第一名在第一行,第二名在第二行,第三名在第三行
数据解释:
A村共有9次第一名,所以排第一
B村有6个第一名
C村有8个第一名,比B村多,所以排第二,B村排第三
每行表示村子的名字
数据范围:
对于30%的数据,3<=n<=100
对于60%的数据,101<=n<=1000
对于100%的数据,1001<=n<=10000000
温馨提示:注意三个村名字是大写哦!还有,要考虑一下数据和时间复杂度!!
对于题目有不懂或者是写完想评测以及想了解语文老师真正作业的同学,请在讨论区发言!!
#include<iostream>
using namespace std;
struct vi{
int a=0,b=0;
};
bool cmp(vi a,vi b){
if(a.a!=b.a) return a.a>b.a;
return a.b>b.b;
}
vi A,B,C;
int main(){
ios::sync_with_stdio(false);
int a,b,c,n,i;
cin>>n;
for(i=0;i<6*n;i++){
cin>>a>>b>>c;
if(a==1) A.a++;
if(a==2) A.b++;
if(b==1) B.a++;
if(b==2) B.b++;
if(c==1) C.a++;
if(c==2) C.b++;
}
if(cmp(A,B)){
if(cmp(A,C)){
cout<<"A"<<endl;
if(cmp(B,C)){
cout<<"B"<<endl<<"C";
}
else cout<<"C"<<endl<<"B";
}
else{
cout<<"C"<<endl<<"A"<<endl<<"B";
}
}
else{
if(cmp(B,C)){
cout<<"B"<<endl;
if(cmp(A,C)) cout<<"A"<<endl<<"C";
else cout<<"C"<<endl<<"A";
}
else cout<<"C"<<endl<<"B"<<endl<<"A";
}
return 0;
}
//超级弱的代码
聪明的笨笨...emmm......
语文老师真正作业应该是每天做20个俯卧撑+100个高抬腿