19.5.17 CF #562 (Div. 2) 解题报告 (2 / 5)
link
A. Circle Metro
- 直接模拟即可
- ac代码
/*************************************************************************
> File Name: a.cpp
> Author: Wqr_
> Mail: xueduanwei@126.com
> Created Time: 2019年05月26日 星期日 23时06分30秒
************************************************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<vector>
#include<algorithm>
#include<map>
#include<queue>
#include<cmath>
using namespace std;
typedef long long ll;
int n, a, x, b, y;
int main(){
cin >> n >> a >> x >> b >> y;
int cura = a;
int curb = b;
bool flag = 0;
for(;;){
if(cura == curb){
flag = 1;
}
if(cura == x || curb == y) break;
cura++;
if(cura > n) cura = 1;
curb--;
if(curb < 1) curb = n;
}
if(flag) cout << "YES" << endl;
else cout << "NO" << endl;
return 0;
}
B. Pairs
- 其实挺好写的, 可惜当时没想出来
- 记录第一个出现的两个数(记为
tatb), 然后记录和tatb都不相同的pair的两个数(记为tctd). 然后暴力扫6遍即可 - ac代码
/*************************************************************************
> File Name: b_2.cpp
> Author: Wqr_
> Mail: xueduanwei@126.com
> Created Time: 2019年05月27日 星期一 00时09分21秒
************************************************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<vector>
#include<algorithm>
#include<map>
#include<queue>
#include<cmath>
using namespace std;
typedef long long ll;
typedef pair<int, int> P;
P ps[300030];
int n, m;
bool check(int a, int b){
bool tore = 1;
for(int i = 0; i < m; i++){
if(ps[i].first != a && ps[i].first != b && ps[i].second != a && ps[i].second != b){
tore = 0;
break;
}
}
return tore;
}
int main(){
cin >> n >> m;
int a, b;
int ta, tb, tc = -1, td = -1;
for(int i = 0; i < m; i++){
scanf("%d %d", &a, &b);
ps[i].first = a;
ps[i].second = b;
if(i == 0){
ta = a;
tb = b;
}
if(a != ta && a != tb && b != ta && b != tb) {
tc = a;
td = b;
}
}
bool ans = 0;
//printf("%d-%d-%d-%d\n", ta, tb, tc, td);
if(check(ta, tc)) ans = 1;
if(check(ta, td)) ans = 1;
if(check(tb, tc)) ans = 1;
if(check(tb, td)) ans = 1;
if(check(ta, tb)) ans = 1;
if(check(tc, td)) ans = 1;
if(ans) cout << "YES" << endl;
else cout << "NO" << endl;
return 0;
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!