Codeforces Round 486 (Div. 3)

news2024/11/25 2:34:46

目录

A. Diverse Team

B. Substrings Sort

C. Equal Sums

D. Points and Powers of Two

E. Divisibility by 25

F. Rain and Umbrellas


A. Diverse Team

 找出不重复的同时存下下标即可,依次遍历map判断重复最后判断数量即可

void solve(){
   
    cin>>n>>m;
    map<int,int> mp;
    vector<int> res;
    for(int i=1;i<=n;i++){
    	int x; cin>>x;
    	if(!mp.count(x))res.push_back(i);
    	mp[x]++;
    }
    if(res.size()<m) cout<<"NO"<<endl;
    else{
    	cout<<"YES"<<endl;
    	for(int i=0;i<m;i++) cout<<res[i]<<' ';
    	cout<<endl;
    }
    return ;
}

B. Substrings Sort

如果前一个是后一个的字串那么后一个的长度一定大于等于前一个,所以我没按照长度排序最后检查是不是满足都是字串即可

bool cmp(string a,string b){
	return a.size()<b.size();
}
void solve(){
    
    cin>>n;
    vector<string> s(n);
    for(auto&v:s) cin>>v;
    sort(s.begin(),s.end(),cmp);
    
    bool ok=true;
    for(int i=0;i<n;i++){
    	for(int j=i+1;j<n;j++){
    		if(s[j].find(s[i])==-1) ok=false;
    	}
    }
    if(!ok) cout<<"NO"<<endl;
    else{
    	cout<<"YES"<<endl;
    	for(auto&v:s) cout<<v<<endl;
    }
    return ;
}

C. Equal Sums

我没对删除每一个位置的数的结果记录起来用map记录前面的方案即可,为了防止自己这一排我没使用先遍历自己的答案最后把自己的加入即可

void solve(){
   
    cin>>n;
    bool ok=false;
    
    map<LL,PII> mp;
    for(int i=1;i<=n;i++){
    	cin>>m;
    	vector<int> a(m);
    	LL sum=0;
    	for(int j=0;j<m;j++){
    		cin>>a[j];
    		sum+=a[j];
    	}
    	if(ok) continue;
    	for(int j=0;j<m;j++){
    		if(mp.count(sum-a[j])){
    			ok=true;
    			cout<<"YES"<<endl;
    			auto [pos,id]=mp[sum-a[j]];
    			cout<<pos<<' '<<id<<endl;
    			cout<<i<<' '<<j+1<<endl;
    			break;
    		}
    	}
    	for(int j=0;j<m;j++){
    		mp[sum-a[j]]={i,j+1};
    	}
    }
    if(!ok) cout<<"NO"<<endl;
    return ;
}

D. Points and Powers of Two

我没研究性质可以发现其实最多只有三个不同的数出现因为如果还有更多的数的话一定不会是2的次方我们考虑三个数x-2^d,x,x+2^d,如果再加入一个数明显不成立所以最多三种我们不妨考虑枚举中间位置的数,然后枚举二进制即可

void solve(){
   
    cin>>n;
    map<int,int> mp;
    for(int i=0;i<n;i++){
    	int x; cin>>x;
    	mp[x]++;
    }
    int ans=0,id,pw;
    for(auto&[v,w]:mp){
    	for(int j=1,cnt=1;cnt<=31;cnt++,j*=2){
    		int now=w;
    		if(mp.count(v-j)) now+=mp[v-j];
    		if(mp.count(v+j)) now+=mp[v+j];
    		if(now>ans){
    			ans=now;
    			id=v,pw=j;
    		}
    	}
    }
    cout<<ans<<endl;
    while(mp.count(id) && mp[id]--) cout<<id<<' ';
    while(mp.count(id+pw) && mp[id+pw]--) cout<<id+pw<<' ';
    while(mp.count(id-pw) && mp[id-pw]--) cout<<id-pw<<' ';
    return ;
}

E. Divisibility by 25

25的倍数一定是25,50,75,00作为结尾,我们考虑依次移动到后面即可,接着发现可能会出现00的情况我们假设最后是00375我们可以把3移动到最前面即可所以加入一个特判即可

int ans=1e9;
void check(char a,char b){
	string ss(s);
	reverse(ss.begin(),ss.end());
	int cnt=0;
	for(int i=0;i<ss.size();i++){
		if(ss[i]==b){
			cnt+=i;
			
			for(int j=i;j>0;j--){
				swap(ss[j],ss[j-1]);
			}
			break;
		}
	}
	for(int i=1;i<ss.size();i++){
		if(ss[i]==a){
			cnt+=i-1;
			for(int j=i;j>1;j--){
				swap(ss[j],ss[j-1]);
			}
			break;
		}
	}
	reverse(ss.begin(),ss.end());
	bool ok=false;
	for(int i=0;i<ss.size();i++){
		if(ss[i]!='0'){
			ok=true;
			cnt+=i;
			break;
		}
	}
	if(!ok) cnt=1e9;
	ans=min(ans,cnt);
}
void solve(){
   
    cin>>s;
    vector<int> cnt(10);
    for(auto&v:s) cnt[v-'0']++;
    
    if(cnt[2]>=1 && cnt[5]>=1) check('2','5');
	
    if(cnt[5]>=1 && cnt[0]>=1) check('5','0');
   
    if(cnt[7]>=1 && cnt[5]>=1) check('7','5');
  
    if(cnt[0]>=2) check('0','0');
    cout<<(ans==1e9 ? -1 : ans)<<endl;
    return ;        
}

