Codeforces Round 964 (Div. 4) 补题记录(A~G2)
1.CodeForces Round #939(Div. 2) 补题记录(A~F)2.CodeTON Round 8 (Div. 1 + Div. 2, Rated, Prizes!) 补题记录(A~A)3.Educational Codeforces Round 163 (Rated for Div. 2) 补题记录(A~D)4.CodeForces Round #951(Div. 2) 补题记录(A~E)5.Codeforces Global Round 26 补题记录(A~C2)6.CodeForces Round #959 sponsored by NEAR (Div. 1 + Div. 2) 补题记录(A~E)7.Codeforces Round 960 (Div. 2) 补题记录(A~D)8.Codeforces Round 961 (Div. 2) 补题记录(A~D)9.Codeforces Round 962 (Div. 3) 补题记录(A~G)10.Pinely Round 4 (Div. 1 + Div. 2) 补题记录(A~F)11.Educational Codeforces Round 168 (Rated for Div. 2) 补题记录(A~E)12.Codeforces Round 963 (Div. 2) 补题记录(A~D,F1)
13.Codeforces Round 964 (Div. 4) 补题记录(A~G2)
14.Codeforces Round 965 (Div. 2) 补题记录(A,B,D,E1)15.EPIC Institute of Technology Round August 2024 (Div. 1 + Div. 2) 补题记录(A~D1,E)16.Educational Codeforces Round 169 (Rated for Div. 2) 补题记录(A~F)17.Codeforces Round 972 (Div. 2) 补题记录(A~C,E1)18.Codeforces Round 988 (Div. 3) 补题记录(A~G)19.Rayan Programming Contest 2024 - Selection (Codeforces Round 989, Div. 1 + Div. 2) 补题记录(A~E)难绷事实:B wa 一发
A
......
#include<bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;
const int N=500100;
int a[N];
signed main(){
int T;cin>>T;
while(T--){
int n;
cin>>n;
string s=to_string(n);
int ss=0;
for(auto&x:s)ss+=x-'0';
cout<<ss<<'\n';
}
return 0;
} // main
B
直接枚举每一种组合。
#include<bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;
const int N=500100;
int a[N];
signed main(){
int T;cin>>T;
while(T--){
int a1,a2,b1,b2;
cin>>a1>>a2>>b1>>b2;
int a[]={a1,a2},b[]={b1,b2};
int cnt=0;
for(int i=0;i<2;++i)
for(int j=0;j<2;++j){
int C=0,CC=0;
if(a[i]>b[j])++C;
else if(a[i]<b[j])++CC;
if(a[i^1]>b[j^1])++C;
else if(a[i^1]<b[j^1])++CC;
if(C>CC)++cnt;
}
cout<<cnt<<'\n';
}
return 0;
} // main
C
直接枚举
时间复杂度为
#include<bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;
const int N=500100;
int a[N],l[N],r[N];
signed main(){
int T;cin>>T;
while(T--){
int n,s,m;
cin>>n>>s>>m;
for(int i=1;i<=n;++i)cin>>l[i]>>r[i];
int ok=0;
if(l[1]>=s)ok=1;
if(m-r[n]>=s)ok=1;
for(int i=1;i<n;++i)
if(l[i+1]-r[i]>=s){ok=1;break;}
cout<<(ok?"Yes\n":"No\n");
}
return 0;
} // main
D
随便贪心。如果当前字符能匹配就直接匹配,否则如果当前字符是 ?
就直接修改为当前需要匹配的字符即可。时间复杂度为
#include<bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;
const int N=500100;
int a[N],l[N],r[N];
signed main(){
int T;cin>>T;
while(T--){
string s,t;
cin>>s>>t;
int n=s.size(),m=t.size();
int p=0;
for(int i=0;i<n;++i){
if(p<m&&s[i]==t[p])++p;
else if(p<m&&s[i]=='?'){
s[i]=t[p];
++p;
}else if(s[i]=='?'){
s[i]='a';
}
}
if(p==m){
cout<<"YES\n";
cout<<s<<'\n';
}else{
cout<<"NO\n";
}
}
return 0;
} // main
E
首先先一直减一个数让这个数变为
#include<bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;
const int N=500100;
int a[N],qu[N],S[N];
signed main(){
int T;cin>>T;
for(int i=1;i<N;++i){
int j=i;
while(j){
j/=3;
++qu[i];
}
S[i]=S[i-1]+qu[i];
}
while(T--){
int l,r;
cin>>l>>r;
int cnt=qu[l]+S[r]-S[l-1];
cout<<cnt<<'\n';
}
return 0;
} // main
F
简单组合计数。考虑枚举当前选择的
#include<bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;
const int N=500100,mod=1e9+7;
int a[N],qu[N],S[N];
int fac[N],inv[N],ifac[N];
int binom(int x,int y){
if(x<y)return 0;
return fac[x]*ifac[y]%mod*ifac[x-y]%mod;
}
signed main(){
int T;cin>>T;
for(int i=0;i<2;++i)fac[i]=inv[i]=ifac[i]=1;
for(int i=2;i<N;++i){
fac[i]=fac[i-1]*i%mod;
inv[i]=mod-inv[mod%i]*(mod/i)%mod;
ifac[i]=ifac[i-1]*inv[i]%mod;
}
while(T--){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;++i)cin>>a[i],S[i]=S[i-1]+a[i];
int one=S[n],zero=n-S[n];
int cnt=0;
for(int i=(k+1)/2;i<=k;++i){
// meijv you i ge 1, ze you k-i ge 0
// cout<<"qwq "<<one<<' '<<zero<<' '<<i<<' '<<k-i<<' '<<binom(one,i)<<' '<<binom(zero,i)<<'\n';
cnt+=binom(one,i)*binom(zero,k-i)%mod;
cnt%=mod;
}
cout<<cnt%mod<<'\n';
}
return 0;
} // main
G1
阅读理解题。每一次询问 1 k
若回答为
#include<bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;
const int N=500100,mod=1e9+7;
int a[N],qu[N],S[N];
int fac[N],inv[N],ifac[N];
int binom(int x,int y){
if(x<y)return 0;
return fac[x]*ifac[y]%mod*ifac[x-y]%mod;
}
signed main(){
int T;cin>>T;
while(T--){
int l=2,r=1000,best=1;
while(l<=r){
int mid=l+r>>1;
cout<<"? 1 "<<mid<<endl;
int x;cin>>x;
int real=mid;
if(real==x)best=mid,l=mid+1;
else r=mid-1;
}
cout<<"! "<<best+1<<endl;
}
return 0;
} // main
G2
发现每一次询问 1 x
的话浪费了第一个维度,所以考虑充分利用题目给出的信息。对于当前二分到的区间
。则答案区间在 的右边。 ,此时分两种情况讨论: 。则答案在 和 两端点的中间。 ,则答案在 的左边。
这样正好可以在
#include<bits/stdc++.h>
#define pb push_back
#define int long long
using namespace std;
const int N=500100,mod=1e9+7;
int a[N],qu[N],S[N];
int fac[N],inv[N],ifac[N];
int binom(int x,int y){
if(x<y)return 0;
return fac[x]*ifac[y]%mod*ifac[x-y]%mod;
}
signed main(){
int T;cin>>T;
while(T--){
int l=2,r=1000,best=1;
while(l<=r){
int p1=l+(r-l)/3,p2=r-(r-l)/3;
cout<<"? "<<p1<<' '<<p2<<endl;
int area=p1*p2;int x;cin>>x;
if(x==area)
best=p2,l=p2+1;
else if(x==p1*(p2+1))
best=p1,l=p1+1,r=p2-1;
else
r=p1-1;
}
cout<<"! "<<best+1<<endl;
}
return 0;
} // main
本文来自博客园,作者:yhbqwq,转载请注明原文链接:https://www.cnblogs.com/yhbqwq/p/18346532,谢谢QwQ
合集:
CodeForces 比赛合集
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)