Codeforces Round #786 (Div. 3)

枚举一下就好

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
int T; 
int ksm(int a,int b){
	int res=1;
	while(b){
		if(b&1)res*=a;
		a*=a;b>>=1;
	}
	return res;
}
void solve();
int main(){
	cin>>T;
	while(T--)solve();
     return 0;
}
void solve(){
	int a,b;
	scanf("%d%d",&a,&b);
	if(b%a){
		printf("0 0\n");
		return;
	}
	int t=b/a;
	if(t==1){
		printf("1 1\n");
		return;
	}
	for(int i=2;i<=100;i++)
	for(int j=1;;j++){
		int kk=ksm(i,j);
		if(t==kk){
			printf("%d %d\n",j,i);
			return;
		}
		else if(t<kk)break;
	}
	printf("0 0\n");
}

判断一下就好 没啥好说的

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
int T;
string s;
void solve();
int main(){
	cin>>T;
	while(T--)solve();
     return 0;
}
void solve(){
	cin>>s;
	int t1=s[0]-'a';
	int ans=t1*25;
	t1++;
	int t2=s[1]-'a';t2++;
	if(t2>t1)t2--;
	ans+=t2;
	cout<<ans<<endl;
}

首先判断只有一种可能的情况 t字符串里面没有'a' 或者有且只有一个'a'没有其他字符

考虑无限的情况 t中有一个'a'并且长度大于1

考虑有限的情况 设s中有cnt个'a' 每个'a'有换与不换两种选择 根据乘法原理 答案为ksm(2,cnt)

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
int T;
ll ksm(ll a,ll b){
	ll res=1;
	while(b){
		if(b&1)res*=a;
		a*=a;b>>=1;
	}
	return res;
}
void solve();
int main(){
	cin>>T;
	while(T--)solve();
     return 0;
}
void solve(){
	string s,t;
	int cnt=0;
	cin>>s>>t;
	int l1=s.size(),l2=t.size();
	for(int i=0;i<l1;i++)
	if(s[i]=='a')cnt++;
	if(!cnt||(l2==1&&t[0]=='a')){
		cout<<1<<endl;
		return;
	}
	int pd=0;
	for(int i=0;i<l2;i++)
	if(t[i]=='a')pd=1;
	if(pd){
		cout<<"-1"<<endl;
		return;
	}else{
		cout<<ksm(2,cnt)<<endl;
	}
}

发现规律 a[n]和a[n-1]一定是分居两侧 两者先后循序可以改变 取的话也是

所以从后往前两两排序 如果最终能够将整个序列排序 那就是YES 否则为NO

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
const int maxn=2e5+5;
int T;
int a[maxn];
void solve();
int main(){
	cin>>T;
	while(T--)solve();
     return 0;
}
void solve(){
	int n;cin>>n;
	for(int i=1;i<=n;i++)
	scanf("%d",&a[i]);
	int pre=1e9;
	for(int i=n;i>=1;i-=2){
		if(i-1>=1){
			if(pre<max(a[i],a[i-1])){
				cout<<"NO"<<endl;
				return;
			}else pre=min(a[i],a[i-1]);
		}else{
			if(pre<a[i]){
				cout<<"NO"<<endl;
				return ;
			}
		}
	}
	cout<<"YES"<<endl;
}
posted @   wzx_believer  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)
点击右上角即可分享
微信分享提示