Codeforces Round 928 (Div. 4)

news2024/9/22 5:36:35

目录

A. Vlad and the Best of Five

B. Vlad and Shapes

C. Vlad and a Sum of Sum of Digits

D. Vlad and Division

E. Vlad and an Odd Ordering

F. Vlad and Avoiding X

G. Vlad and Trouble at MIT


A. Vlad and the Best of Five

我们可以使用string中的count函数来查询数量

void solve(){
   
    string a; cin>>a;
    cout<<(count(a.begin(),a.end(),'A')>=3 ? 'A' : 'B')<<endl;
    return ;
}

B. Vlad and Shapes

判断由1组合成的图形是正方形还是三角形,对于这两个图案我们发现正方形是有规律的可以考虑找到图中1的最远的四个角,如果是正方形的话里面就是都是满的也就是满足四个最大方位形成正方形的面积反之为三角形

void solve(){
   
    cin>>n;
    int ans=0;
    int x1=n+1,x2=-1,y1=n+1,y2=-1;
    for(int i=1;i<=n;i++)
    	for(int j=1;j<=n;j++){
    		char x; cin>>x;
    		if(x=='1'){
    			ans++;
    			x1=min(x1,i);
    			x2=max(x2,i);
    			y1=min(y1,j);
    			y2=max(y2,j);
    		}
    	}
    cout<<((y2-y1+1)*(x2-x1+1)== ans ? "SQUARE" : "TRIANGLE")<<endl;
    return ;
}

C. Vlad and a Sum of Sum of Digits

我们观察和发现数据范围只有2e5也就是说我们可以直接使用预处理每一个数的方式来计算,每次查询就是o(1)的

int check(int x){
	int res=0;
	while(x){
		res+=x%10;
		x/=10;
	}
	return res;
}
void intn(){
	for(int i=1;i<N;i++){
		ans[i]=check(i)+ans[i-1];
	}
}
void solve(){
   
    cin>>n;
    cout<<ans[n]<<endl;
    return ;
}

D. Vlad and Division

我们来分组计算每一个个组中的两个数的二进制位互不相同,也就是说我们一个组中最多两个数

我们直接用map存起来然后判断是否有他的对应数出现即可,同时标记这个数是否被前面的数给使用组合了,找对应数使用位运算中的异或

LL p=(1ll<<31)-1;
void solve(){
   
    cin>>n;
   
    map<LL,int> mp,st;
    
    for(int i=1;i<=n;i++){
    	LL x; cin>>x;
    	mp[x]++;
    }
    int res=0;
    for(auto&[v,w]:mp){
    	if(st.count(v)) continue;

    	if(mp.count(p^v)){
    		res+=max(w,mp[p^v]);
    		st[p^v]++;
  
    	}
    	else res+=w;
    }
    cout<<res<<endl;
    return ;
}

E. Vlad and an Odd Ordering

依照题目意思我们进行对20模拟,同时思考可以知道一开始我们删除了所有的奇数,奇数*奇数=奇数,那么接下来只有偶数的删除才会有用同时如果不是2的幂次的话其他偶数都是可以由奇数*偶数得到的也就是前面的偶数就已经判断过了,所以,只有2的幂次才有删除作用,接着对于2的幂次我们看有多少在其中\frac{n}{2^i}中有一部分是偶数被前面的删除了,所以要除以2然后依次变化即可找到不可以变化的即可

void solve(){
   
    cin>>n>>m;
    if(2*m-1<=n){
    	cout<<2*m-1<<endl;
    }
    else{
    	m-=(n+1)/2;
    	for(LL i=2;i<=n;i*=2){
    		LL x = (n/i+1)/2;
    		if(m>x){
    			m-=x;
    		}
    		else{
    			LL ans= i * (2*m-1);
    			cout<<ans<<endl;
    			return ;
    		}
    	}
    }
    return ;
}

F. Vlad and Avoiding X

我们要的是删除一个x我们发现数据范围只有49同时肯定不会在边上也就是25,这个时候我们看是不是可以使用dfs,我们找一下有没有剪枝的性质,我们是从左上角开始的,也就是说对后面有影响的只有中间左下右下,同时使用最优性剪枝世家九年复杂度就ok了

