首页 > 其他分享 >第一次

第一次

时间:2025-01-16 19:55:13浏览次数:1  
标签:cnt int ll long 第一次 ans 次方

第一次

1. 神秘符文的重复序列

 

 

 

逻辑思维
  #include<bits/stdc++.h> 
using namespace std;
int main(){
	int n,k;
	cin>>n>>k;//长度为n,重复k遍!
	string s;
	cin>>s;
	long long int ans=0;
	long long int cnt=0;
	while(k--) {//重复k遍
		for(int i=0;i<n;i++){//遍历字符串s
			if(s[i]=='a'){
				cnt++;//已经经过几个a 
			}
			else if(s[i]=='b'){
				ans+=cnt;//遇见一个b,就可以与前面的a搭配,所以要加上前面所有a 
			}
		}
	}
	cout<<ans; 
	return 0;
}

2. 伦太郎的胡椒博士汽水

双指针算法:

一个指针标志起点,一个指针标志终点,序号从1到n

然后每次记录最大值,最小值,如果当前数字与当前的区间最大值差值大于k就break

 

 

双指针
   #include<bits/stdc++.h>
using namespace std;
const long long int N=1e5+6;
long long int v[N];
int main(){
	int n,k;
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>v[i];
	}
	long long int ans=0;
	for(int i=1;i<=n;i++){
		long long int m=v[i];//最大值
		long long int s=v[i];//最小值
		for(int j=i+1;j<=n;j++) {
			if(v[j]-s>k||m-v[j]>k){
				break;
			} 
			else{
//			cout<<"["<<i<<","<<j<<"],"<<"最小值:"<<s<<",最大值: "<<m<<endl;
			ans++;
//			cout<<"美味区间: "<<i<<"~"<<j<<",最小值"<<s<<",最大值"<<m<<endl;
			if(v[j]<s){
				s=v[j];
			}
			else if(v[j]>m){
				m=v[j];
			}
			
		}
		}
	
	}
	cout<<ans;
	return 0;
}

 

3.纪律问题

思路

    1.每个小朋友只能有一种爱好。并且这m种爱好可以用不完! 
    2.相邻的不能有同种爱好 -->所以合法的状态种数:m*(m-1)的(n-1)次方 
    3.所有可能数:m的n次方
    4.所以违法记录数量为m的n次方- m*(m-1)的(n-1)次方

算法:

快速幂

能求高次幂

快速幂代码:

 

 

快速幂
  ll qmi(ll a,ll b){//计算a的b次方%p
ll ans=1;
while(b) {//指数不为0
	if(b&1){//指数最后一位是1 就乘上a
		ans=(ll)ans*a%p;
	}
	b=b>>1;//修改指数
	a=(ll)a*a%p;//修改底数
}
return ans;	
}

 

 

完整代码
   /*
	1.每个小朋友只能有一种爱好。并且这m种爱好可以用不完! 
	2.相邻的不能有同种爱好 -->所以合法的状态种数:m*(m-1)的(n-1)次方 
	3.所有可能数:m的n次方
	4.所以违法记录数量为m的n次方- m*(m-1)的(n-1)次方
*/ 
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll p=1e5+3;
ll qmi(ll a,ll b){//计算a的b次方%p
ll ans=1;
while(b) {
	if(b&1){
		ans=(ll)ans*a%p;
	
	}
	b=b>>1;
	a=(ll)a*a%p;
}
return ans;	
}
int main(){
	ll m,n;
	cin>>m>>n;
	ll a=qmi(m,n);
	ll b=m*qmi(m-1,n-1)%p;
	ll c=(a-b+p)%p;//担心小于0(所以处理)
	cout<<c;
	return 0;
}

5.组合0

末尾0的个数:

统计2,5的因子个数有多少

因为2*5=10,有几个10因子就末尾有几个0

 

 

