A. Maximize?
题目大意:给你一个数x,你需要找到一个数y(1<=y<x),使得gcd(x,y)+y值最大,然后输出这个y
思路:看范围暴力即可
void solve() { int a,b=0,maxx=0,bj=0; cin>>a; for(int i=1;i<a;i++) { b=__gcd(a,i); b+=i; if(maxx<b) bj=i,maxx=b; } cout<<bj<<endl; }
B. Prefiquence 题目大意:给你两个字符串a和b,你可以在b中删除一些字符,然后看子串是否包括a的一部分,要求找到这一部分最大的长度。 例如:a=“10011”,b=“1110”. 当选取a的"10"时,可以在b中可以找到,并且为最大长度,所以这一部分最大的长度为2. 思路:设置bj1代表a的下标,bj2代表b的下标,然后一个个从零比较,如果相等,那就都+1,否则bj2++。如果两个下标有任意一个超出代表的长度了,就break。
void solve() { int n1,n2,k=0; string a,b; cin>>n1>>n2>>a>>b; int bj1=0,bj2=0; for(int i=0;;i++) { if(bj1>=n1 || bj2>=n2) break; if(a[bj1]!=b[bj2]) bj2++; else bj1++,bj2++; } cout<<bj1<<endl; }
C. Assembly via Remainders
题目大意:给你一个n-1的数组x2,x3....xn,要求你构造一个长度为n的数组a1.....an,使得从i=2开始,xi=ai%ai-1。
思路:由于xi<=500,又因为100%101=1,100%199=99,所以我们不妨令a[n]=1e9,然后从后往前构造。
例如:x为2,4,1,那么a为100-1-4-2,100-1-4,100-1,100——>93,95,99,100.
void solve() { int n; cin>>n; int a[515]={0}; int b[515]={0}; for(int i=1;i<n;i++) cin>>a[i]; b[n]=1e9; for(int i=n-1;i>=1;i--) { b[i]=b[i+1]-a[i]; } for(int i=1;i<=n;i++) cout<<b[i]<<" "; cout<<endl; }
D. Permutation Game
题目大意:首先给你四个数:n,k,pb,ps,分别表示数组的长度,能操作的次数,Bodya一开始所在的下标,Sasha一开始所在的下标。然后给你
标签:下标,int,943,Codeforces,++,bj2,bj1,100,Div From: https://www.cnblogs.com/mingzi123/p/18174902