Codeforces Round 494 (Div. 3)

目录

A. Polycarp's Pockets

B. Binary String Constructing

C. Intense Heat

D. Coins and Queries

E. Tree Constructing

F. Abbreviation


A. Polycarp's Pockets

记录数量可以直接开一个桶即可然后求最大值

void solve(){
   
    cin>>n;
    vector<int> ton(105);
    int ans=0;
    while(n--){
    	int x; cin>>x;
    	ton[x]++;
    	ans=max(ans,ton[x]);
    }
    cout<<ans<<endl;
    return ;
}

B. Binary String Constructing

先按照01010这样的方式把题目要求构造出来然后往中间插入01即可这样答案不会变化

void solve(){
   
    int a,b,n; cin>>a>>b>>n;
    vector<int> s(n+5);
    if(b>a) s[1]=1,b--;
    else a--;
    for(int i=2;i<=n+1;i++){
    	s[i]=s[i-1]^1;
    	if(s[i]) b--;
    	else a--;
    }
    for(int i=1;i<=n+1;i++){
    	cout<<s[i];
    	if(s[i]) while(b) cout<<1,b--; 
    	else while(a) cout<<0,a--;
    }
    return ;
}

C. Intense Heat

暴力前缀和统计最大平均值即可

void solve(){
   
	cin>>n>>m;
	vector<int> a(n+5);
	for(int i=1;i<=n;i++) cin>>a[i],a[i]+=a[i-1];
	
	double res=0;
	for(int i=1;i<=n;i++)
		for(int j=i+m-1;j<=n;j++)
			res=max(res,1.0*(a[j]-a[i-1])/(j-i+1));
	
	cout<<LF(7)<<res<<endl;
	
    return ;
}

D. Coins and Queries

类似二进制从大到小取满整个数即可

void solve(){
   
    cin>>n>>m;
    vector<int> cnt(33);
    for(int i=1;i<=n;i++){
    	int x; cin>>x;
    	cnt[log2(x)]++;
    }
   
    while(m--){
    	int x; cin>>x;
    	int ans=0;
    	for(int i=31;i>=0;i--){
    		int t=min(x/(1<<i),cnt[i]);
    		ans+=t;
    		x-=(1<<i)*t;
    	}
    	if(x) ans=-1;
    	cout<<ans<<endl;
    }
    return ;
}

E. Tree Constructing

构造一棵树我们可以发现如果是又满足的一定是一条直径是d的我们不妨直接把直径构造出来,然后在其中的点加入限制条件之后直接构造,注意题目的意思是构造出来的树直径就是d所以按照题目要求然后对其中的点扩充即可

vector<PII> ans;
void dfs(int u,int now,int d){
    if(now==d) return ;
    
    for(int i=1;i<=k-1-(now==0)&&cnt<n;i++){//初始进来的时候是中间节点表示以及少了两个度了
        cnt++;
        ans.push_back({u,cnt});
        dfs(cnt,now+1,d);
    }
}
void solve()
{
    cin>>n>>d>>k;
    if(n-1<d){// 表示建立不了这枚长
        cout<<"NO"<<endl;
        return ;
    }// n个点建立 n-1 为最长的直径
    
    if(k==1){// 特殊情况特殊判断
        if(n==2&&d==1){
            cout<<"YES"<<endl;
            cout<<1<<' '<<2<<endl;
        }
        else cout<<"NO"<<endl;
        return ;
    }

    for(int i=1;i<=d;i++){
        ans.push_back({i,i+1});
    }
    cnt=d+1;
    for(int i=1;i<=d+1;i++)
        dfs(i,0,min(i-1,d-i+1));// 表示当前的还可以构造的深度
    
    if(cnt<n){
        cout<<"NO"<<endl;
    }
    else{
        cout<<"YES"<<endl;
        for(auto&[a,b]:ans) cout<<a<<' '<<b<<endl;
    }
    return ;
}

F. Abbreviation

整个题目注意题目意思,以及数据范围(300-500)一般都是n^3的时间复杂度来解决,接着我们要的是找到一段相同的然后把整个里面相同的进行缩写处理,不妨先把整个用vector<string> 存储起来,接着我们要考虑的就是相同的长度是多少,接着考虑从什么位置开始,我们 由此可以设置状态

dp[i][j]表示 状态表示 以第i个结尾的 和以第j个结尾的最长相同后缀长度是多少这样就满足了什么位置开始长度是多少,接着枚举位置和长度来求解即可


