Codeforces Round 950 (Div. 3)

好久没写题解了,今天来写个题解。


A - 问题 Generator

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
#define pb(x) push_back(x);
#define fi first
#define sc second
#define is insert
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
const int INF =1e18;
void solve()
{int n,m;cin>>n>>m;string s;cin>>s;map<char,int> mp;//int n=s.size();for (int i=0;i<n;i++){mp[s[i]]++;}int sum=0;for (char i='A';i<='G';i++){if(mp[i]<m){sum+=(m-mp[i]);}}cout<<sum<<endl;}signed main()
{IOSint t;cin>>t;while(t--){solve();}
}

B - Choosing Cubes

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
#define pb(x) push_back(x);
#define fi first
#define sc second
#define is insert
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
const int INF =1e18;
void solve()
{int n,f,k;cin>>n>>f>>k;int x;vi a(n+1);for (int i=1;i<=n;i++){cin>>a[i];if(i==f){x=a[i];}}int pos=0;sort(a.begin()+1,a.end());reverse(a.begin()+1,a.end());for (int i=1;i<=n;i++){if(a[i]==x){pos=i;break;}}int cnt=pos;for (int i=pos+1;i<=n;i++){if(a[i]==a[pos]){cnt++;}else {break;}}if(cnt<=k){cout<<"YES"<<endl;}else if (cnt>k && pos<=k){cout<<"MAYBE"<<endl;}else if(cnt>k){cout<<"NO"<<endl;}}signed main()
{IOSint t;cin>>t;while(t--){solve();}
}

A和B 都是简单的模拟题,按照题意来写就行,可以参考代码。

C - Sofia and the Lost Operations

思路:给出的m个元素可以分为三类来看,一类是需要改成b的,一类是和b相等的元素,还有一类是ab 中都没有的元素。 而这第三类元素必须要被第一类和第二类覆盖掉。所以只需要倒叙找最后的元素是不是第一第二类元素。  (可以使用map 来存第一第二类元素)。

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
#define pb(x) push_back(x);
#define fi first
#define sc second
#define is insert
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
const int INF =1e18;
void solve()
{int n;cin>>n;vi a(n+1),b(n+1);for (int i=1;i<=n;i++){cin>>a[i];}for (int i=1;i<=n;i++){cin>>b[i];}map<int,int> mp,mp1;for (int i=1;i<=n;i++){if(a[i]!=b[i]){mp[b[i]]++;}else {mp1[b[i]]=1;}}int m;cin>>m;int fl=0;vi c;for (int i=1;i<=m;i++){int x;cin>>x;c.push_back(x);}int pos;for (int i=m-1;i>=0;i--){if(mp[c[i]]|| mp1[c[i]]){pos=i;break;}}for (int i=0;i<m;i++){if(mp[c[i]]){mp[c[i]]--;}else if(mp1[c[i]]){continue;}else {if(i>pos){fl=1;}}}if(fl==1){cout<<"NO"<<endl;return ;}for (int i=1;i<=n;i++){if(mp[b[i]]){cout<<"NO"<<endl;return ;}}cout<<"YES"<<endl;}signed main()
{IOSint t;cin>>t;while(t--){solve();}
}

D - GCD-sequence

思路:通过贪心来遍历没所以最多只能处理一个递减的情况,可以先开个数组记录一下递减的位置和递减的对数数量。一点要特判的是在边界的话,是可以直接删掉最外面的数的。然后可以直接遍历一次,每次都对删去中间那个a。看操作后,是不是可以消去所有的不递增。

可以看代码理解。

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
#define pb(x) push_back(x);
#define fi first
#define sc second
#define is insert
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
const int INF =1e18;
void solve()
{int n;cin>>n;vi a(n+1);for (int i=1;i<=n;i++){cin>>a[i];}int ans=0;vi b(n),c(n+1);for (int i=1;i<=n-1;i++){b[i]=__gcd(a[i],a[i+1]);}for (int i=1;i<n-1;i++){if(b[i+1]<b[i]){c[i]=1;ans++;}}if(ans==0){cout<<"YES"<<endl;return ;}if(ans==1 &&c[1]==1){cout<<"YES"<<endl;return ;}if(ans==1 &&c[n-2]==1){cout<<"YES"<<endl;return  ;}int fl=0;for (int i=1;i<n-1;i++){int tmp1=0,tmp2=0,tmp3=1e9;tmp2=__gcd(a[i],a[i+2]);int cnt=ans;if(c[i]) cnt--;if(c[i-1]) cnt--;if(c[i+1] )  cnt--;if(i>1){tmp1=b[i-1];}if(i<n-2){tmp3=b[i+2];}if(tmp1>tmp2){cnt++;}if(tmp2>tmp3){cnt++;}if(cnt==0){fl=1;}}if(fl){cout<<"yes"<<endl;return ;}else {cout<<"NO"<<endl;}
}signed main()
{IOSint t;cin>>t;while(t--){solve();}
}

E - Permutation of Rows and Columns

思路:其实就是看两个矩阵的每行和每列的元素是不是一样的。

所以用两个map 分别存每个元素的x和 y坐标 然后最后看两个矩阵的每一个元素的x和坐标是不是对应的。

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
#define pb(x) push_back(x);
#define fi first
#define sc second
#define is insert
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
const int INF =1e18;map<int,int> mpx,mpy;
void solve()
{int n,m;cin>>n>>m;vector<vector<int>> a(n+1,vector<int>(m+1));vector<vector<int>> b(n+1,vector<int>(m+1));int fl=0;for (int i=1;i<=n;i++){for (int j=1;j<=m;j++){cin>>a[i][j];mpx[a[i][j]]=i;mpy[a[i][j]]=j;}}for (int i=1;i<=n;i++){for (int j=1;j<=m;j++){cin>>b[i][j];if(mpx[b[i][j]]!=mpx[b[i][1]] || mpy[b[i][j]]!=mpy[b[1][j]]){fl=1;}}}if(fl){cout<<"NO"<<endl;return ;}else {cout<<"yes"<<endl;}}signed main()
{IOSint t;cin>>t;while(t--){solve();}
}

Field Division (easy version)

思路:从底下往上算,每次都修改最左边的值和最下面的值,并加上左边的面积,就是总面积了。

其中x轴的排序时从大到小,y轴的排序是从小到大。 如果想移除这个台灯后面积变大,这个台灯必须得位于边界,并且两个相邻的边为边界才行, 这个点也是边界改变的点。 所以每次改变边界的时候都把这个点标记。

#include "bits/stdc++.h"
using namespace std;#define int long long 
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0);
#define all(x) x.begin(),x.end()
#define pi pair<int,int> 
#define vi vector<int>
#define si set<int> 
#define mi map<int,int>
#define mc map<char,int>
#define YES cout<<"Yes"<<endl;
#define NO  cout<<"No"<<endl;
#define pb(x) push_back(x);
#define fi first
#define sc second
#define is insert
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return true; } return false; }
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return true; } return false; }
const int INF =1e18;struct node{int x,y;int id;
}a[200010];bool cmp(node x,node y){if(x.x==y.x){return x.y<y.y;}else {return x.x>y.x;}
}void solve()
{int n,m,k;cin>>n>>m>>k;for (int i=1;i<=k;i++){cin>>a[i].x>>a[i].y;a[i].id=i;}sort(a+1,a+k+1,cmp);vi ans(k+1);int l=m+1,d=n;int sum=0;for (int i=1;i<=k;i++){if(l>a[i].y){ans[a[i].id]=1;sum+=(d-a[i].x)*(l-1);l=a[i].y;d=a[i].x;}}sum+=d*(l-1);cout<<sum<<endl;for (int i=1;i<=k;i++){cout<<ans[i]<<" ";}cout<<endl;}signed main()
{IOSint t;cin>>t;while(t--){solve();}
}

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

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

