【比赛笔记】AtCoder Beginner Contest 261笔记
目录
A - Intersection
A - Intersectionhttps://atcoder.jp/contests/abc261/tasks/abc261_a
题目描述
输出L1~R1和L2~R2两段区间重合部分的长度
题目分析
这道题很简单,只用判断两个区间是否有重复:有的话输出min(r1,r2)-max(l1,l2),也就是以两个区间右端点之中更靠前的一个作为重复区间的右端点,而以两个区间左端点之中更靠后的一个作为重复区间的左端点;如果没有的话输出0。上述思路可以用max来实现。
题目代码
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a/(gcd(a,b))*b;}
int l1,l2,r1,r2;
int main(){
cin>>l1>>r1>>l2>>r2;
cout<<max(min(r1,r2)-max(l1,l2),0);
return 0;
}
B - Tournament Result
B - Tournament Resulthttps://atcoder.jp/contests/abc261/tasks/abc261_b
题目描述
有N个人正在进行循环赛,比赛的结果是以二维数组的方式屏幕输入,a[i][j]为'W'表示第i个人赢了第j个人,a[i][j]为'L'表示第i个人败给了第j个人,a[i][j]为'D'表示第i个人与第j个人打成平手,请你判断给你的比赛结果是否合理(诸如第i个人赢了第j个人,但第j个人却没有输给第i个人)如果合理的话输出"correct",其余输出"incorrect"
*注:a[i][i]为‘-’
题目分析
这道题只需遍历数组,写if语句判断是否有不合理之处即可。其实不需要管a[i][j]和a[j][i]重复判断,因为数据量很小,直接遍历完全可以。
题目代码
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a/(gcd(a,b))*b;}
int n;
char a[1005][1005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
bool flag=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j)continue;
if(a[i][j]=='W'&&a[j][i]!='L'){
flag=0;
break;
}
if(a[i][j]=='L'&&a[j][i]!='W'){
flag=0;
break;
}
if(a[i][j]=='D'&&a[j][i]!='D'){
flag=0;
break;
}
}
}
if(flag)cout<<"correct"<<endl;
else cout<<"incorrect"<<endl;
return 0;
}
C - NewFolder(1)
C - NewFolder(1)https://atcoder.jp/contests/abc261/tasks/abc261_c
题目描述
给定正整数N和N个字符串s[1~n],要求你以以下的规则输出s[i]:
- 如果在之前没有出现过s[i],那么就直接打印s[i]
- 如果在之前出现过s[i],那么就打印s[i]+'('+之前出现过的次数+')'
题目分析
一开始我们肯定会想到用双重循环,但是这样会超时。于是就必须用到STL的一个关联容器map,这样就可以很便捷的记录每个字符串的出现次数,打印自然就容易多了。
题目代码
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){return b?gcd(b,a%b):a;}
int lcm(int a,int b){return a/(gcd(a,b))*b;}
int n;
string s[200005];
map <string,int> mp;
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>s[i];
for(int i=1;i<=n;i++){
if(mp[s[i]]==0){
cout<<s[i]<<endl;
}
else{
cout<<s[i]<<'('<<mp[s[i]]<<')'<<endl;
}
mp[s[i]]++;
}
return 0;
}
总结
1.一些不熟悉的算法要加强
2.做题时要全方面考虑,避免有没想到的点
本文作者:RainDuckling
本文链接:https://www.cnblogs.com/RainDuckling/p/17531659.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步