Codeforces Round #735 (Div. 2) A-D
Posted 尘封陌路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #735 (Div. 2) A-D相关的知识,希望对你有一定的参考价值。
这场上分场,早知道用大号打了。。
A. Cherry
区间肯定越小越好,那就找一个相邻乘积最大的。
AC
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[100010];
int n;
void get()
{
ll anss=-1;
for(int i=1;i<n;i++){
anss=max(anss,a[i]*a[i+1]);
}
cout<<anss<<"\\n";
}
void solve()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
get();
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
}
B. Cobb
因为K最大就100,考虑到N很大的时候,ij才是占主导,所以肯定优先考虑ij大的时候。n小的时候直接暴力,n大的时候枚举后面100项
ACcode
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N=1e5+10;
ll a[N];
int n,k;
ll get(int len)
{
ll ans=-0x3f3f3f3f;
for(int i=len;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
ans=max(ans,1ll*i*j-1ll*k*((ll)a[i]|a[j]));
}
}
return ans;
}
void solve()
{
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
int cnt=max(1,n-100);
cout<<get(cnt)<<"\\n";
}
int main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
return 0;
}
C. Mikasa
1.显然n>m,答案是0
当N=xxxx0xxxx
当M=xxxx1xxxx
可以得出,M的1的后面所有数都可以取到 即范围是(xxxx011111)
然后另一种 N:xxxxxx1xxxx
M:xxxxxx0xxxx
因为M只能变小不能变大,所有0不能变成1,
所有从这里开始就有的数取不到
那么这个取不到的数要最小,
M从这个0开始以及后面的位随便变,
目的是生成最小的Mex,那么M这一位的
0变成1,使得1^1=0,那么答案就变成
找最小的mex^n>m ,
然后运用4 6 这个样例可以发现让m+1,
转换成 mex^n>=m+1
AC代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
cin>>n>>m;
if(n>m)
{
cout<<"0"<<endl;
}
else
{
m++;
ll res=0;
for(int i=31;i>=0;i--)
{
int u=(n>>i)&1;
int p=(m>>i)&1;
if(!u&&p)
{
res+=1<<i;
//break;
}
if(u&&!p) break;
}
cout<<res<<"\\n";
}
}
return 0;
}
D. Diane
分奇偶构造
奇数把用aabcaaa 这样
把bc放中间
偶数用 aabaaa 这样
把b放中间偏左或者偏右
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ll T;
cin>>T;
while(T--)
{
int n;
cin>>n;
if(n==1)
{
cout<<"a"<<endl;
continue;
}
if(n&1)
{
int k=(n-2)/2;
for(int i=1;i<=k;i++)
cout<<"a";
cout<<"bc";
for(int i=1;i<=k+1;i++)
cout<<"a";
cout<<endl;
}
else
{
int k=n/2;
for(int i=1;i<k;i++)cout<<"a";
cout<<"b";
for(int i=1;i<=k;i++)cout<<"a";
cout<<endl;
}
}
return 0;
}
以上是关于Codeforces Round #735 (Div. 2) A-D的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #735 (Div. 2)-C. Mikasa-题解
Codeforces Round #735 (Div. 2)-B. Cobb-题解
Codeforces Round #735 (Div. 2)-A. Cherry-题解
Codeforces Round #735 (Div. 2)-C. Mikasa-题解