F. Rain and Umbrellas

我们明显的可以考虑到dp,有些时候我们可以简单的思考问题我的上一个状态是前面的所有状态还是可以简化位就上一个位置的状态这里明显可以这样来思考这个问题,我们必须要从合法的状态转移过来,也就是我在第i个点手上拿着第几个伞,第0个表示没有伞,然后判断我上一个位置有没有伞我这个位置有没有雨来转移

int dp[M][M];// 表示到第i个点时用的是第j个位置的雨伞// 0 表示现在没有伞
int cho[M];
int w[M];
int rain[M];
int S;
 
void solve()
{
	cin>>S>>n>>m;
	
	for(int i=1;i<=n;i++){
		int l,r; cin>>l>>r;
		for(int j=l+1;j<=r;j++)
			rain[j]=1;// 表示这个位置在下雨
	}	 
	w[0]=INF;
	
	for(int i=1;i<=m;i++){
		int v; cin>>v>>w[i];
		if(w[i]<=w[cho[v]]) cho[v]=i;
	}// 表示记录下来每一个位置的雨伞的权重,以及每一个雨伞在什么位置
	
	memset(dp,0x3f,sizeof dp);
	
	dp[0][0]=0;
	
	for(int i=1;i<=S;i++){
		for(int j=0;j<=m;j++){
			if(!rain[i]){// 如果我这个位置没有雨直接扔掉伞
				dp[i][0]=min(dp[i][0],dp[i-1][j]);
			}
			// 表示我接着用上一个位置的伞
			dp[i][j]=min(dp[i][j],dp[i-1][j]+w[j]);
			if (cho[i-1]){// 对于这个位置的上一个位置有伞换一手
                dp[i][cho[i-1]]=min(dp[i][cho[i-1]],dp[i-1][j]+w[cho[i-1]]);
            }
		}
	}
	
	int ans=INF;
	
	for(int i=0;i<=m;i++) ans=min(ans,dp[S][i]);
	
	cout<<(ans==INF ? -1 : ans)<<endl;
    return ;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1452466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

太炸了!Sora深夜发布!网友:我要失业了

2022年末&#xff0c;OpenAI聊天机器人ChatGPT的面世无疑成为了引领人工智能浪潮的标志性事件&#xff0c;宣告了新一轮科技革命的到来。无论是聊天娱乐、教育学习&#xff0c;还是工作生产、医疗健康等领域&#xff0c;人工智能正以前所未有的速度渗透到我们生活的方方面面。 …

ClickHouse--10--临时表、视图、向表中导入导出数据

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.临时表1.1 特征1.2 创建一个临时表 2.视图2.1 普通视图2.2 物化视图 3.向表中导入导出数据3.1 案例 1.临时表 1.1 特征 ClickHouse 支持临时表&#xff0c;临时表…

【网站项目】154智能无人仓库管理

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【图论】2-SAT

参考资料&#xff1a;2-SAT学习笔记 什么是2-SAT问题呢&#xff1f; (a∨b∨c)∧(a∨b∨c)∧(a∨b∨c)&#xff0c;给出一个类似于这样的式子&#xff0c;让你找出满足条件的一个解&#xff0c;这样的问题就是SAT问题&#xff0c;因为每一个括号内都有三个被限制的变量&#…

人工智能学习与实训笔记(七):神经网络之模型压缩与知识蒸馏

人工智能学习笔记汇总链接&#xff1a;人工智能学习与实训笔记汇总-CSDN博客 本篇目录 七、模型压缩与知识蒸馏 7.1 模型压缩 7.2 知识蒸馏 7.2.1 知识蒸馏的原理 7.2.2 知识蒸馏的种类 7.2.3 知识蒸馏的作用 七、模型压缩与知识蒸馏 出于对响应速度&#xff0c;存储大…

算法刷题:无重复字符的最长字串

无重复字符的最长字串 .题目链接题目详情算法原理题目解析滑动窗口定义指针进窗口判断出窗口更新结果 我的答案 . 题目链接 无重复字符的最长字串 题目详情 算法原理 题目解析 首先,为了使字符串遍历的更加方便,我们选择将字符串转换为数组 题目要求子串中不能有重复的字符…

MessageQueue --- RabbitMQ

MessageQueue --- RabbitMQ RabbitMQ IntroRabbitMQ 核心概念RabbitMQ 分发类型Dead letter (死信)保证消息的可靠传递 RabbitMQ Intro 2007年发布&#xff0c;是一个在AMQP&#xff08;高级消息队列协议&#xff09;基础上完成的&#xff0c;可复用的企业消息系统&#xff0c;…

Pandas:DataFrame的完整指南【第82篇—DataFrame】

Pandas&#xff1a;DataFrame的完整指南 Pandas是Python中最流行的数据处理库之一&#xff0c;而其中的DataFrame对象是数据处理的核心。DataFrame为我们提供了一个强大而灵活的数据结构&#xff0c;使得数据的清洗、分析和可视化变得更加简便。在本文中&#xff0c;我们将深入…

旅游出门千万别忘带这些!花的不多,享受翻倍!随身wifi看这篇,高性价比高口碑随身wifi推荐

春节长假&#xff0c;大家都去哪儿玩了呢&#xff1f;我反正带着我的小背包&#xff0c;走遍了祖国的大好河山&#xff01; 得益于之前几次长假出行的经验&#xff0c;这次出行体验十分完美。除了详细完备的出行攻略&#xff0c;还有就是一些出行好物&#xff0c;虽然不起眼&am…

采购平台架构设计和实现的实战总结

当代企业日益重视采购管理的有效性和高效性&#xff0c;而采购平台的架构设计和实现则成为实现这一目标的关键。本文将探讨采购平台架构设计的重要性、关键原则以及实施过程中需要考虑的要点&#xff0c;帮助企业构建强大的采购平台&#xff0c;提升采购管理效率和效果。 ### 1…

在PyTorch中,如何查看深度学习模型的每一层结构?

这里写目录标题 1. 使用print(model)2. 使用torchsummary库3.其余方法&#xff08;可以参考&#xff09; 在PyTorch中&#xff0c;如果想查看深度学习模型的每一层结构&#xff0c;可以使用print(model)或者model.summary()&#xff08;如果你使用的是torchsummary库&#xff0…

Arrays工具类的常见方法总结

一、Arrays.asList( ) 1、作用 Arrays.asList( )可以将一个数组以集合的形式传入一个集合对象。通常用来将一组元素全部添加到集合中。 2、参数及返回值 参数&#xff1a;一组动态参数 返回值&#xff1a;List<T>集合 3、应用举例 List<String> boyListArra…

什么是智慧公厕,智慧公厕有哪些功能

1.什么是智慧公厕&#xff1f; 随着智慧城市的快速发展&#xff0c;公共厕所作为城市基础设施的一部分&#xff0c;也在逐步升级转型。那么&#xff0c;什么是智慧公厕&#xff1f;智慧公厕作为智慧城市的重要组成部分&#xff0c;将公共厕所的建设、设计、使用、运营和管理等…

深入解析鸿蒙系统的页面路由(Router)机制

鸿蒙系统以其独特的分布式架构和跨设备的统一体验而备受瞩目。在这个系统中&#xff0c;页面路由&#xff08;Router&#xff09;机制是连接应用各页面的关键组成部分。本文将深入探讨鸿蒙系统的页面路由&#xff0c;揭示其工作原理、特点以及在应用开发中的实际应用。 1. 实现…

同比跌超39%!春节楼市进一步冷却

楼市偏冷的基调延续。今年春节假期楼市热度进一步冷却。从各线城市的销售面积来看&#xff0c;正月初一至初六&#xff0c;30城楼市商品房平均成交面积继续下滑至2019年以来新低&#xff0c;较去年下滑39.2%&#xff0c;其中一线、三线均呈现大幅下滑&#xff0c;而二线城市成交…

Python算法题集_验证二叉搜索树

Python算法题集_验证二叉搜索树 题98&#xff1a;验证二叉搜索树1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【DFS递归】2) 改进版一【DFS递归终止检测】3) 改进版二【BFS迭代终止检测】 4. 最优算法 本文为Python算法题集之一的代码示例 题…

vue-ESlint (六)

代码规范 代码规范&#xff1a;一套写代码的约定规则。例如&#xff1a;"赋值符号的左右是否需要空格" "一句结束是否是要加;" . 老话说&#xff1a;"没有规矩不成方圆" → 正规的团队 需要 统一的编码风格 JavaScript Standard Style 规范说…

Linux文件操作类命令 touch | stat | cp | scp | alias | mv | dd | cat | head | tail

touch 1.创建空文件&#xff08;只有元数据信息&#xff0c;没有数据段内容&#xff09;touch 1.txt 2.对创建或已经存在的文件改变元数据信息的时间记录值-d 改变创建时间touch -d 20240101 1.txt -a改变访问时间 -m改变修改时间stat 查看元数据信息 Blocks是512字…

【CV论文精读】【BEV感知】BEVFormer:通过时空Transformer学习多摄像机图像的鸟瞰图表示

【CV论文精读】BEVFormer Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers BEVFormer&#xff1a;通过时空Transformer学习多摄像机图像的鸟瞰图表示 图1&#xff1a;我们提出了BEVFormer&#xff0c;这是一种自动驾驶的…

2024年最新onlyfans虚拟信用卡订阅教程

一、Onlyfans是什么&#xff1f; OnlyFans是一个允许创作者分享自己的独家内容的平台&#xff0c;简称o站。这个平台允许创作者创建一个订阅服务&#xff0c;粉丝需要支付费用才能访问其独家内容。 本文将教你如何使用虚拟卡在OnlyFans上进行充值。 二、如何使用虚拟卡支付 O…