3748. 递增子串 - AcWing题库
#include<iostream>
#include<string>
const int N=200005;
int a[N];
using namespace std;
int main(){int t;cin>>t;for(int q=1;q<=t;q++){int n;cin>>n;string s;cin>>s;int cnt=1;a[1]=1;for(int i=2;i<=n;i++){if(s[i-1]>s[i-2])cnt++,a[i]=cnt;else {cnt=1;a[i]=cnt;}}printf("Case #%d: ",q);for(int i=1;i<=n;i++){cout<<a[i]<<' ';}cout<<endl;}return 0;
}
3325. Kick_Start - AcWing题库
#include<iostream>
#include<string>
const int N=200005;
int a[N];
using namespace std;
int main(){int t;cin>>t;for(int q=1;q<=t;q++){string s;cin>>s;int cnt=0;a[s.size()]=0;for(int i=s.size()-1;i>=0;i--){if(i>=4&&s[i]=='T'&&s[i-1]=='R'&&s[i-2]=='A'&&s[i-3]=='T'&&s[i-4]=='S'){cnt++;a[i]=cnt;}else {a[i]=a[i+1];}}int ans=0;for(int i=0;i<s.size()-3;i++){if(s[i]=='K'&&s[i+1]=='I'&&s[i+2]=='C'&&s[i+3]=='K'){ans+=a[i];}}printf("Case #%d: ",q);cout<<ans<<endl;}return 0;
}
Problem - 1817A - Codeforces(需要学习)
#include<iostream>
#include<string>
const int N=200005;
int a[N];
int p[N];
using namespace std;
void solve(){int n,q;cin>>n>>q;for(int i=1;i<=n;i++)cin>>a[i];for(int i=2;i<=n-1;i++){int cnt=0;if(a[i]>=a[i+1]&&a[i-1]>=a[i])cnt=1;p[i]=p[i-1]+cnt;}while(q--){int l,r;cin>>l>>r;if(l==r){cout<<1<<endl;}else {cout<<(r-l+1)-(p[r-1]-p[l])<<"\n";}}
}
int main(){int t=1;while(t--){solve();}
}
Problem - 1811E - Codeforces(进制转换--需要学习)
#include<iostream>
#include<string>
#include<vector>
const int N=200005;
int a[N];
int p[N];
using namespace std;
void solve(){long long n;cin>>n;vector<long long>ans;while(n>0){ans.push_back(n%9);n/=9;}for(int i=ans.size()-1;i>=0;i--){if(ans[i]<4)cout<<ans[i];else cout<<ans[i]+1;}cout<<endl;
}
int main(){int t;cin>>t;while(t--){solve();}
}
Problem - C - Codeforces(构造)
#include<iostream>
#include<string>
#include<vector>
const int N=200005;
int a[N];
int b[N];
using namespace std;
void solve(){int n;cin>>n;for(int i=1;i<=n-1;i++){cin>>a[i];b[i]=-1;}for(int i=1;i<=n-1;i++){if(b[i]!=-1){if(a[i]<a[i+1]){b[i+1]=a[i];}else {b[i+1]=a[i+1];}continue;}if(a[i]<a[i+1]){b[i]=a[i];b[i+1]=a[i];}else {b[i]=a[i];}}b[n]=a[n-1];for(int i=1;i<=n;i++){cout<<b[i]<<' ';}cout<<endl;
}
int main(){int t;cin>>t;while(t--){solve();}
}
Problem - D - Codeforces(需要学习)
#include<iostream>
#include<string>
#include<vector>
#define ll long long
const int N=200005;
int a[N];
int b[N];
long long f[46];
using namespace std;
void solve(){ll n,x,y;cin>>n>>x>>y;ll left =y-1,right =f[n+1]-y;ll up=x-1,down=f[n]-x;bool ok=true;ll now=0;for(ll i=n;i>=1;i--){if(~now){if(left>=f[i])left-=f[i];else if(right>=f[i])right-=f[i];else{ok=false;break;}}else{if(up>=f[i])up-=f[i];else if(down>=f[i])down-=f[i];else{ok = false;break;}}now=~now;}if(ok==false)cout<<"NO"<<endl;else cout<<"YES"<<endl;
}
int main(){f[0]=1,f[1]=1;for(int i=2;i<=45;i++){f[i]=f[i-1]+f[i-2];}int t;cin>>t;while(t--){solve();}
}
Problem - D - Codeforces
#include<iostream>
#include<string>
#include<vector>
#include<cstring>
#include<queue>
#define ll long long
const int N=200005;
int a[N];
int b[N];
int d[27],x[27];
using namespace std;
void solve(){int n;cin>>n;string s;cin>>s;int ans=0;string cnt;int f=1;for(int i=0;i<n-1;i++){if(i>=1&&s[i-1]==s[i+1]){f=1;continue;}string p;p+=s[i];p+=s[i+1];if(i==0||cnt!=p||f==1){f=0;ans++;cnt=p;}}cout<<ans<<endl;
}
int main(){int t;cin>>t;while(t--){solve();}
}
Problem - C2 - Codeforces
#include<iostream>
#include<string>
#include<vector>
#include<cstring>
#include<queue>
#define ll long long
const int N=200005;
int a[N];
int b[N];
int d[27],x[27];
using namespace std;
void solve(){priority_queue<int,vector<int>,less<int> >q;int n;cin>>n;long long ans=0;for(int i=0;i<n;i++){int x;cin>>x;if(x==0){if(!q.empty()){ans+=q.top();q.pop();}}else {q.push(x);}}cout<<ans<<endl;
}
int main(){int t;cin>>t;while(t--){solve();}
}
C-游游的数值距离_牛客周赛 Round 6 (nowcoder.com)
#include<iostream>
#include<string>
#include<vector>
#include<cstring>
#include<queue>
#define ll long long
const int N=200005;
ll a[N];using namespace std;
void solve(){ll n;cin>>n;ll ans1,ans2,p=1e16+6;a[1]=1;for(int i=2;i<=20;i++){a[i]=a[i-1]*i;}for(int x=1;x<=20;x++){if(a[x]==1&&x!=2){if(p>abs((-n))){ans1=x,ans2=3;p=n;}continue;}ll y=n/(a[x]-1);if(y==0)y++;if(p>abs((a[x]-1)*y-n)&&x!=2&&y!=2){ans1=x,ans2=y;p=abs((a[x]-1)*y-n);}y++;if(p>abs((a[x]-1)*y-n)&&x!=2&&y!=2){ans1=x,ans2=y;p=abs((a[x]-1)*y-n);}}cout<<ans1<<' '<<ans2<<endl;
}
int main(){int t=1;//cin>>t;while(t--){solve();}
}