牛客白月赛13题解
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客白月赛13题解相关的知识,希望对你有一定的参考价值。
https://ac.nowcoder.com/acm/contest/549
目录
小A的签到题【规律】
找规律。
#include<bits/stdc++.h>
using namespace std;
int main()
long long n;
scanf("%lld",&n);
if(n&1) puts("1");
else puts("-1");
return 0;
小A的回文串【双指针】
他这个类似于那个环,故可以用两倍的,破环成链的方法搞。双指针跑。
#include<bits/stdc++.h>
using namespace std;
int main(void)
string s; cin>>s;
int n=s.size();
s=s+s;
int ans=1;
for(int i=0;i<s.size();i++)
int l=i-1,r=i+1;//字符串的长度为偶数
int cnt=0;
while(cnt<n/2&&l>=0&&r<s.size()&&s[l]==s[r]) l--,r++,cnt++;
ans=max(ans,cnt*2+1);
l=i,r=i+1;//字符串的长度为奇数
cnt=0;
while(cnt<n/2&&l>=0&&r<s.size()&&s[l]==s[r]) l--,r++,cnt++;
ans=max(ans,cnt*2);
cout<<ans;
return 0;
小A买彩票【DP】
f[i][j] 表示买前i个彩票 总和为j的次数
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long int LL;
LL n,f[35][500],w[15]=1,2,3,4;
LL gcd(LL a,LL b)return b?gcd(b,a%b):a;
int main(void)
cin>>n;
f[0][0]=1;
for(int i=1;i<=n;i++)
for(int j=0;j<=500;j++)
for(int k=0;k<=3;k++)
int temp=j-w[k];
if(temp>=0&&f[i-1][temp]) f[i][j]+=f[i-1][temp];//f[i-1][temp]是有的
LL sum=0,cnt=0;
for(int i=0;i<=500;i++)
sum+=f[n][i];
if(i>=3*n) cnt+=f[n][i];
LL temp=gcd(sum,cnt);
cnt/=temp,sum/=temp;
cout<<cnt<<"/"<<sum;
return 0;
小A的位运算【前后缀】
#include<bits/stdc++.h>
using namespace std;
const int N=1e6*5+10;
typedef long long int LL;
LL a[N],cnt[105],n,sum;
int main(void)
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++)
for(int j=0;j<64;j++)
if(a[i]>>j&1) cnt[j]++;
LL ans=0;
for(int i=0;i<n;i++)
sum=0;
for(int j=0;j<64;j++)//不选
if(a[i]>>j&1) cnt[j]--;
if(cnt[j]) sum+=1<<j;
for(int j=0;j<64;j++)//恢复状态
if(a[i]>>j&1) cnt[j]++;
ans=max(ans,sum);
cout<<ans;
return 0;
正解,处理前后缀。
#include<bits/stdc++.h>
using namespace std;
const int N=1e6*5+10;
typedef long long int LL;
LL a[N],l[N],r[N],n;
LL ans=0;
int main(void)
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) l[i]=l[i-1]|a[i];
for(int i=n;i>=1;i--) r[i]=r[i+1]|a[i];
for(int i=1;i<=n;i++)
LL temp=l[i-1]|r[i+1];
ans=max(ans,temp);
cout<<ans;
return 0;
以上是关于牛客白月赛13题解的主要内容,如果未能解决你的问题,请参考以下文章