Codeforces Round 928 (Div. 4)

目录

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.mfbz.cn/a/402993.html

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

相关文章

《VitePress 简易速速上手小册》第8章 安全性与部署(2024 最新版)

文章目录 8.1 安全最佳实践8.1.1 基础知识点解析8.1.2 重点案例&#xff1a;个人博客8.1.3 拓展案例 1&#xff1a;在线商店8.1.4 拓展案例 2&#xff1a;企业网站 8.2 部署到 GitHub Pages 和其他平台8.2.1 基础知识点解析8.2.2 重点案例&#xff1a;个人博客部署到 GitHub Pa…

时序预测demo 代码快速实现 MLP效果比LSTM 好,简单模拟数据

【PyTorch修炼】用pytorch写一个经常用来测试时序模型的简单常规套路&#xff08;LSTM多步迭代预测&#xff09; 层数的理解&#xff1a; LSTM&#xff08;长短期记忆&#xff09;的层数指的是在神经网络中堆叠的LSTM单元的数量。层数决定了网络能够学习的复杂性和深度。每一层…

SQL- left join 与group by联合使用实例

表&#xff1a;Visits ---------------------- | Column Name | Type | ---------------------- | visit_id | int | | customer_id | int | ---------------------- visit_id 是该表中具有唯一值的列。 该表包含有关光临过购物中心的顾客的信息。表&#xff1a…

Docker容器与虚拟化技术:kylin 部署 docker容器应用

目录 一、实验 1.环境 2. kylin 部署 docker及版本升级 3.kylin 部署docker镜像加速 4.kylin 部署 nginx容器应用 5.kylin使用docker容器部署mysql实现数据持久化 6.kylin使用docker容器部署nginx实现配置文件持久化到本地 7.kylin 使⽤ docker 部署容器可视化平台porta…

【青龙】快速搭建青龙面板,部署属于你自己的应用!

青龙面板是一个支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台。 废话不多说&#xff0c;直接开始。 这里使用一台 雨云 的云服务器作为演示。雨云注册地址&#xff1a;https://www.rainyun.com/ 优惠码&#xff1a;lz932 使用优惠码注册后绑定微信可获得8折…

Spring框架@Autowired注解进行字段时,使用父类类型接收子类变量,可以注入成功吗?(@Autowired源码跟踪)

一、 前言 平常我们在使用spring框架开发项目过程中&#xff0c;会使用Autowired注解进行属性依赖注入&#xff0c;一般我们都是声明接口类型来接收接口实现变量&#xff0c;那么使用父类类型接收子类变量&#xff0c;可以注入成功吗&#xff1f;答案是肯定可以的&#xff01;…

从零学习Linux操作系统第二十七部分 shell脚本中的变量

一、什么是变量 变量的定义 定义本身 变量就是内存一片区域的地址 变量存在的意义 命令无法操作一直变化的目标 用一串固定的字符来表示不固定的目标可以解决此问题 二、变量的类型及命名规范 环境级别 export A1 在环境关闭后变量失效 退出后 关闭 用户级别&#xff…

Java项目:24 基于SpringBoot+freemarker实现的人事管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 基于SpringBootfreemarker实现的人事管理系统分为七大模块&#xff1a;绩效考核&#xff0c;招聘管理&#xff0c;档案管理&#xff0c;工资管…

Marin说PCB之如何使用mentor--xpedition-Valor软件做gerber_compare

首先打开mentro_xpedition,自带的Valor软件。 2&#xff0c;在File栏中选择import---odb。 3&#xff0c;导入生成的DOB文件。 4&#xff0c;在这个界面下再重新导入一份之前的参考板的ODB文件进来。 5&#xff0c;接着点击STEPS---board,这样单板的数据就被调进来了。 6&#…

《剑指Offer》笔记题解思路技巧优化_Part_6

《剑指Offer》笔记&题解&思路&技巧&优化_Part_6 &#x1f60d;&#x1f60d;&#x1f60d; 相知&#x1f64c;&#x1f64c;&#x1f64c; 相识&#x1f622;&#x1f622;&#x1f622; 开始刷题&#x1f7e1;1.LCR 168. 丑数—— 丑数&#x1f7e2;2. LCR 16…

2022蓝帽杯取证初赛

检材&#xff1a;https://pan.baidu.com/s/1ibOdxyCWeC5x0DQKjwcz7w?pwdvg6g 目录 手机取证1、627604C2-C586-48C1-AA16-FF33C3022159.PNG图片的分辨率是&#xff1f;&#xff08;答案参考格式&#xff1a;19201080&#xff09;2、姜总的快递单号是多少&#xff1f;&#xff0…

C++学习Day09之异常变量的生命周期

目录 一、程序及输出1.1 throw MyException()------catch (MyException e)1.2 throw MyException()------catch (MyException &e)1.3 throw &MyException()------catch (MyException *e)1.4 throw new MyException()------catch (MyException *e) 二、分析与总结 一、程…

QT3作业

1 2. 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数&#xff0c;将登录按钮使用t5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#…

【C++初阶】系统实现日期类

目录 一.运算符重载实现各个接口 1.小于 (d1)<> 2.等于 (d1d2) 3.小于等于&#xff08;d1<d2&#xff09; 4.大于&#xff08;d1>d2&#xff09; 5.大于等于&#xff08;d1>d2&#xff09; 6.不等于&#xff08;d1!d2&#xff09; 7.日期天数 (1) 算…

顺序表详解(如何实现顺序表)

文章目录 前言 在进入顺序表前&#xff0c;我们先要明白&#xff0c;数据结构的基本概念。 一、数据结构的基本概念 1.1什么是数据结构 数据结构是由“数据”和“结构”两词组合而来。所谓数据就是&#xff1f;常见的数值1、2、3、4.....、姓名、性别、年龄&#xff0c;等。…

学习总结22

解题思路 简单模拟。 代码 #include <bits/stdc.h> using namespace std; long long g[2000000]; long long n; int main() {long long x,y,z,sum0,k0;scanf("%lld",&n);for(x1;x<n;x)scanf("%lld",&g[x]);for(x1;x<n;x){scanf(&qu…

尚未创建默认 SSL 站点。若要支持不带 SNI 功能的浏览器,建议创建一个默认 SSL 站点。

在 Windows Server 2012 IIS 站点中设置 SSL 证书后&#xff0c;IIS 右上角提示&#xff1a; 尚未创建默认 SSL 站点。若要支持不带 SNI 功能的浏览器&#xff0c;建议创建一个默认 SSL 站点。 该提示客户忽略不管&#xff0c;但是若要支持不带 SNI(Server Name Indication)…

外卖柜平台的设计与实现以及实践与总结

近年来&#xff0c;外卖行业的快速发展推动了外卖配送行业的进步和创新。外卖柜平台作为一种新兴的配送方式&#xff0c;在提高配送效率和服务质量方面具有很大的优势。本文将探讨美团外卖柜平台的设计与实现&#xff0c;以及如何保障其稳定性和安全性。 架构设计 美团外柜平台…

React -- useEffect

React - useEffect 概念理解 useEffect是一个React Hook函数&#xff0c;用于在React组件中创建不是由事件引起而是由渲染本身引起的操作&#xff08;副作用&#xff09;, 比 如发送AJAX请求&#xff0c;更改DOM等等 :::warning 说明&#xff1a;上面的组件中没有发生任何的用…

市场复盘总结 20240222

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 二进三&#xff1a; 进级率中 25% 最常用…
最新文章