牛客周赛 R136
第一次打牛客周赛感觉难度还好没cf难ac4个剩两个数据结构还没学学到了很多T1小红的数组重排没啥好说的#includebits/stdc.h using namespace std; typedef long long ll; int main(){ int a,b,c; cinabc; coutb c a; return 0; }T2小红的回文串构造最烦的一道题不知到回文串以为挺复杂的理解错题意了浪费了大量时间愤怒#includebits/stdc.h using namespace std; typedef long long ll; int main(){ int n; cinn; while(n--){ int a; cina; if(a1){ coutaendl; } else{ coutNoendl; } } return 0; }T3小红的排列之前上课没好好听逆元acm没侧重讲现在知道有什么用了取模除法与其他运算法则不同需要用逆元间接运算#include bits/stdc.h using namespace std; typedef long long ll; const ll N998244353; ll qpow(ll a,ll b){ ll res 1; while(b){ if(b1) resres*a%N; aa*a%N; b1; } return res; } ll inv(ll x){ return qpow(x,N-2); }//逆元 ll f(ll n){ ll num1; for(int i2;in;i){ numnum*i%N; } return num; } int main() { int n; string s; cinns; ll j0,o0,k0; for(int i0;in;i){ if(s[i]j) j; else if(s[i]o) o; else k; } ll a1n/2; ll a2(n%20)?a1:a11; if(a2j||a1o){ cout0; return 0; } ll ans1; ansans*f(a2)%N*inv(f(a2-j))%N;//逆元 ansans*f(a1)%N*inv(f(a1-o))%N; ansans*f(k)%N; coutans; return 0; }T4小红的中位数这是觉得这是比赛做的最好的一道题代码感觉很简洁//求删除最少即求保留最多 #include bits/stdc.h using namespace std; int main() { int n; cinn; int a[n5]; int flag0,tp,l0,r0,mid,ans; for(int i1;in;i){ cina[i]; if(i1){ tpa[i]; } else{ if(tp!a[i]) flag1; } } if(flag0) { cout-1;return 0; } sort(a1,an1); mida[(n1)/2]; for(int i1;in;i){ if(a[i]mid) l; else if(a[i]mid) r; } ansmax(2*l,2*r-1);//最大保留个数 ansn-ans;//最少删除 coutans; return 0; }