void solve(){
   
    n=7;
    for(int i=1;i<=n;i++)
    	for(int j=1;j<=n;j++)
    		cin>>s[i][j];
    		
    int ans=n*n;
    int dx[]={0,1,1},dy[]={0,-1,1};	
    	
    auto dfs = [&](auto dfs,int sum){
    	if(sum>ans) return ;
     	for(int i=2;i<n;i++)
    		for(int j=2;j<n;j++)
    			if(s[i][j]=='B' && s[i-1][j-1]=='B' && s[i-1][j+1]=='B' && s[i+1][j-1]=='B' && s[i+1][j+1]=='B' ){
    				for(int u=0;u<3;u++){
    					int x=i+dx[u],y=j+dy[u];
    					s[x][y]='W';
    					dfs(dfs,sum+1);
    					s[x][y]='B';
    				}
    				return ;
    			}
    	ans=sum;
    	return ;			
    };
  	dfs(dfs,0);
    cout<<ans<<endl;
    return ;
}

G. Vlad and Trouble at MIT

注意题目告诉我们这是一棵树所以我们要使用树上的知识来处理由小问题向上传递,考虑使用

0/1/2代替C/P/S,对于最后的节点如果我是C那么我要看我字节点的P,S的数量取其中最少的,那我如何向上传递呢? 假设cnt[1]>cnt[2]那么我先把2的处理我此时此刻的C中还有1没有处理完代表1,反之代表2,如果相等的话依旧代表0可以依照上面的情况来变化向谁建墙,由此向上回溯,如果是P/S就是明显的直接加上对方的即可

vector<int> g[N];
char s[N];
void solve(){
    cin>>n;
    for(int i=1;i<=n;i++) g[i].clear();
    for(int i=2;i<=n;i++){
    	int x; cin>>x;
    	g[x].push_back(i);
    	g[i].push_back(x);
    }
    for(int i=1;i<=n;i++) cin>>s[i];
    
    vector<int> dp(n+1);
    
    int ans=0;
    
    auto dfs = [&](auto dfs,int u,int fa){
    	vector<int> cnt(3);
    	if(g[u].size()==1 && u!=1){
    		if(s[u]=='P') dp[u]=1;
    		else if(s[u]=='S') dp[u]=2;
    		return ;
    	}
    	for(auto&v:g[u]){
    		if(v==fa) continue;
    		dfs(dfs,v,u);
    		cnt[dp[v]]++;
    	}
    	if(s[u]=='C'){
    		ans+=min(cnt[1],cnt[2]);
    		if(cnt[1]==cnt[2]){
    			dp[u]=0;
    		}
    		else if(cnt[1]>cnt[2]){
    			dp[u]=1;
    		}
    		else dp[u]=2;
    	}
    	else if(s[u]=='P'){
    		ans+=cnt[2];
    		dp[u]=1;
    	}
    	else{
    		ans+=cnt[1];
    		dp[u]=2;
    	}
    };
    dfs(dfs,1,-1);
    cout<<ans<<endl;
    return ;
}

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

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

相关文章

cmd命令开启windows桌面远程控制并设置防火墙允许远程

cmd命令开启桌面远程控制 1、开启之前&#xff1a; 2、使用管理员身份运行cmd 3、执行cmd命令 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Control\Terminal server" /v fDenyTSConnections /t REG_DWORD /d 0 /f4、如果这台电脑的防火墙打开&#xff…

#LLM入门|Prompt#1.8_聊天机器人_Chatbot

聊天机器人设计 以会话形式进行交互&#xff0c;接受一系列消息作为输入&#xff0c;并返回模型生成的消息作为输出。原本设计用于简便多轮对话&#xff0c;但同样适用于单轮任务。 设计思路 个性化特性&#xff1a;通过定制模型的训练数据和参数&#xff0c;使机器人拥有特…

Redis中的AOF重写到底是怎么一回事

首先我们知道AOF和RDB都是Redis持久化的方法。RDB是Redis DB&#xff0c;一种二进制数据格式&#xff0c;这样就是相当于全量保存数据快照了。AOF则是保存命令&#xff0c;然后恢复的时候重放命令。 AOF随着时间推移&#xff0c;会越来越大&#xff0c;因为不断往里追加命令。…

WooCommerce商品采集与发布插件

如何采集商品或产品信息&#xff0c;并自动发布到Wordpress系统的WooCommerce商品&#xff1f; 推荐使用简数采集器&#xff0c;操作简单方便&#xff0c;且无缝衔接WooCommerce插件&#xff0c;快速完成商品的采集与发布。 简数采集器的智能自动生成采集规则和可视化操作功能…

Linux第62步_备份移植好的所有的文件和文件夹

1、备份“my-tfa”目录下所有的文件和文件夹 1)、打开终端 输入“ls回车”&#xff0c;列出当前目录下所有的文件和文件夹 输入“cd linux回车”&#xff0c;切换“linux”目录下 输入“ls回车”&#xff0c;列出当前目录下所有的文件和文件夹 输入“cd atk-mp1/回车”&am…

Nginx -2