相关文章

【Linux】(一)——Linux基础和Linux命令基础语法

目录 Linux基础Linux发行版本Linux终端Linux命令 Linux基础 Linux&#xff0c;通常指的是GNU/Linux操作系统&#xff0c;这是一个开源且免费使用的类UNIX操作系统。它的核心组件——Linux内核&#xff0c;由林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在1991年10月5日…

Arthas使用教程——JVM常用命令

JVM相关命令 dashboard——当前系统的实时数据面板 显示当前 tomcat 的实时信息。 使用方式&#xff1a;dashboard 数据说明 ID: Java 级别的线程 ID&#xff0c;注意这个 ID 不能跟 jstack 中的 nativeID 一一对应。 NAME: 线程名 GROUP: 线程组名 PRIORITY: 线程优先级…

Rocky Linux安装与基础配置

目录 背景与起源 主要特点 目标用户 发展前景 下载 安装 常用配置命令&#xff1a; 更换镜像源 Rocky Linux 是一个开源的、由社区驱动的操作系统&#xff0c;旨在使用 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;源码构建的下游二进制兼容发行版。以下是关于…

优思学院|一文看懂新版FMEA与FMEA的七大步骤

FMEA的起源 FMEA最早起源于20世纪40年代的美国军工行业。当时&#xff0c;美国军方为了提高武器系统的可靠性和安全性&#xff0c;开始使用FMEA来识别和评估潜在的故障模式及其影响。1949年&#xff0c;美国军方发布了《军用程序手册》&#xff08;Military Procedures Handbo…

【Android面试八股文】在Java中重载和重写是什么意思,区别是什么?

文章目录 在Java中重载和重写是什么意思,区别是什么?这道题想考察什么 ?考察的知识点考生应该如何回答重载(Overloading)重写(Overriding)重载和重写的区别在Java中重载和重写是什么意思,区别是什么? 这道题想考察什么 ? Java基础 考察的知识点 面向对象多态的基…

五种网络IO模型

目录 前言 文件描述符 为什么要多种io模型 同步IO 1.阻塞IO 2.非阻塞IO 3.多路复用IO&#xff08;事件驱动IO&#xff09; select: poll&#xff1a; epoll&#xff1a; 4.信号驱动IO 异步IO 区别 前言 文件描述符 首先我们了解一下文件描述符是什么&#xff1a;…

