A
数据很小,暴力跑一遍就行
B
统计l,r闭区间内的所有奇数,然后和k的数值对比一下大小就行,记得对l=r=1的情况特判
重点是数学知识(小学的)
再有一点就是,我们有相邻的两个数是互质的所以才有这个做法
C
MEX数组
题意:给定一个数组,求由他的MEX能构成的字典序最大并且最长的数组b
MEX数:最小非负整数
#includeusing namespace std; int t,n,j,temp; signed main() { freopen("in.txt","r",stdin); for(cin>>t;t;t--) { cin>>n; vector a(n); vector >ad(n+1); vector b; for(int i=0;i >a[i]; ad[a[i]].push_back(i); } for(int i=0;i 关于C题引申出知识点
lowebound返回大于等于要查找的数的地址,如果找不到,那么就返回数组中最接近待查找值的元素地址。vector规定大小后可以当成数组直接使用,同时具备vector的功能
D
给定一堆字符串,问你能不能按照顺序搞一个回文
思路很简单,从里面拿1个或者两个string组成回文就行了
坑点就是aa,aaa,a这样的自己就是回文需要特判这种情况。数据大,注意用hash的思想,也就是用上map
#includeusing namespace std; int t; int main() { freopen("in.txt","r",stdin); for(cin>>t;t;t--) { map mp; int n; cin>>n; vector a(n+1); int flag=0; for(int i=1;i<=n;i++) { string s,str,sub; cin>>s; str=s; reverse(s.begin(),s.end()); a[i]=str; if(mp[str]==0)mp[str]=i; if(str==s||mp.count(s))flag=1; } for(int i=n;i;i--) { string str=a[i]; string sub; if(str.size()==3) { sub=str.substr(0,2); reverse(sub.begin(),sub.end()); if(mp.count(sub)&&mp[sub]>i) flag=1; sub=str.substr(1,2); reverse(sub.begin(),sub.end()); if(mp.count(sub)&&mp[sub] F1
一道简单的DP#includeusing namespace std; const long long mod=1000000007; long long dp[2010][2010],t,n,m,k; int main() { for(int i=1;i<=2000;i++) { dp[i][i]=i; for(int j=1;j>t;t;t--) { cin>>n>>m>>k; cout< 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)