vector<string> a;
void solve(){
   
   	a.push_back(" ");
	cin>>n;
	int tol=0;   
	for(int i=1;i<=n;i++){
		string s; cin>>s;
		a.push_back(s);
		tol+=s.size();
	}
	tol+=n-1;// 求出总空间需求
	int ans=tol;
	
	// 状态表示 以第i个结尾的 和以第j个结尾的最长相同后缀长度是多少
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			if(a[i]==a[j]) 
				dp[i][j]=dp[i-1][j-1]+1;
	
	
	for(int i=n;i>=1;i--){// 以i为结尾
		int sum=0;// 长度
		for(int d=1;i-d>=0;d++){
			sum+=a[i-d+1].size();
			int cnt=0;
			for(int j=i-d;j>=1;)// j开始
				if(dp[j][i]>=d){
					j-=d;
					cnt++;
				}
				else j--;
			if(cnt){
				cnt++;
				int now=tol-sum*cnt+cnt;
                //对于整个缩写减少的是字母占据的位置,同时由于空格等于字母-1所以后面还要加一个1
                // cnt 个所以要加上cnt个1
				ans=min(ans,now);
			}
		}
	}
	cout<<ans<<endl;
    return ;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Go 中如何高效遍历目录?探索几种方法

嗨&#xff0c;大家好&#xff01;我是波罗学。本文是系列文章 Go 技巧第十八篇&#xff0c;系列文章查看&#xff1a;Go 语言技巧。 目录遍历是一个很常见的操作&#xff0c;它的使用场景有如文件目录查看&#xff08;最典型的应用如 ls 命令&#xff09;、文件系统清理、日志…

FastJson反序列化漏洞(Fastjson1.2.47)

一、FastJson Fastjson 是一个阿里巴巴公司开源的 Java 语言编写的高性能功能完善的 JSON 库。可以将Java 对象转换为 JSON 格式(序列化)&#xff0c;当然它也可以将 JSON 字符串转换为 Java 对象&#xff08;反序列化&#xff09; 它采用一种“假定有序快速匹配”的算法&…

Sora-OpenAI 的 Text-to-Video 模型:制作逼真的 60s 视频片段

OpenAI 推出的人工智能功能曾经只存在于科幻小说中。 2022年&#xff0c;Openai 发布了 ChatGPT&#xff0c;展示了先进的语言模型如何实现自然对话。 随后&#xff0c;DALL-E 问世&#xff0c;它利用文字提示生成令人惊叹的合成图像。 现在&#xff0c;他们又推出了 Text-t…

Facebook的数字社交使命:连接世界的下一步

在数字化时代&#xff0c;社交媒体已成为人们生活的重要组成部分&#xff0c;而Facebook作为其中最具影响力的平台之一&#xff0c;一直以来都在努力履行着自己的使命——连接世界。然而&#xff0c;随着时代的变迁和技术的发展&#xff0c;Facebook正在不断探索着连接世界的下…

嵌入式按键处理驱动(easy_button)

简介 在嵌入式裸机开发中&#xff0c;经常有按键的管理需求&#xff0c;GitHub上已经有蛮多成熟的按键驱动了&#xff0c;但是由于这样那样的问题&#xff0c;最终还是自己实现了一套。本项目地址&#xff1a;bobwenstudy/easy_button (github.com)。 项目开发过程中参考了如…

【数据分享】中国首套1公里高分辨率大气湿度指数数据集(6个指标\免费获取)

湿度数据是气象学和许多其他领域中至关重要的数据&#xff0c;可用于气象预测与气候研究。之前我们分享过Excel格式和GIS矢量格式&#xff08;均可查看之前的文章获悉详情&#xff09;的2000-2020年全国各城市逐日、逐月和逐年的湿度数据。 本次我们给大家带来的是中国首套1公…

ElasticSearch 环境安装

ElasticSearch 安装 下载地址&#xff1a;https://www.elastic.co/downloads/past-releases#elasticsearch elasticsearch 使用的jdk说明&#xff1a; elasticsearch自带有jdk&#xff0c;如果需要使用自带的jdk则需要自定义环境变量ES_JAVA_HOME到es下的jdk目录 D:\fenbushi\e…

Linux之用户跟用户组

目录 一、简介 1.1、用户 1.2用户组 1.3UID和GID 1.4用户账户分类 二、用户 2.1、创建用户&#xff1a;useradd 2.2、删除用户&#xff1a;userdel 2.3 、修改用户 usermod 2.4、用户口令的管理:passwd 2.5、切换用户 三、用户组 3.1、增加一个用户组:groupadd 3.…

洛谷 【算法1-6】二分查找与二分答案

【算法1-6】二分查找与二分答案 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 鄙人不才&#xff0c;刷洛谷&#xff0c;迎蓝桥&#xff0c;【算法1-6】二分查找与二分答案 已刷&#xff0c;现将 AC 代码献上&#xff0c;望有助于各位 P2249 【深基13.例1】查找 - 洛谷…

开发分销商城小程序助力您的业务快速增长

一、什么是分销商城小程序&#xff1f; 分销商城小程序是一种基于微信平台开发的小程序&#xff0c;可以帮助商家快速建立自己的分销体系&#xff0c;实现商品的快速销售。 二、分销商城小程序的优势&#xff1a; 低成本&#xff1a;开发成本低&#xff0c;无需投入大量资金…

架构设计:数据库扩展

引言 随着业务的发展和用户规模的增长&#xff0c;数据库往往会面临着存储容量不足、性能瓶颈等问题。为了解决这些问题&#xff0c;数据库扩展成为了一种常见的解决方案。在数据库扩展的实践中&#xff0c;有许多不同的策略和技术可供选择&#xff0c;其中包括水平拆分、垂直…

【干货】12个开源免费的程序员简历模板

前言 昨天有小伙伴在技术群里问有没有开源的程序员简历模板&#xff0c;其实很早之前在DotNetGuide中已经有整理过&#xff0c;只是一直没有写文章推广过&#xff0c;由此有了今天这篇文章&#xff0c;假如大家有更好的免费简历模板资源欢迎大家在文章评论区留言✌。 公众号回…

Jenkins使用遇到的一些问题

一&#xff1a;插件依赖报错 比如遇到一堆插件报错&#xff0c;不是提示版本对不上&#xff0c;就是启用不了 这样直接把Jenkins升级就行了&#xff0c;比如我这个是命令行启动的&#xff0c;直接把他替换就好了 如果是遇到插件依赖报错&#xff0c;比如A插件异常 则点击这个插…

冒泡排序改进方案

冒泡排序 BubbleSort 冒泡排序是一种比较简单的 稳定排序 算法&#xff0c;效率不高&#xff0c;因此实际当中用到的机会并不多。但 作为快速排序算法的基础&#xff0c;还是有必要了解一下。 顾名思义&#xff0c;冒泡就是指大的数字&#xff08;气泡&#xff09;会优先从底部…

Java毕业设计-基于jsp+servlet的图书管理系统-第66期

获取源码资料&#xff0c;请移步从戎源码网&#xff1a;从戎源码网_专业的计算机毕业设计网站 项目介绍 基于jspservlet的图书管理系统&#xff1a;前端jsp、jquery&#xff0c;后端 servlet、jdbc&#xff0c;集成图书管理、图书分类管理、图书借阅、图书归还、公告、读者等…

linux前端部署

安装jdk 配置环境变量 刷新配置文件 source profile source /etc/profile tomcat 解压文件 进去文件启动tomcat 开放tomcat的端口号 访问 curl localhsot:8080 改配置文件 改IP,改数据库名字&#xff0c;密码&#xff0c; 安装数据库 将war包拖进去 访问http:…

软件版本号解读(语义化SemVer、日历化CalVer及标识符)

1. 版本控制规范 1.1. 语义化版本&#xff08;SemVer&#xff09; 版本格式&#xff1a;主版本号.次版本号.修订号&#xff0c;版本号递增规则&#xff1a; 主版本号(MAJOR version)&#xff1a;添加了不兼容的 API 修改&#xff0c;次版本号(MINOR version)&#xff1a;添加…

多维时序 | Matlab实现CPO-BiTCN-BiGRU冠豪猪优化时间卷积神经网络双向门控循环单元多变量时间序列预测模型

多维时序 | Matlab实现CPO-BiTCN-BiGRU冠豪猪优化时间卷积神经网络双向门控循环单元多变量时间序列预测模型 目录 多维时序 | Matlab实现CPO-BiTCN-BiGRU冠豪猪优化时间卷积神经网络双向门控循环单元多变量时间序列预测模型预测效果基本介绍程序设计参考资料 预测效果 基本介绍…

XUbuntu22.04之解决:systemd-journald占用cpu过高问题(二百一十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

具有准电阻负载阻抗的带宽增强型 Doherty 功率放大器(2023.05 MTT)--从理论到ADS版图

具有准电阻负载阻抗的带宽增强型 Doherty 功率放大器(2023.05 MTT)–从理论到ADS版图 原文: Bandwidth-Enhanced Doherty Power Amplifier With Optimized Quasi-Resistive Power-Combing Load Impedance 发表于APRIL 2023&#xff0c;在微波顶刊IEEE T MTT上面&#xff0c;使…