Codeforces Round #735 (Div. 2)
A
题意:给n个整数 . 找到在所有对的最大值。
思路:
区间的最大值,最小值,很容易发现每个值他的左边,或者右边的相乘才是答案。
代码:
#include <bits/stdc++.h> using namespace std; #define bug(x) cerr<<#x<<" : "<<x<<endl; const int N=2e6+10; const int mod=1e9+7; typedef long long ll; ll a[N]; int main(){ int T; cin>>T; while(T--){ int n; ll ans=0; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; ans=max(ans,a[i]*a[i-1]); } cout<<ans<<endl; } }
B
题意:给n个整数 .找出最大的
数据范围看图。
这玩意儿竟然暴力就行,离谱,还以为有啥性质呢
代码:
#include <bits/stdc++.h> using namespace std; #define bug(x) cerr<<#x<<" : "<<x<<endl; const int N=2e6+10; const int mod=1e9+7; typedef long long ll; ll a[N]; int main(){ int T; cin>>T; while(T--){ int n,k; ll ans=-1e9; cin>>n>>k; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=max(1,n-105);i<=n;i++){ for(int j=i+1;j<=n;j++){ ans=max(ans,1ll*i*j-(a[i]|a[j])*k); } } cout<<ans<<endl; } }
D
题意:构造一个长度为n的字符串S,使得,相同类型的连续子串,在s中出现的个数是奇数。
思路:当n<=26,每种字符输出一个,那肯定行。但是以后怎么办。构造的过程我们可以发现一个小性质,类似于aaba,aaabaa,这样的都是满足条件的,x+1,b,x,(x都是相同的字符).所以我们只需要这样构造就行了。n为奇数,中间一个字符b,最后再加一个不相等的字符,其余全部为a。
代码:
#include <bits/stdc++.h> using namespace std; #define bug(x) cerr<<#x<<" : "<<x<<endl; const int N=2e6+10; const int mod=1e9+7; typedef long long ll; ll a[N]; int main(){ int T; cin>>T; while(T--){ int n,k; cin>>n; if(n==1){ cout<<'a'<<endl; continue; } if(n&1){ int tt=(n-1)/2; for(int i=0;i<tt;i++) cout<<'a'; cout<<'b'; for(int i=0;i<tt-1;i++) cout<<'a'; cout<<'z'; } else{ int tt=n/2; for(int i=0;i<tt;i++) cout<<'a'; cout<<'b'; for(int i=0;i<tt-1;i++){ cout<<'a'; } } cout<<endl; } } /* 3 aba 5 (n-1)/2 a b (n-1)/2-1 a b 6 n/2 a b n/2-1 a */
------好多都是你想的到就写得出来,想不到就坐牢,有好多小性质-------