(solve AB 至此一周六场div.2 赛时一道C题也没有做出来 QAQ!!!)
比赛链接: https://codeforces.com/contest/1629
C题 题目大意给出一个数组,将数组任意分段,各段的MEX组成一个新串,问字典序最大的新串
题解统计各数出现的次数存放在cnt数组,可以从cnt数组确定当前的最大mex,然后将原数组指针移动到满足此mex的位置,重复直到原数组指针移出
#include//#define int long long using namespace std; void solve(); signed main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); // freopen("in.txt","r",stdin); int t;cin>>t; while(t--)solve(); #define _ 0 return ~~(0^_^0); } void solve(){ int n;cin>>n; vector a(n); vector cnt(n+1); for(int i=0;i >a[i]; cnt[a[i]]++; } vector res; int i=0; while(i tmp(mex); int _mex=0; while(i D题 题目大意 给出长度为n的字符串数组(各字符串长度<=3),问是否有子序列构成回文串
题解可以先判断各字符串本身是否回文串 和 是否存在完全和自己相反的串
剩下的情况就只有长度为 2+3 和 3+2的串
2+3 可以将2后面拼上所有字符放入set
3+2可以将2前面拼上所有字符进行判断
(做题时犯了一个错误是将长度为3的串的前两个字符组成的字串放入了set,这样会导致本来是"abX" "Xba"形式的两个串匹配成回文串 具体地,它们可能是 abc dbc,但是被判断成了回文串)
#include//#define int long long using namespace std; void solve(); string _reverse(string s); signed main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); // freopen("in.txt","r",stdin); int t;cin>>t; while(t--)solve(); #define _ 0 return ~~(0^_^0); } void solve(){ int n;cin>>n; vector a(n); for(int i=0;i >a[i]; set st; int yes=0; for(int i=0;i 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)