分类
#include<bits/stdc++.h>
using namespace std;
int a2,a5;//2的个数,5的个数 
int f2(int a){//计算2个数 
int cnt=0; 
	while(a%2==0){
	cnt++;
	a/=2;	
	}
	return cnt;
}
int f5(int a){
	int cnt=0;
	while(a%5==0){
		cnt++;
		a/=5;
	}
	return cnt;
}
void cal(int n,int m){//Cnm
for(int i=n;i>m;i--){
	a2+=f2(i);
	a5+=f5(i);
}
for(int i=1;i<=n-m;i++){
	a2-=f2(i);
	a5-=f5(i);
}
	
}
int main(){
	int t;
	int n,m;

	cin>>t;
	while(t--){
		cin>>n>>m;
		a2=0;
		a5=0;
		cal(n,m);
		cout<<min(a2,a5)<<endl;
	}
	return 0;
}

4. 蓝泽的秘密邮件

思路:

 

完整代码
 #include<bits/stdc++.h> 
using namespace std;
typedef long long int ll;
ll check(ll a[],ll n){
	ll t=0;
	for(ll i=0;i<n;i+=2){//记录所有偶数下标对应数值的总和
		t+=a[i];
	}
	ll max1=0;//第一种情况起点奇数下标当前最大总和
	ll max2=0;//第二种情况起点偶数下标当前最大总和
	ll mx=0;//最大变化量总和
	ll j;//起点为奇数下标,交换变化 。 
	ll o;//偶数为起点下标,交换变化 
	//都是向后翻 
	for(ll i=0;i<n-1;i++){//不能到最后一个点 (因为有a[i+1])
		if(i%2==0){//起点:偶数下标
	 o=a[i+1]-a[i];
	 j=0;	
		}
		else{//起点:奇数下标 
		j=a[i]-a[i+1];
		o=0; 
		}
		max1=max(j,max1+j);//看是否需要连续,处理奇数起点。j不连续,max1+j连续
		max2=max(o,max2+o);//处理偶数起点
		mx=max(mx,max(max1,max2));//最大变化量,就是当前变化量以及奇数起点、偶数起点变化量总和最大值
	}
	return t+mx;
}
int main(){
	ll n;
	cin>>n;
	ll a[200006];
	for(ll i=0;i<n;i++){
		cin>>a[i];
	}
	cout<<check(a,n);
	return 0;
}

6. 大衣好累

考点:

最大匹配问题-->能最多匹配出几对相减非0的

就是统计出最大出现次数的相同数字maxx

所以为0的对数是:zero=maxx-m

空隙数是:kx=m-zero+1

最大匹配问题
 	int m;
	cin>>m;
	for(int i=0;i<2*m;i++){
		cin>>a[i];
	}
	sort(a,a+2*m);//从小到大排序 
	int cnt=0;//统计当前数字相同个数 
	int maxx=0;//最大个数相同数字 
	for(int i=0;i<2*m;i++) {
		if(a[i]==a[i-1]){
			cnt++;
		}
		else{
			cnt=1;//至少出现1次 
		}
		maxx=max(cnt,maxx);
	}
	int zero=maxx-m;//不匹配(即相减为0),zero指的是有几对搭配为0 
	int kx= m-zero+1;//空隙个数,减去搭配为0的对数 +1

 

完整代码
 #include<bits/stdc++.h>
using namespace std;
const int N=2e3+6;
int a[N];
void solve(){
	int m;
	cin>>m;
	for(int i=0;i<2*m;i++){
		cin>>a[i];
	}
	sort(a,a+2*m);//从小到大排序 
	int cnt=0;//统计当前数字相同个数 
	int maxx=0;//最大个数相同数字 
	for(int i=0;i<2*m;i++) {
		if(a[i]==a[i-1]){
			cnt++;
		}
		else{
			cnt=1;//至少1次 
		}
		maxx=max(cnt,maxx);
	}
	int zero=maxx-m;//不匹配(即相减为0),zero指的是有几对搭配为0 
	int kx= m-zero+1;//空隙个数,减去搭配为0的对数 +1
	//0要插入到空隙里:所以当0的个数小于等于 空隙数说明可以
	if(kx>=zero) {
		cout<<"YES"<<endl;
	}
	else{
		cout<<"NO"<<endl;
	}
}
int main(){
	int t;
	cin>>t;
	while(t--){
	solve();
	}
	return 0;
}

标签:cnt,int,ll,long,第一次,ans,次方
From: https://www.cnblogs.com/luckyhappyyaoyao/p/18672205