接着上文写 5.4.7 验证模块 需要输入用户名和密码 模块名称&#xff1a;ngx_http_auth_basic_module 访问控制基于模块 ngx_http_auth_basic_module 实现&#xff0c;可以通过匹配客户端资源进行限制 语法&#xff1a; Syntax: auth_basic string | off; Default: auth_ba…

React 模态框的设计(二)

自定义组件是每个前端开发者必备的技能。我们在使用现有框架时难免有一些超乎框架以处的特别的需求&#xff0c;比如关于弹窗&#xff0c;每个应用都会用到&#xff0c;但是有时我们使用的框架中提供的弹窗功能也是功能有限&#xff0c;无法满足我们的应用需求&#xff0c;今天…

wondows10用Electron打包threejs的项目记录

背景 电脑是用的mac&#xff0c;安装了parallels desktop ,想用electron 想同时打包出 苹果版本和windows版本。因为是在虚拟机里安装&#xff0c;它常被我重装&#xff0c;所以记录一下打包的整个过程。另外就是node生态太活跃&#xff0c;几个依赖没记录具体版本&#xff0…

【开源】SpringBoot框架开发音乐平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首音乐4.2 新增音乐4.3 新增音乐订单4.4 查询音乐订单4.5 新增音乐收藏 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的音乐平台&#xff0c;包含了音乐…

如何在java中使用 Excel 动态函数生成依赖列表

前言 在Excel 中&#xff0c;依赖列表或级联下拉列表表示两个或多个列表&#xff0c;其中一个列表的项根据另一个列表而变化。依赖列表通常用于Excel的业务报告&#xff0c;例如学术记分卡中的【班级-学生】列表、区域销售报告中的【区域-国家/地区】列表、人口仪表板中的【年…

Leetcoder Day17| 二叉树 part06

语言&#xff1a;Java/C 654.最大二叉树 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。 …

petalinux_zynq7 驱动DAC以及ADC模块之六:qt显示adc波形

前文&#xff1a; petalinux_zynq7 C语言驱动DAC以及ADC模块之一&#xff1a;建立IPhttps://blog.csdn.net/qq_27158179/article/details/136234296petalinux_zynq7 C语言驱动DAC以及ADC模块之二&#xff1a;petalinuxhttps://blog.csdn.net/qq_27158179/article/details/1362…

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁

PublishFolderCleaner – Github 测试环境: .Net 8 Program.cs 代码 // https://github.com/dotnet-campus/dotnetcampus.DotNETBuildSDK/tree/master/PublishFolderCleanerusing System.Diagnostics; using System.Text;// 名称, 不用写 .exe var exeName "AbpDemo&…

.Net8.0 WebApi 发布到 IIS 详细步骤

.NET 8 是微软于2021年8月24日宣布的下一代编程语言和框架&#xff0c;它是 .NET 的一部分&#xff0c;与 C# (Common Language Infrastructure) 紧密集成。.NET 8 引入了许多新功能&#xff0c;如原生编译、值类型 (Value Types)、结构化并发 (structured concurrency) 和快速…

Window部署Exceptionless

Exceptionless Elasticsearch 版本&#xff1a; Exceptionless&#xff1a;8.1.0 Elasticsearch&#xff1a;7.17.5 JDK&#xff1a;11.0.10 目录 一、Elasticsearch运行 二、 Exceptionless 一、Elasticsearch运行 bin目录下elasticsearch.bat 直接运行 访问 http://lo…

【AIGC】基于深度学习的图像生成与增强技术

摘要&#xff1a; 本论文探讨基于深度学习的图像生成与增强技术在图像处理和计算机视觉领域的应用。我们综合分析了主流的深度学习模型&#xff0c;特别是生成对抗网络&#xff08;GAN&#xff09;和变分自编码器&#xff08;VAE&#xff09;等&#xff0c;并就它们在实际应用中…

Python Web开发记录 Day2:CSS

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 二、CSS1、CSS-初始入门①快速了解②CSS应用方式…

(3)llvm ir转换过程

&#xff08;1&#xff09;DAG Lowering 输入的IR转换成SelectionDAG的过程被称作lowering 就是把llvm ir转成这种 &#xff08;2&#xff09;DAG legalization "DAG legalization"&#xff08;有向无环图合法化&#xff09;是编译器后端&#xff0c;特别是在LLVM中…

React18源码: reconciler执行流程

reconciler执行流程 1 &#xff09;概述 此处先归纳一下react-reconciler包的主要作用&#xff0c;将主要功能分为4个方面&#xff1a; 输入&#xff1a;暴露api函数&#xff08;如&#xff1a;scheduleUpdateOnFiber&#xff09;, 供给其他包&#xff08;如react包&#xff0…