【Python报错】已解决AttributeError: ‘method‘ object has no attribute ‘xxx‘

解决Python报错&#xff1a;AttributeError: ‘method’ object has no attribute ‘xxx’ 在Python中&#xff0c;AttributeError通常表明你试图访问的对象没有你请求的属性或方法。如果你遇到了AttributeError: method object has no attribute xxx的错误&#xff0c;这通常意…

批量处理脚本,用于删除指定目录下3天前的备份文件和日志。

echo off echo 删除3天前的备份文件和日志 set SrcDirD:\home set DaysAgo3 echo 准备删除3天前的备份文件和日志 forfiles /p %SrcDir% /d -%DaysAgo% /c "cmd /c del /f /q /a path && rd /s /q path" echo 正在执行删除&#xff0c;请稍等…… set SrcDi…

奇迹MU最强法师介绍

1、黑龙波 释放出深渊中的黑龙之魂&#xff0c;对一定范围内的目标造成中等程度伤害。 奥义&#xff1a; 怒哮——法师释放出深渊龙魂的怨怒之力&#xff0c;在电闪雷鸣中中咆哮的龙魂将对敌人额外造成少量伤害。 魂阵——法师利用法阵控制黑龙之魂进行更大范围的攻击&…

如何使用SeaFile文件共享服务器结合内网穿透将家中电脑变成个人云盘

文章目录 1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 本文主要为大家介绍&#xff0c;如何使用两个…

opt 优化

【整理】深入理解拉格朗日乘子法&#xff08;Lagrange Multiplier) 和KKT条件 【amos注】&#xff1a;通俗易懂&#xff0c;让人易于理解。

【Oracle篇】rman全库异机恢复:从RAC环境到单机测试环境的转移(第四篇,总共八篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

【TensorFlow深度学习】深度学习中的损失函数种类与适用场景

深度学习中的损失函数种类与适用场景 深度学习中的损失函数种类与适用场景&#xff1a;精确度量模型误差的艺术一、均方误差&#xff08;Mean Squared Error, MSE&#xff09;二、交叉熵损失&#xff08;Cross-Entropy&#xff09;三、Hinge损失&#xff08;Margin Loss&#x…

ROS RViz观测传感器数据

ROS RViz观测传感器数据 The Robot Visualization Tool 可视化工具 机器人传感器采集到的数据都可以图形化的显示在这个软件里&#xff0c;机器人运算处理的中间结果&#xff0c;和即将要执行的目标指示&#xff0c;比如机器人对空间中某个物体进行识别后&#xff0c;我们可以…

【Linux】Linux工具——make/Makefile

1.背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的 规则来指定&#xff0c;哪些文件需要先编译&#xff0c;哪些文件需…

Edge 工作区是什么?它都有哪些作用?

什么是工作区 Edge 工作区是什么&#xff1f;它是微软 Edge 浏览器中的一个功能&#xff0c;在帮助用户更好地组织和管理他们的浏览会话。通过工作区&#xff0c;用户可以创建多个独立的浏览环境&#xff0c;每个工作区内包含一组相关的标签页和浏览器设置。这使得用户能够根据…

SQL进阶day9————聚合与分组

目录 1聚合函数 1.1SQL类别高难度试卷得分的截断平均值 1.2统计作答次数 1.3 得分不小于平均分的最低分 2 分组查询 2.1平均活跃天数和月活人数 2.2 月总刷题数和日均刷题数 2.3未完成试卷数大于1的有效用户 1聚合函数 1.1SQL类别高难度试卷得分的截断平均值 我的错误…

开放式耳机十大品牌推荐!怎么选耳机看这六招!

随着耳机厂家的疯狂内卷&#xff0c;以前让学生党望其项背的千元耳机技术&#xff0c;纷纷被厂家下沉至百元耳机&#xff0c;是以2024年始&#xff0c;百元开放式耳机以新物种、价低格而爆火。看到身边朋友争相购买开放式耳机&#xff0c;既当耳饰&#xff0c;又当耳机&#xf…

分享:2024年(第12届)“泰迪杯”数据挖掘挑战赛成绩公示

2024年&#xff08;第12届&#xff09;“泰迪杯”数据挖掘挑战赛历时两个月顺利结束。竞赛采用盲审&#xff08;屏蔽参赛者信息&#xff1b;评审专家只能评阅非本区域作品&#xff1b;三位评阅专家同时评阅同一作品&#xff0c;超限调整后再取平均分&#xff09;&#xff0c;答…

redis做为缓存,mysql的数据如何与redis进行同步呢?

让我们一步步来实现如何让MySQL数据库的数据和Redis缓存保持同步。想象一下&#xff0c;MySQL是一个大仓库&#xff0c;存放着所有重要的货物&#xff08;数据&#xff09;&#xff0c;而Redis则像是一个快速取货窗口&#xff0c;让你能更快拿到常用的东西。为了让两者保持一致…