[COCI2010-2011#1] PROFESOR
题目描述
在一个较长的教室中,
n
n
n 张桌子排成一排,每张桌子坐着
2
2
2 个学生。
学生之所以胡思乱想是因为他们即将参加美术课,而他们的老师正计划对他们进行检查。
每个学生都学习过美术,但是只学习了一定水平。 这位教授可以通过脸上的表情告诉他们他们学了多少。 这位教授是一名艺术家,每个年级都使用不同的彩色铅笔。不幸的是,今天他只带了 1 1 1 支铅笔。
为了使考试看起来公平,他想选择 2 2 2 张桌子,并从他所选择的 2 2 2 张桌子(包括所选的桌子)之间的每张桌子中向 1 1 1 位学生提问。 重要的是所有受试学生都应获得相同的成绩,因此他可以用唯一的铅笔将其写下来。
教授想知道他可以通过这种方式检查的最大学生人数,以及学生将获得的分数。
输入格式
输入数据共 n + 1 n+1 n+1 行。
第一行包含一个整数 n n n,含义如题所示。
接下来的 n n n 行,每行包含两个整数: a i a_i ai 和 b i b_i bi,分别表示坐在课桌 i i i 上的学生的成绩。
输出格式
输出数据共一行。
第一行包含 2 2 2 个数字,并用一个空格隔开,分别表示教授可以考核的最大学生人数以及这些学生将获得的分数。
如果有多种解决方案,请输出分数最小的解决方案。
样例 #1
样例输入 #1
1
1 5
样例输出 #1
1 1
样例 #2
样例输入 #2
3
3 5
4 5
1 3
样例输出 #2
2 5
样例 #3
样例输入 #3
4
2 1
3 2
5 3
2 5
样例输出 #3
2 2
提示
数据范围
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 5 1 \le n \le 10^5 1≤n≤105, 1 ≤ a i , b i ≤ 5 1 \le a_i, b_i \leq 5 1≤ai,bi≤5。
说明
题目译自 COCI2010-2011 CONTEST #1 T2 PROFESOR。
C++实现
#include<bits/stdc++.h>
using namespace std;
int a[100001],b[100001];
int n,maxx,now;
int main(){
scanf(“%d”,&n);
for(int i=0;i<n;++i)scanf(“%d%d”,&a[i],&b[i]);
for(int i=1;i<=5;i++){
int cnt=0;
for(int j=0;j<n;++j){
if(a[j]==i||b[j]==i)cnt++;
else cnt=0;
if(cnt>maxx){
maxx=cnt;
now=i;
}
}
}
printf(“%d %d\n”,maxx,now);
return 0;
}

后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

被折叠的 条评论
为什么被折叠?



