暑假刷题第23天--8/6

3748. 递增子串 - AcWing题库

cpp 复制代码
#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题库

cpp 复制代码
#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(需要学习)

cpp 复制代码
#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(进制转换--需要学习)

cpp 复制代码
#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(构造)

cpp 复制代码
#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(需要学习)

cpp 复制代码
#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

cpp 复制代码
#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

cpp 复制代码
#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)

cpp 复制代码
#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();
	}
} 
相关推荐
hardStudy_h14 分钟前
C++——内联函数与Lambda表达式
开发语言·jvm·c++
vortex525 分钟前
算法设计与分析 知识总结
算法
艾莉丝努力练剑41 分钟前
【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(三)
c语言·开发语言·数据结构·学习·算法
ZZZS05161 小时前
stack栈练习
c++·笔记·学习·算法·动态规划
位东风1 小时前
【c++学习记录】状态模式,实现一个登陆功能
c++·学习·状态模式
hans汉斯1 小时前
【人工智能与机器人研究】基于力传感器坐标系预标定的重力补偿算法
人工智能·算法·机器人·信号处理·深度神经网络
vortex53 小时前
算法设计与分析:分治、动态规划与贪心算法的异同与选择
算法·贪心算法·动态规划
前端拿破轮3 小时前
🤡🤡🤡面试官:就你这还每天刷leetcode?连四数相加和四数之和都分不清!
算法·leetcode·面试
雷羿 LexChien3 小时前
C++内存泄漏排查
开发语言·c++
地平线开发者4 小时前
征程 6|工具链量化简介与代码实操
算法·自动驾驶