相关文章

  • React中Element&Fiber对象、WorkInProgress双缓存、Reconcile&Render&Commit、第一次
    基础概念Element对象与Fiber对象Element对象与Fiber对象Element对象定义React的Element对象是一个描述用户界面(UI)的普通JavaScript对象,通常由React.createElement或JSX语法生成。作用它是React应用中的一种描述UI的不可变数据结构。表示一个虚拟DOM......
  • uniapp [安卓苹果App端] - 解决uni.scanCode扫码黑屏报错问题,uniApp app平台真机运行
    前言关于此问题网上的教程都无法解决,如果您的报错信息与我相似,即可解决。在uni-appApp端(安卓APP|苹果APP)开发中,解决使用uni.scanCode调起摄像头扫码黑屏问题,uniAPP真机调试扫码一片黑并且可能有报错,有时候连续扫码时首次没问题但第二次就会黑屏没反应(退出去再进来就......
  • 复盘---我的第一次嵌入式软件工程师笔试_25/1/4
    复盘---我的第一次嵌入式软件工程师笔试_25/1/4总结​ 结果上来说,笔试的结果很差。自己三天准备的方向与实际笔试的题目偏差很大。通过网络上获取的笔试信息以及同学的经验,对比实际笔试还是有很大差异的。但根本原因还是自身的硬实力不够。有以下几个改善方向:通信协议方面,不能......
  • 记第一次DC靶场渗透
    前言:听了朋友的说渗透可以快速入门,心血来潮去刷了DC-1这个靶场,结果老实了,跟着wp做了一遍,许多不懂的地方就去搜知识点,记了个笔记也是花了1天左右的时间。顺便水一篇博客借鉴的WP:DC-1靶场搭建及渗透实战详细过程(DC靶场系列)开始渗透之旅:前置:DC靶场网上一搜就能搜到,这里就不放......
  • 蒟蒻第一次学队列
    声明:本文内容基于《算法竞赛》--罗勇军、郭卫斌。若有写得不好之处,请dalao指出,勿喷,谢谢。概念队列是一种先进先出的数据结构,具体介绍这里直接截取书上的话了。队列中的数据存取方式是“先进先出”,只能向队尾插入数据,从队头移出数据。队列的原型在生活中很常见,如食堂打饭的......
  • 第一次去春节去海南游玩攻略-看完这篇攻略就够了
    最近想带家人去海南三亚旅游,大概去5-7天,有哪些注意事项防止被坑?景点怎么玩?去过的朋友分享下省心攻略和省钱费用参考!谢谢      更新时间:3天前级别:VIP 天数:5天左右时间:春节前后人均:1000左右和谁:家人 一路生花LV.46发布于3天前   ......
  • 2025新手小白第一次准备参加护网行动,需要准备什么?
    目录第一部分:了解护网行动的背景与目的1.1护网行动的背景1.2护网行动的目的1.3护网行动的主要内容第二部分:网络安全基础知识准备2.1网络安全概念2.2网络安全的常见威胁2.3网络安全防护措施第三部分:护网行动的技术工具与方法3.1网络安全工具3......
  • 第一次参加实习,我祛魅了!
    大家好,我是程序员鱼皮,很多朋友在没有进入公司工作前,都会对工作抱有一些期待,但现实可能并没有那么理想,今天就分享一位编程导航鱼友的提问以及鱼皮的回答,让大家更了解实习的真实情况和成长方法。鱼友提问我是大专学历应届生,刚入职一家初创公司实习(公司规模很小),从事后端开发工作,......
  • 怎样把本地代码推送到码云远程仓库?第一次把本地仓库推送到远程仓库的详细步骤教程
    要将本地代码推送到码云(Gitee)远程仓库,按照以下步骤操作:1.初始化本地Git仓库gitinit在项目的根目录执行此命令,将本地项目初始化为Git仓库。2.添加所有文件并提交到本地仓库gitadd.gitcommit-m"Initialcommit"这会将项目中的所有文件添加到Git的暂......
  • Git-第一次提交
    第一次提交配置用户名和邮箱gitconfig--globaluser.name<username>gitconfig--globaluser.email<email>目录结构first-steps就是一个示例项目创建版本库版本库是用来存储项目本身及其历史的进入到first-steps目录中cdfirst-stepsgitinit提交gitaddfo......