算法-练习题
目录
1、二进制-区间中数的个数
2、前缀的个数统计
3、平方数-dp问题
4、构造-周期数
5、思维题-标记法
1、二进制-区间中数的个数
B-小王的密码破解之旅_2025年第一届上海师范大学程序设计竞赛(同步赛)
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){ll l,r;cin>>l>>r;ll sum=0;for(ll i=0;i<=64;i++){ll x=(1ll<<i)-1;if(x>=l&&x<=r){sum++;}}cout<<sum<<endl;
}
int main(){ll t;cin>>t;while(t--){solve();}
}
2、前缀的个数统计
C-小王的 CF 与作业大战_2025年第一届上海师范大学程序设计竞赛(同步赛)
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){string s;cin>>s;ll c=0,cf=0,z=0,zy=0,res=0,h=0;for(ll i=0;i<s.size();i++){if(s[i]=='c'){c++;}else if(s[i]=='f'){cf+=c;}else if(s[i]=='z'){z++;}else if(s[i]=='y'){zy+=z;}res=h+cf-zy;if(res<0){h+=abs(res);}}if(h==0){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;cout<<h<<endl;}
}
int main(){ll t;cin>>t;while(t--){solve();}
}
3、平方数-dp问题
M-照天地苍茫,却有花影成双_新疆大学2025年7月月赛(同步赛)
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1e5+10;
int main(){ll t;cin>>t;ll dp[N];for(ll i=0;i<=N;i++){dp[i]=0;}for(ll i=1;i<=N;i++){for(ll j=1;j*j<=i;j++){if(dp[i-j*j]==0){dp[i]=1;}}}while(t--){ll n;cin>>n;if(dp[n]==1){cout<<"SXX"<<endl;}else{cout<<"KLL"<<endl;}}
}
4、构造-周期数
D-前缀和_牛客周赛 Round 99
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=2e5+10;
void solve(){ll x,p;cin>>x>>p;ll T=x;ll c=p/T,d=p%T;ll e=c*(T-1)+d;if(d==0){cout<<2*c-1<<endl;}else{cout<<2*e<<endl;}
}
int main(){ll t;cin>>t;while(t--){solve();}
}
5、思维题-标记法
C-小红的双排列删除_牛客周赛 Round 100
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=4e5+10;
void solve(){ll n;cin>>n;n=n*2;ll num=-1;ll x;for(ll i=1;i<=n;i++){cin>>x;if(num==-1){num=x;continue;}if(x==num){num=-1;continue;}}if(num==-1){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}
}
int main(){ll t;cin>>t;while(t--){solve();}
}