核桃 j组复赛邮寄(555
2025-09-16 20:40:16
发布于:广东
比赛链接 传送门
T1
看到题目第一眼的我,就感叹这不是弱智题吗
让后5mins光速切掉
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
int n,k;
string s;
cin>>n>>k>>s;
int sum=0;
for(int i=0;i<n;i++){
if(s[i]=='0'&&k){
s[i]='1';
sum++;
k--;
}
else if(s[i]=='1'){
sum++;
}
}
if(!k){
cout<<sum;
}
else cout<<sum-k;
return 0;
}
points:100
T2
我的原本思路是尽量都*2+k,但是这样我无法达到正确答案,会死循环,然后我就想从结果出发往后慢慢推,当时我不确定代码能不能过,抱着试一试的心态,让后对了,结果忘加特判,喜提30。
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("optimality.in","r",stdin);
freopen("optimality.out","w",stdout);
int t;
cin>>t;
while(t--){
long long n,k,m;
cin>>n>>k>>m;
long long start=m;
long long cnt=0;
while(1){
if(start==n){
cout<<cnt<<endl;
break;
}
if((start-k)%2==0&&(start-k)>=2*n){
start=(start-k)/2;
cnt++;
}
else if(start-k<2*n){
start--;
cnt++;
}
else if((start-k)%2==1){
start--;
cnt++;
}
}
}
return 0;
}
points:30
赛后发现只有30points
结果赛后秒切
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("optimality.in","r",stdin);
freopen("optimality.out","w",stdout);
int t;
cin>>t;
while(t--){
long long n,k,m;
cin>>n>>k>>m;
long long start=m;
long long cnt=0;
while(1){
if(start==n){
cout<<cnt<<endl;
break;
}
if((start-k)%2==0&&(start-k)>=2*n){
start=(start-k)/2;
cnt++;
}
else if(start-k<2*n){
cout<<cnt+start-n<<endl;
break;
}
else if((start-k)%2==1){
start--;
cnt++;
}
}
}
return 0;
}
points:100
T3
不会cout<<0;吧
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("mex.in","r",stdin);
freopen("mex.out","w",stdout);
cout<<0;
return 0;
}
points:10
T4
打暴力
#include<bits/stdc++.h>
using namespace std;
long long change(int x,int y){
long long sum=0;
while(x){
sum+=x%y;
x/=y;
}
return sum;
}
int main(){
freopen("treasure.in","r",stdin);
freopen("treasure.out","w",stdout);
int t;
cin>>t;
while(t--){
int n,k;
cin>>n>>k;
long long mn=1e18;
for(int i=2;i<=k;i++){
mn=min(mn,change(n,i));
}
cout<<mn<<endl;
}
return 0;
}
points:60
总分:100+30+10+60=200
这里空空如也
有帮助,赞一个