VP记录:Codeforces Round 857 (Div. 2) A~D
传送门:CF
A题 Likes:
这道题的题意很变态,十分的难懂,简直就是一坨shit,这场比赛最后被骂是有原因的
简单来说就是对于一个项目,每一个人都能对此加一或者减一,最后问你这个项目每一时刻最大和最小是多少.题目中只说明了只能点赞后才能取消,并没有解释存在取消操作必存在点赞操作(在数据那里悄悄的提了一嘴),但是仍然会造成理解困难
看懂题目之后解决方法很简单,对于最大,我们只要先全部都进行点赞,然后再取消即可
对于最小,我们只要先点赞然后随即取消即可(数据保证取消操作必有一个点赞操作与之对应)
下面是具体的代码部分:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
#define maxn 1000000
const double eps=1e-8;
#define int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int T;
vector<int>a,b;
int main() {T=read();while(T--) {int n=read();a.clear();b.clear();for(int i=1;i<=n;i++) {int x=read();if(x>0) a.push_back(x);else b.push_back(x);}int cnt=0;for(int i=0;i<a.size();i++) {printf("%d ",++cnt);}for(int i=0;i<b.size();i++) {printf("%d ",--cnt);}cnt=0;cout<<endl;int pos=0;for(int i=0;i<a.size();i++) {printf("%d ",++cnt);if(pos<b.size()) {printf("%d ",--cnt);pos++;}}while(pos<b.size()) {printf("%d ",--cnt);}cout<<endl;}return 0;
}
B题 Settlement of Guinea Pigs:
题目理解起来也十分的变态,样例也十分的难以理解,只能活该被骂,做起来十分难受
对于每一次查询性别之前,也就是每一个2出现之前记录1的个数,假设我们的1的个数是偶数的话,那么此时我们需要的鸟笼就是(n−2)/2+2(n-2)/2+2(n−2)/2+2,对于我们1的个数是奇数的时候,我们需要的鸟笼的数量就是n/2+1n/2+1n/2+1,接下来来解释一下:
显然我们会发现我们的情况会随着4的余数而进行变化(下面将1,2作为雌雄):
当我们是4的倍数的时候,最坏情况是1,2,1,2…11,12.也就是说对于最后的四个猪,我们的情况并不是1,2,1,2,而应该是11,12,这样才是最坏的情况,此时我们的答案就是(n-2)/2+2
当我们是4的倍数余1时,此时最坏情况是1,2,1,2…1,2,1,2,1,也就是说此时的情况就是n/2+1
当我们是4的倍数余2时,此时最坏的情况是1,2,1,2…1,2,1,2,1,2,此时也还是(n-2)/2+2
当我们是4的倍数余3时,此时最坏的情况是1,2,1,2,…1,2,1,2,1,此时也还是n.2+1
并且注意本题有一个坑点就是在中途过程中我们可能需要很多个鸟笼,虽然可能这些鸟笼在最后可能是空的,但是为了安放好猪,我们依旧需要购买,所以我们需要记录过程中的最大值而不是直接查询最终结果!!
下面是具体的代码部分:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
#define maxn 1000000
const double eps=1e-8;
#define int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int main() {int T=read();while(T--) {int n=read();int sum1=0,sum2=0;int ans=0;for(int i=1;i<=n;i++) {int x=read();if(x==1) sum1++;else {if(sum1==0) continue;if(sum1&1) {sum2+=sum1/2;sum1=1;}else {sum2+=(sum1-2)/2;sum1=2;}}ans=max(ans,sum1+sum2);}cout<<ans<<endl;}return 0;
}
C题 The Very Beautiful Blanket:
本题的题面还是比较简明易懂的,做起来的感觉比前两题要爽
由于是一道构造题,所以假设想不到构造的那一个点上本题做起来还是比较痛苦的
我们需要保证每4*4的区间就要满足左上2*2异或和要等于右下2*2异或和,如何保证我们这个做法比较舒服呢.要知道CF上对于这种构造题肯定不会很麻烦的,所以我们大胆猜测,能不能直接保证异或和都等于0呢,这样我们就可以轻易的保证满足题目条件了.而且等于0这个值也比较特殊,大概率是突破口.
那么此时我们就需要保证每2*2的矩阵异或和等于即可,考虑从0开始填矩阵,我们先填满矩阵的第一行,0,1,2,3,4,....m−10,1,2,3,4,....m-10,1,2,3,4,....m−1,因为我们需要保证最后的异或和等于0,那么就意味着我们的第二行的两个数字必须包括上一行的二进制位.我们不妨对于第一行的数字加上一个只有首位的值.例如对于0,10,10,1来说,我们第二行构造出1000+0,1000+11000+0,1000+11000+0,1000+1,这样的话就可以满足异或和等于0了.对于每一个左右相邻数字,我们异或出来最终剩下的就是第一行相邻的数字,再于上下相邻异或,最终都是0
但是此时我们加上这一个二进制位必须比原数字的最高位高才行也就是不能破坏原来的第一行的数字.此时我们第一行数字最大也就是200,所以此时我们采用282^828即可
下面是具体的代码部分:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
#define maxn 1000000
const double eps=1e-8;
#define int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int T;
int a[maxn];
int main() {T=read();while(T--) {int n=read(),m=read();cout<<n*m<<endl;for(int i=1;i<=m;i++) {a[i]=i-1;printf("%d ",a[i]);}printf("\n");for(int i=2;i<=n;i++) {for(int j=1;j<=m;j++) {a[j]+=pow(2,8);printf("%d ",a[j]);}printf("\n");}}return 0;
}
D题: Buying gifts
本题题意也比较清明.理解题意十分简单.
对于本题,n的范围为500000,不难感觉应该是一个nlognnlognnlogn算法
考虑对数对<ai,bi>按照ai的大小从小到大进行排序
我们可以考虑枚举A组最大的数字.那么对于A组后面的所有数对,因为当前我们最大值是Ai,所以对于Ai后面的所有数对我们肯定都是选择Bi.对于Ai前面的数对我们可以随意选择,
此时我们的目的是需要max(b)-ai最小.那么对于iii后面的所有bj来说,此时我们可以记录后缀最大值来轻松的找出最大值.那么此时我们只需要找到前缀最大值即可.对于iii前面的所有数对我们进行分类讨论
因为不知道我们的bi的最大值是不是大于ai,所以我们需要找到iii前面所有bjbjbj中恰好大于和小于aiaiai的数,该操作使用setsetset进行,setsetset可以轻松进行插入和二分查找操作
如果存在比ai大的数字,那么此时我们将其后面的最大值进行比较,因为最终的答案需要选出最大的那个数减去ai,我们后面的所有数字又是必选的,所以假如后面的数字比较大,我们此时答案只能是是后面最大值减去ai(选更大的肯定更不优),反之我们选择考虑选择前面的那么查询出来的值.因为此时的值更为贴近我们的ai.(注意此时我们只是选了一下,因为存在一种可能就是后面的最大值才是最贴近的,所以在最后还需要比较一下)
如果存在比ai小的数字,我们的讨论方法类似,此处就不再赘述了
下面是具体的代码部分:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
#define maxn 1000000
const double eps=1e-8;
#define int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int T;
vector<pair<int,int> >v;
set<int>se;
int per_mx[maxn];
int main() {T=read();while(T--) {int n=read();v.clear();se.clear();for(int i=0;i<=n+1;i++) {per_mx[i]=0;}for(int i=1;i<=n;i++) {int a=read(),b=read();v.push_back({a,b});}sort(v.begin(),v.end());for(int i=n-1;i>=0;i--) {if(i==n-1) per_mx[i]=v[i].second;else per_mx[i]=max(per_mx[i+1],v[i].second);}int ans=int_INF;for(int i=0;i<=n-1;i++) {int c=int_INF;auto pos=se.lower_bound(v[i].first);if(pos!=se.end()) {if(per_mx[i+1]>=*pos) {c=min(c,abs(v[i].first-per_mx[i+1]));}else {c=min(c,abs(v[i].first-*pos));}}if(pos!=se.begin()) {pos--;if(per_mx[i+1]>=*pos) {c=min(c,abs(v[i].first-per_mx[i+1]));}else {c=min(c,abs(v[i].first-*pos));}}if(i!=n-1) c=min(c,abs(v[i].first-per_mx[i+1]));se.insert(v[i].second);ans=min(ans,c);}cout<<ans<<endl;}return 0;
}
相关文章:
VP记录:Codeforces Round 857 (Div. 2) A~D
传送门:CF A题 Likes: 这道题的题意很变态,十分的难懂,简直就是一坨shit,这场比赛最后被骂是有原因的 简单来说就是对于一个项目,每一个人都能对此加一或者减一,最后问你这个项目每一时刻最大和最小是多少.题目中只说明了只能点赞后才能取消,并没有解释存在取消操作必存在点…...
Docker常用项目实战演练
docker镜像源的修改 linux环境下编辑 /etc/docker/daemon.json vi /etc/docker/daemon.json #如添加如下网易镜像源 { "registry-mirrors": ["http://hub-mirror.c.163.com"] }docker run命令详细解释 日常工作中用的比较多的是docker run命令ÿ…...
Linux进程间通信-FIFO命名管道
Linux进程间通信-FIFO命名管道 1、概述 管道因为没有名称,所以只用于进程间的亲缘通信。为了克服这一缺点,提出了命名管道(FIFO),又称命名管道、FIFO文件。 FIFO不同于无名管道,它提供与之关联的路径名,该路径名以FIF…...
【Kafka】记录一次基于connect-mirror-maker做的Kafka集群迁移完整过程
文章目录背景环境工具选型实操MM1MM2以MM2集群运行以Standalone模式运行验证附录MM2配置表其他背景 一个测试环境的kafka集群,Topic有360,Partition有2000,部署在虚拟机上,由于多方面原因,要求迁移至k8s容器内&#x…...
实现VOC数据集与COCO数据集格式转换
实现VOC数据集与COCO数据集格式转换2、将voc数据集的xml转化为coco数据集的json格式2、COCO格式的json文件转化为VOC格式的xml文件3、将 txt 文件转换为 Pascal VOC 的 XML 格式<annotation><folder>文件夹目录</folder><filename>图片名.jpg</file…...
常用的密码算法有哪些?
我们将密码算法分为两大类。 对称密码(密钥密码)——算法只有一个密钥。如果多个参与者都知道该密钥,该密钥 也称为共享密钥。非对称密码(公钥密码)——参与者对密钥的可见性是非对称的。例如,一些参与者仅…...
SNS (Simple Notification Service)简介
SNS (Simple Notification Service) 是一种完全托管的发布/订阅消息收发和移动通知服务,用于协调向订阅终端节点和客户端的消息分发。 和SQS (Simple Queue Service)一样,SNS也可以轻松分离和扩展微服务,分布式系统和无服务应用程序…...
JVM初步理解浅析
一、JVM的位置 JVM的位置 JVM在操作系统的上一层,是运行在操作系统上的。JRE是运行环境,而JVM是包含在JRE中 二、JVM体系结构 垃圾回收主要在方法区和堆,所以”JVM调优“大部分也是发生在方法区和堆中 可以说调优就是发生在堆中…...
【巨人的肩膀】MySQL面试总结(一)
💪 目录💪1、什么是ER图2、数据库范式了解吗3、超键、候选键、主键、外键分别是什么?4、为什么不推荐使用外键与级联5、什么是存储过程6、drop、delete与truncate区别7、数据库设计通常分为那几步8、什么是关系型数据库9、什么是SQL10、MySQL…...
【数据结构之树】——什么是树,树的特点,树的相关概念和表示方法以及在实际的应用。
文章目录一、1.树是什么?2.树的特点二、树的相关概念三、树的表示方法1.常规方法表示树2.使用左孩子右兄弟表示法3. 使用顺序表来存储父亲节点的下标三、树在实际的应用总结一、1.树是什么? 树是一种非线性的数据结构,它是由n(n&…...
JavaScript语法
文章目录一、JavaScript是什么?JavaScript引入方式二、基础语法书写语法输出语句变量数据类型运算符流程控制语句数组函数JS变量作用域对象一、JavaScript是什么? JavaScript:是一门跨平台的脚本语言,用来控制网页行为࿰…...
【BIOS/UEFI】HII 基本框架及概述
HII(Human Interface Infrastructure )定义了一套管理用户输入的基础框架。HII数据库主要提供用户安装、卸载以及使用各种字符串、字体和图片等资源的接口。 HID Devices 是用户输入设备,如键盘、串口和网络;Display Devices 是输…...
sprintf(...)溢出边界导致程序崩溃的问题
文章目录小结问题及解决参考小结 使用sprintf(...)进行格式化是一种标准的做法,但是这样做是有一个极大的风险,由于sprintf(...)不进行边界检查,这样会有写操作溢出边界的风险,并导致程序崩溃。本文进行了简单写操作溢出边界的测…...
公式推导+dfs简版
写在前面的话:心可以冷,但手不能停 第一题:C. Flexible String 题目大意:给一个aaa字符串和bbb字符串和数字kkk,首先设置一个计数器cntcntcnt,其中可以对aaa字符串做以下操作:替换aaa中的一个字母xxx&#…...
论文笔记 | 标准误聚类问题
关于标准误的选择,如是否选择稳健性标准误、是否采取聚类标准误。之前一直是困惑的,惯用的做法是类似主题的文献做法。所以这一次,借计量经济学课程之故,较深入学习了标准误的选择问题。 在开始之前推荐一个知乎博主。他阅读了很…...
银行管理系统--课后程序(Python程序开发案例教程-黑马程序员编著-第7章-课后作业)
实例1:银行管理系统 从早期的钱庄到现如今的银行,金融行业在不断地变革;随着科技的发展、计算机的普及,计算机技术在金融行业得到了广泛的应用。银行管理系统是一个集开户、查询、取款、存款、转账、锁定、解锁、退出等一系列的功…...
【18】组合逻辑 - VL18 实现3-8译码器①
VL18 实现3-8译码器① 1 题目 【这题我的思路非常绝境】奈斯 !! 看真值表的思路:Yi所在列【0仅一个其余全1】,故【以0为对象求解】 观察发现:E3 E2_n E1_n = 100 时 是 译码的使能信号 ; 并且E3 E2_n E1_n为其他值时,都不使能译码 然后就很简单,没有仿真就成功了 2 代…...
2020蓝桥杯真题最长递增 C语言/C++
题目描述 在数列a_1 ,a_2,⋯,a_n 中,如果a_i <a_i1 <a_i2<⋯<a_j,则称 a_i至 a_j为一段递增序列,长度为 j−i1。 定一个数列,请问数列中最长的递增序列有多长。 输入描述 输入的第一行包含一个整数 n。 第二行包含…...
华为OD机试题 - 寻找连续区间(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:寻找连续区间题目输入输出示例一输入输出说明示例二输入输出Cod…...
一次疲惫的调试--累了及时透气
原创 射频清茶 深山小老虎 2023-03-11 14:32发表于广东 收录于合集 #射频调试3个 #网分4个 #Wi-Fi 2个 进来透透气 道不尽红尘舍恋 诉不完人间恩怨 世世代代都是缘 喝着相同的水 留着相同的血 这条路漫漫又长远 红花当然配绿叶 这一辈子谁来陪 渺渺茫茫来又回 往日情景再…...
综合练习7 摄氏度转华氏温度(“\t“的使用,循环语句)
综合练习7 摄氏度转华氏温度 使用do…while循环,在控制台输入摄氏温度与华氏温度的对照表。 对照表从摄氏温度-30℃到50℃,每行间隔10℃,运行如下: 摄氏温度:-30℃ 华氏温度:-22.0℉ 摄氏温度:…...
AWS数据库总结
RDS – 联机事务处理OLTP(Online Transaction Processing),包括: SQL ServerOracleMySQL ServerPostgreSQLAuroraMariaDB非关系数据库DynamoDB数据仓库RedShift – 联机分析处理OLAP(Online Analytics Processing&…...
2个步骤就能批量给视频添加滚动字幕
现在很多小伙伴在剪辑视频的时候都会给自己的视频添加适配的字幕,但是有很多的视频想要添加一样的滚动字幕时,有一个能批量添加剪辑的工具非常重要,今天小编就给大家分享一个可以批量剪辑大量视频的工具,下面一起看看具体的操作步…...
PHP 的运行方式有哪些?
PHP本质上的运行方式可以分为两种: 基于命令行的基于PHP-FPM的 但实际上,PHP能做的事很多,很多场景下,不同的运行方式能让开发更方便,减轻各种工作。 测试开发 PHP内置了一个HTTP 的server。这意味着,很…...
Web学习3_JavaScript
1.1 JS的调用方式与执行顺序 使用方式 HTML页面中的任意位置加上<script type"module"></script>标签即可。 常见使用方式有以下几种: 直接在<script type"module"></script>标签内写JS代码。script type"modu…...
「MySQL基础」不可重复读和幻读的区别
「MySQL基础」不可重复读和幻读的区别 文章参考: 在数据库中不可重复读和幻读到底应该怎么分? 作者:暖猫Suki、普通熊猫 文章目录「MySQL基础」不可重复读和幻读的区别一、概述二、小结一、概述 正好在琢磨这个问题,也被搞得头昏…...
CorelDRAW2023最新版新增功能200多个新模板
CorelDRAW是一款平面矢量绘图排版软件,CorelDRAW运用涵盖企业VI设计,广告设计,包装设计,画册设计,海报、招贴设计,UI界面设计,网页设计,书籍装帧设计,插画设计࿰…...
springboot自定义日志以及行号正确展示
在开发springboot项目时,我们可能需要自定义日志实现。需要对slf4j的日志实现进行一次外层包装 这个很简单,按照org.slf4j.Logger方式定义一个类Logger类MyLogger。 让后实现MyLoggerImpl: public class MyLoggerImpl implements CoreLogge…...
【GAOPS055】verilog 乘法、除法和取余
乘法硬件原理 结论 可以将乘法A x B转为A的移位相加。 利用乘2n就是左移n位的特性乘2^n就是左移n位的特性乘2n就是左移n位的特性,将数拆分为2n2^n2n表示 思路1 原始列竖式计算方法ref例2.9 思路2 B总是可以拆分为:B(an2nan−12n−1...a121a020)B(…...
TCP UPD详解
文章目录TCP UDP协议1. 概述2. 端口号 复用 分用3. TCP3.1 TCP首部格式3.2 建立连接-三次握手3.3 释放连接-四次挥手3.4 TCP流量控制3.5 TCP拥塞控制3.6 TCP可靠传输的实现3.7 TCP超时重传4. UDP5.TCP与UDP的区别TCP UDP协议 1. 概述 TCP、UDP协议是TCP/IP体系结构传输层中的…...
深度网站建设/镇江网站定制
### Code Reference URL:https://blog.csdn.net/hunheidaode/article/details/104039719DESC:docker实例化Oracle12c EELast Update: 确定使用的镜像 docker search oracle docker pull absolutapps/oracle-12c-ee 本地化容器文件 docker inspect absolutapps/oracle-12c-ee …...
免费的个人的网站/百度广告费
在与开发者长期的沟通中,我们发现,尽管声网为开发者提供了丰富翔实的 SDK 技术文档,但对于初次接触声网 SDK 的开发者来说,在第一眼看到文档的时候,可能会被大量新概念和复杂的 API 接口淹没。SDK 技术文档存在自身的自…...
域名注册那个网站的好/运营培训班
题解: 模拟 随着数据的不断输入,如果输入的数据与其前一个数据相同,则将这两个数据同时删去,并且在将 flag 加一,表示进行了多少个回合,如果 flag % 2 0,则说明 A,B 均完成了 flag / 2 次操作…...
成都网站建设服务密需湖南岚鸿案例/简述什么是百度竞价排名
无损连接分解的形式定义如下:设R是一个关系模式,F是R上的一个函数依赖(FD)集。R分解成数据库模式δ{R1,……,Rk}。如果对R中每一个满足F的关系r都有下式成立: 那么称分解δ相对于F是“无损连接分解”,否则称为“损失连接分解”。其…...
给别人做软件的网站/上海网络推广平台
JavaScript 中的类类定义从一开始就采用 class 关键字可能是最容易的实现途径。如下所示,此关键字表示一个新 ECMAScript 类的定义:1. 定义新类class Person{}let p new Person();空类本身不是很有趣。毕竟,每个人都有姓名和年龄,…...
整站seo策略实施/seo发帖软件
本文主要介绍如何通过Google的API来定义自己的搜索引擎,并将Google搜索框嵌入到自己的web页面。另外,分析了自定义搜索引擎请求数据的url,模拟请求并获取搜索的结果。 1 写在前面 前段时间发现了一个网站提供搜索百度网盘资源,挺好…...