嘉兴专业做网站的公司,外国网站建设,做网站横幅用什么软件好,安徽网站建设天锐科技比赛链接#xff1a;Dashboard - Codeforces Round 946 (Div. 3) - Codeforces 写在前面:比赛时C题卡了挺久#xff0c;还没做出来#xff08;qwq#xff09;#xff0c;D题也只是草草看了几眼#xff0c;看榜单D题过的人数大于C题#xff0c;写不出C题导致没心思看D题了…比赛链接Dashboard - Codeforces Round 946 (Div. 3) - Codeforces 写在前面:比赛时C题卡了挺久还没做出来qwqD题也只是草草看了几眼看榜单D题过的人数大于C题写不出C题导致没心思看D题了赛后重新补了这两道题。 回归正题
C题题目链接 Problem - C - Codeforces
题意
给定一个长度为 n 的数列 a。考虑 n−2 个关于 a 的三元对 [,1,2]。我们定义两个三元对是美丽的当且仅当他们只有一个位置不同。
求这 n−2 个三元对中美丽的三元对数量。
思路用map映射首先我们可以定义3个map用来存放所有三元组中的两个然后再存一下每个三元组本身的个数遍历数列时当出现相同的三元组中的两个加上它的个数当三元组本身重复出现时需要减去它个数乘以3最后输出ans即可。
实现代码
#includebits/stdc.h
#define int long long
#define endl \n
#define fi first
#define se second
#define PII pairint,int
using namespace std;
const int N2e55;
int a[N];
void solve(){int n;cin n;int ans0;for(int i1;in;i) cin a[i];mapPII,int m1,m2,m3;//存放三元组个数中的2个mapvectorint,int m;//存入三元组本身for(int i1;in-2;i){ansm1[{a[i],a[i1]}];ansm2[{a[i],a[i2]}];ansm3[{a[i1],a[i2]}];ans-m[{a[i],a[i1],a[i2]}]*3;m[{a[i],a[i1],a[i2]}];}cout ans endl;return ;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t1;cin t;while(t--) solve();return 0;
} D题题目链接Problem - D - Codeforces
题意:题目给出上下左右4种操作并对应“NSWE”直升机和小车初始位置都在00判断他们在经过n次操作后能否到达同一点并且直升机和小车都至少移动一次。
思路分析题目不难得出我们设最后的坐标xy当x或者y为奇数时他们不可能到达同一点否则我们可以将他们移动到x/2,y/2的位置上。
相当于小车和直升机每次移动每种操作数的一半
特判:
当n为2时判断s[0]和s[1]是否相等
当n为4且操作包含“NSWE”4种操作,直升机或者小车只移动x轴或者y轴
实现代码
#includebits/stdc.h
#define int long long
#define endl \n
#define fi first
#define se second
#define PII pairint,int
using namespace std;
const int N1e65;
int a[N];
void solve(){int n;string s;cin n s;mapchar,int m;int x0,y0;for(int i0;in;i){//确定xy的位置同时统计每种操作的数量if(s[i]N) y,m[s[i]];else if(s[i]S) y--,m[s[i]];else if(s[i]E) x,m[s[i]];else x--,m[s[i]];}if((x1)||(y1)||n2s[0]!s[1]){//不能到达同一位置输出NOcout NO endl;return ;}if(m.size()4n4){//特判for(int i0;in;i){if(s[i]N||s[i]S) cout R;else cout H;}cout endl;return ;}mapchar,int m1;//统计直升机操作的数量for(int i0;in;i){if(m1[s[i]]m[s[i]]/2){//当直升机操作数小于总操作数/2时cout R;//输出直升机m1[s[i]];//直升机操作的数量加1} else cout H;}cout endl;return ;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t1;cin t;while(t--) solve();return 0;
}