Codeforces 888 div3 A-G
A. Escalator Conversations
分析
二者身高差为k的倍数且不超过m-1倍,身高差不能为0(即不能在同一个阶梯)
C++代码
#include<iostream>
using namespace std;
void solve(){int n,m,k,H,ans=0;cin>>n>>m>>k>>H;for(int i=0;i<n;i++){int x;cin>>x;if(H!=x&&abs(H-x)%k==0&&abs(H-x)/k<=m-1)ans++;}cout<<ans<<endl;
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
B. Parity Sort
分析
把奇数和偶数分开排序,然后依次填充原数组奇数和偶数的地方,判断是否有前面的数大于后面的情况,如果有,则输出NO
C++代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void solve(){int n;cin>>n;vector<int> s(n+5,0),a,b;for(int i=1;i<=n;i++){cin>>s[i];if(s[i]%2)b.push_back(s[i]);else a.push_back(s[i]);}sort(a.begin(),a.end());sort(b.begin(),b.end());int ia=0,ib=0,flag=0;for(int i=1;i<=n;i++){if(s[i]%2==0)s[i]=a[ia++];else s[i]=b[ib++];if(s[i]<s[i-1]){flag=1;break;}}if(flag)puts("NO");else puts("YES");
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
C. Tiles Comeback
分析
k=1,直接从a[1]跳到a[n]
k!=1
1、a[1]==a[n],找有没有k个a[1]即可
2、a[1]!=a[n],找k个a[1]和k个a[n]且要按顺序
C++代码
#include<iostream>
using namespace std;
void solve(){int n,k;cin>>n>>k;int a[n+5];for(int i=1;i<=n;i++)cin>>a[i];if(k==1)puts("YES");else if(a[1]==a[n]){int sum=0;for(int i=1;i<=n;i++)if(a[i]==a[1])sum++;if(sum>=k)puts("YES");else puts("NO");}else{int cnt1=1,cnt2=1,l=n;for(int i=2;i<=n;i++){if(a[i]==a[1])cnt1++;if(cnt1==k){l=i;break;}}for(int j=n-1;j>l;j--)if(a[j]==a[n])cnt2++;if(cnt2<k)puts("NO");else puts("YES");}
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
D. Prefix Permutation Sums
分析
对于给定的数组a,找出它的原数组s
因为a只丢了一个元素,所以原数组的1~n的排列中一定有两个数没出现,如果大于两个元素,则原数组不存在
对原数组的每个小于等于n的元素标记出现过,如果元素出现次数大于1或者元素>n,就用cnt记录下来;接下来找出未出现过的两个数的和sum,如果等于cnt,则表示原数组存在,否则不存在
C++代码
#include<iostream>
#include<vector>
using namespace std;
typedef long long LL;
void solve(){int n;cin>>n;LL a[n+5]={0},b[n+5]={0},cnt=0,flag=0;for(int i=1;i<n;i++)cin>>a[i];vector<LL> s;for(int i=1;i<n;i++){//找出原数组sLL t=a[i]-a[i-1];s.push_back(t);}for(int i=0;i<n-1;i++){if(s[i]<=n){b[s[i]]++;if(b[s[i]]>1)cnt=s[i];}else cnt=s[i];}LL sum=0,k=0;for(int i=1;i<=n;i++)if(!b[i])k++,sum+=i;if(k>2||k==2&&sum!=cnt)flag=1;if(!flag)puts("YES");else puts("NO");
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
E. Nastya and Potions
分析
一个药水x可以被几种药物混合制成就建几条指向x的边,建完边后就用拓扑排序做,所有入度为0的药水的价格只能是它本身的价格,入度不为0的价格可以由其他的药水混合制成,最终的最低价格为min(直接买的价格,由其他药水混合的价格)
C++代码
#include<iostream>
#include<queue>
using namespace std;
typedef long long LL;
const int N=200010;
int h[N],e[N],ne[N],idx;
LL a[N],d[N],w[N];
int n,k;
void add(int a,int b){e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
void solve(){cin>>n>>k;for(int i=1;i<=n;i++)h[i]=-1,w[i]=0,d[i]=0;idx=0;for(int i=1;i<=n;i++)cin>>a[i];while(k--){//输入所有无限免费供应的药水int x;cin>>x;a[x]=0;}for(int i=1;i<=n;i++){int m,x;cin>>m;while(m--){cin>>x;add(x,i);d[i]++;//i的入度加一}}queue<int> q;for(int i=1;i<=n;i++)//入度为0的药水的价格只能是它本身的价格,不能由别的药水混合制成if(!d[i])w[i]=a[i],q.push(i);while(q.size()){int t=q.front();q.pop();w[t]=min(w[t],a[t]);//更新药水t的价格for(int i=h[t];i!=-1;i=ne[i]){int j=e[i];w[j]+=w[t];//计算药水j由别的药水混合所需的价格if(--d[j]==0)q.push(j);}}for(int i=1;i<=n;i++)cout<<w[i]<<" ";cout<<endl;
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
F. Lisa and the Martians
分析
求(a[i]^x)&(a[j]^x)的最大值,即a[i]^x和a[j]^x的二进制数相同的位置尽可能多且尽可能在高位,即a[i]和a[j]二进制相同的位置尽可能多,即不同的位置尽可能少且尽可能为低位,
则可以装换成求a[i]^a[j]的最小值
有个常用结论:n个数的最小异或对答案就是排序后最小的相邻异或和
所以直接排序后求最小相邻异或和即可
然后计算t
对于选择的a[i]和a[j],从前往后枚举第0~k-1位,
如果a[i]和a[j]的第i位都是0,则t的第i位一定是1
如果a[i]和a[j]的第i位都是1,则t的第i位一定是0
如果一个0一个1,则t的第i位随意
C++代码
#include<iostream>
#include<algorithm>
#include<map>
#include<array>
#include<vector>
using namespace std;
const int N=200010,INF=2e9;
void solve(){int n,k;cin>>n>>k;vector<array<int,2>> a(n);for(int i=0;i<n;i++){int x;cin>>x;a[i]={x,i+1};}sort(a.begin(),a.end());int minn=INF,id1,id2,ai,aj;for(int i=0;i<n-1;i++){auto [c,d]=a[i];auto [e,f]=a[i+1];if((c^e)<minn){minn=(c^e);id1=d,id2=f;ai=c,aj=e;}}int t=1,x=0;for(int i=0;i<=k-1;i++){int a1=ai>>i&1,a2=aj>>i&1;//a1=a2=0则x的该位一定是1; a1!=a2则x的该位可以是0也可以是1,这里当成0; a1=a2=1则x的该位一定是0if((a1==0&&a2==0))x+=t;t*=2;}cout<<id1<<" "<<id2<<" "<<x<<endl;
}
int main(){int t;cin>>t;while(t--){solve();}return 0;
}
G. Vlad and the Mountains
分析
这题在线做法肯定会超时,那么可以用离线做法,先存储所有询问,再统一处理
首先,对于一对询问a,b,e,依题意,不能到达高度大于h[a]+e的山上
所以把每条边的权值设置成连接该边的两点的高度较大值
vector<array<int,3>> edge;//按照edge[i]={w,a,b},先是权值,然后是两个点
然后把每条边按照权值从小到大排序
vector<array<int,4>> query;//按照edge[i]={h[a]+e,a,b,i},先是h[a]+e,然后两个点,然后是询问的编号
对所有询问按照h[a]+e从小到大排序
然后依次枚举每个询问,每次将权值<=h[a]+e的边加入到并查集,然后判断a和b是否在同一连通块中,如果是,就可以从a走到b,否则不能
C++代码
#include<iostream>
#include<vector>
#include<array>
#include<algorithm>
using namespace std;
const int N=200010;
int p[N],h[N];
int find(int x){if(p[x]!=x)p[x]=find(p[x]);return p[x];
}
void merge(int a,int b){a=find(a),b=find(b);if(a!=b)p[a]=b;
}
void solve(){int n,m,q;cin>>n>>m;for(int i=1;i<=n;i++)p[i]=i;//并查集 for(int i=1;i<=n;i++)cin>>h[i];vector<array<int,3>> edge(m);//存储所有的边 for(int i=0;i<m;i++){int a,b;cin>>a>>b;edge[i]={max(h[a],h[b]),a,b};}sort(edge.begin(),edge.end());cin>>q;vector<array<int,4>> query(q);for(int i=0;i<q;i++){int a,b,e;cin>>a>>b>>e;query[i]={h[a]+e,a,b,i};}sort(query.begin(),query.end());vector<int> ans(q,0);int t=0;for(auto [h,u,v,i]:query){//把所有高度小于等于h的点都加入到并查集中while(t<m&&edge[t][0]<=h){//只能走到高度小于等于h的山merge(edge[t][1],edge[t][2]);t++;}if(find(u)==find(v))ans[i]=1;} for(int i=0;i<q;i++)if(ans[i])puts("YES");else puts("NO");
}
int main(){int t;cin>>t;while(t--){solve();} return 0;
}
相关文章:
Codeforces 888 div3 A-G
A. Escalator Conversations 分析 二者身高差为k的倍数且不超过m-1倍,身高差不能为0(即不能在同一个阶梯) C代码 #include<iostream> using namespace std; void solve(){int n,m,k,H,ans0;cin>>n>>m>>k>>H;…...

IDEA如何去掉编辑框右侧的竖线
打开 IntelliJ Idea 软件 依次找到 File—>Settings—>Editor—>General—>Appearance 去掉勾选 Show hard wrap and visual guides (configured in Code Style options)...

3DCoat v2023 激活版下载与安装教程 (数字雕刻程序)
前言 3DCoat 是一款数字雕塑软件,由乌克兰开发。该软件专注于游戏模型的细节设计,集三维模型实时纹理绘制和细节雕刻功能为一身,可以加速细节设计流程,在更短的时间内创造出更多的内容。 一、下载地址 下载链接:分享…...
【Unity/XLua】xlua自带教程示例分析(一)——打印Hello world
第一步 创建Monobehavior脚本 public class Helloworld : MonoBehaviour {void Start(){} }第二步 在类中或Start函数中创建Lua虚拟机环境 LuaEnv luaenv new LuaEnv();第三步 使用LuaEnv的DoString方法直接运行字符串存储的lua语句(字符串前使用可强制不进行转义…...

虚拟机(VMware16)安装rocky9.2详细过程,附镜像下载链接
rocky官方站点 链接: 官方站点 rocky9.2镜像下载路径 链接: Rocky-x86_64-dvd.iso 打开虚拟机,选择新建虚拟机 新建虚拟机 选择典型 由于VMware16没有rocky的版本,所以我们这里选择其他liunx 5.x 内核 64位 因为rocky9默认内核版本就是5开头的…...

C语言新手小白详细教程(6)函数
希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 关注 收藏支持一下笔者吧~ 阅读指南: 开篇说明为什么要使用函数?1.定义一个函数2.调用函数3.定义函数详解 开篇说明 截止目前,我们已…...
力扣1488.避免洪水泛滥
力扣1488.避免洪水泛滥 贪心 二分 将所有晴天存入集合用哈希表存每次池子上一次下雨的日期当下雨并且池子满了时,二分找到上一次下雨之后最近的晴天 class Solution {unordered_map<int,int> mp;public:vector<int> avoidFlood(vector<int>&a…...
System类、BigDecimal类、Calendar类 用法详解
System类 System 类是Java中的一个核心类,提供了访问与系统相关的一些属性和方法。它包含了一些静态字段和静态方法,用于获取系统的标准输入、标准输出、标准错误流,以及加载动态链接库和系统属性等功能。 常见方法: public stat…...

SQLTools插件下载与使用说明
SQLTools是一个专注于SQL优化与管理的plsql developer插件,目的是把一些常用的SQL收集在一起,方便快速解决问题,提高工作效率。 当在SQL或PACKAGE窗口,或者选中表时,会有两个右键菜单: SQLTools聚焦在SQL方面…...

【人脸识别】数据集宝藏合集,速看!
本文将为您介绍10个经典、热门的数据集,希望对您在选择适合的数据集时有所帮助。 1 26,090张人脸肤质缺陷采集数据【数据堂】 发布方: 数据堂(北京)科技股份有限公司 发布时间: 2021 简介: 26,090张人脸…...

mysql操作(进阶)
1.数据库约束 数据库自动对数据的合法性进行校验检查的一系列机制,目的是为了保证数据库中能够避免被插入或者修改一些非法数据。 (1)mysql中提供了以下的约束: a.NOT NULL:指定某列不能为null b.UNIQUE࿱…...

[000-01-025].第07节:WorkBench
我的后端学习大纲 我的Drools学习大纲 8. WorkBench 8.1 WorkBench简介: 1.WorkBench是KIE组件中的元素,也称为KIE-WB,是Drools-WB与JBPM-WB的结合体。它是一个可视化的规则编辑器。WorkBench其实就是一个war包,安装到tomcat中就可以运行。…...
JavaScript - 变量声明(let、const 和其他)
目录 一、引言 1. let 的作用 2. const 的作用 3. let 与 const 的选择 4. let 和 const 的性能 5. var, let, const 的对比 6. 常见误区 二、其他变量定义 1. var 关键字 2. 全局对象属性 3. 使用 IIFE(立即调用函数表达式) 4. ES6 模块 总结 …...

AC800PEC PC D231 3BHE025541R0101控制模块面价
AC800PEC PC D231 3BHE025541R0101控制模块面价 AC800PEC PC D231 3BHE025541R0101控制模块面价 AC800PEC PC D231 3BHE025541R0101控制模块面价 AC800PEC PC D231 3BHE025541R0101控制模块引脚线 AC800PEC PC D231 3BHE025541R0101控制模块说明书 AC800PEC PC D231 3BHE0…...

2024年3款免费录屏软件,你的电脑桌面上缺哪一个?
现在,不管是上网课、在家工作,还是拍视频,录屏软件都变得越来越重要了。想做个教学视频、录个操作指南,或者录个游戏的高光时刻,好的录屏软件都能帮你轻松搞定。这篇文章就是要聊聊免费录屏软件一般都有啥功能…...

Python爬虫新手指南及简单实战
网络爬虫是自动化获取网络信息的高效工具,Python因其强大的库支持和简洁的语法成为编写网络爬虫的首选语言。本教程将通过一个具体的案例(基于Microsoft Edge浏览器的简单爬取),指导你使用Python实现一个完整的网络爬虫࿰…...

如何有效开展产业链招商?
产业链招商是一种以产业大数据为依托、以产业链图谱为基础、以产业链分析为核心、以完善产业链结构为目标的招商引资方式。相比于传统招商模式,产业链招商比拼的并不是土地、政策优惠,而是以产业链分析为核心,诊断区域产业链结构及长短板&…...

爬虫中使用多进程、多线程的混合方式遇到的数据丢失问题
项目场景: 网络爬虫项目,主要实现多进程、多线程方式快速缓存网页资源到MongoDB,并解析网页数据,将信息写入到csv文件中。 问题描述 在单独使用多线程的过程中,是没有问题的,比如这个爬虫示例是爬取豆瓣电…...

多云应用安全平台RegData利用MongoDB简化数据控制和合规流程
在高度规范化市场中,为了保障数据安全,企业可能需要部署一系列繁琐且成本高昂的IT基础设施系统。随着各项数据安全保护措施的出台,企业需要遵守的法规数量越多,尤其是跨越多个地域的企业,其IT基础设施就会越复杂。如今…...

VUE实现TAB切换不同页面
VUE实现TAB切换不同页面 实现效果 资源准备 ReceiveOrderList, TodoListMulti, SignList 这三个页面就是需要切换的页面 首页代码 <template><div><el-tabs v-model"activeTab" type"card" tab-click"handleTabClick"><…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...