暑假刷题第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();
	}
} 
相关推荐
侯小啾4 小时前
【03】C语言 强制类型转换 与 进制转换
c语言·数据结构·算法
Xの哲學4 小时前
Linux NAPI 架构详解
linux·网络·算法·架构·边缘计算
AA陈超5 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P06-14 属性菜单 - 文本值行
c++·游戏·ue5·游戏引擎·虚幻
云知谷5 小时前
【经典书籍】C++ Primer 第15章类虚函数与多态 “友元、异常和其他高级特性” 精华讲解
c语言·开发语言·c++·软件工程·团队开发
weixin_582985186 小时前
OpenCV cv::Mat.type() 以及类型数据转换
c++·opencv·计算机视觉
京东零售技术8 小时前
扛起技术大梁的零售校招生们 | 1024技术人特别篇
算法
爱coding的橙子8 小时前
每日算法刷题Day78:10.23:leetcode 一般树7道题,用时1h30min
算法·leetcode·深度优先
Swift社区8 小时前
LeetCode 403 - 青蛙过河
算法·leetcode·职场和发展
地平线开发者8 小时前
三种 Badcase 精度验证方案详解与 hbm_infer 部署实录
算法·自动驾驶
oioihoii8 小时前
深入理解 C++ 现代类型推导:从 auto 到 decltype 与完美转发
java·开发语言·c++