牛客NOIP暑期七天营-提高组1
牛客NOIP暑期七天营-提高组1
A
边权可为0就排序建一条链子。
但是边权不为0
除了第一个有0的不行。
x连向上一个比他小的数。
期间判断有无解。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int _=2e5+7;
int read() {
int x=0,f=1;char s=getchar();
for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;
for(;s>='0'&&s<='9';s=getchar()) x=x*10+s-'0';
return x*f;
}
int n,S;
struct edge{int a,b,c;};
struct node {
int id,val;
bool operator < (const node &b) const {
return val==b.val?id<b.id:val<b.val;
}
}a[_];
std::vector<edge> ans;
int main() {
// freopen("a.in","r",stdin);
n=read(),S=read();
for(int i=1;i<=n;++i) a[i].val=read(),a[i].id=i;
sort(a+1,a+1+n);
for(int i=2;i<=n;++i) if(!a[i].val) return puts("-1"),0;
for(int i=2;i<=n;) {
int las=i;
if(a[i].val-a[i-1].val>S) return puts("-1"),0;
while(a[i].val==a[las].val) ans.push_back(edge{a[las-1].id,a[i].id,a[i].val-a[las-1].val}),++i;
}
printf("%d\n",(int)ans.size());
for(auto x:ans) printf("%d %d %d\n", x.a,x.b,x.c);
return 0;
}
B
和XOR-MST差不多,就应该早做掉这个ZR题,要不就不用想呢么久了。答案就是XOR-MST上的最大的那条边。
感性:字数内的也是个完全图。因为边权都比外边的那条边小,随便连,两颗子树就可以变成任意形态的链子了。枚举端点就行了。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int _=1e6+7;
ll read() {
ll x=0,f=1;char s=getchar();
for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;
for(;s>='0'&&s<='9';s=getchar()) x=x*10+s-'0';
return x*f;
}
int n,ch[_*60][2],cnt=1,rt,dsr;
ll a[_],ans;
void insert(ll x) {
int p=1;
for(int i=59;i>=0;--i) {
bool k=x&(1LL<<i);
if(!ch[p][k]) ch[p][k]=++cnt;
p=ch[p][k];
}
}
ll query(ll x) {
int p=rt;
ll ans=0;
for(int i=dsr;i>=0;--i) {
bool k=x&(1LL<<i);
if(ch[p][k]) p=ch[p][k];
else p=ch[p][!k],ans|=1LL<<i;
}
return ans;
}
int main() {
// freopen("b.in","r",stdin);
n=read();
for(int i=1;i<=n;++i)
a[i]=read(),insert(a[i]);
rt=1,dsr=59;
while((!ch[rt][0]||!ch[rt][1])&&dsr>=0)
rt=ch[rt][0]|ch[rt][1],dsr--;
if(dsr<0) return puts("0"),0;
ch[rt][1]=0;
ans=1LL<<60;
for(int i=1;i<=n;++i)
if(a[i]&(1LL<<dsr)) ans=min(ans,query(a[i]));
cout<<ans<<"\n";
return 0;
}
C
没大看题,貌似很恶心的亚子。
牛客NOIP暑期七天营-提高组1的更多相关文章
- 牛客NOIP暑期七天营-提高组6
目录 A-积木大赛 题目描述 link 题解 代码 B-破碎的序列 题目描述 link 题解 C-分班问题 题目描述 link 题解 比赛链接 官方题解 A-积木大赛 题目描述 link 题解 标签: ...
- 牛客NOIP暑期七天营-提高组5+普及组5
————提高组———— 第一题:deco的abs 题目链接:https://ac.nowcoder.com/acm/contest/934/A 因为每个数都可以加任意次 d ,所以可以推出 0 < ...
- 牛客NOIP暑期七天营-提高组3
第一题:破碎的矩阵 题目链接:https://ac.nowcoder.com/acm/contest/932/A 刚看到这题的时候感觉特别熟悉...诶,这不就是codeforces某场比赛的某某 ...
- 牛客NOIP暑期七天营-提高组2
第一题:ACGT 题目链接:https://ac.nowcoder.com/acm/contest/931/A trie树.hash.map遍历 ①.trie树上的节点多记一个rest值表示还有多少 ...
- 牛客NOIP暑期七天营-提高组6C:分班问题 (组合数)
题意:A班有N个人,B班有M个人,现在要组成一个新的班级C班,为了公平,从AB班各抽相同人数的人. 现在求所有方案中,人数之和是多少. 思路:即求Σ k*C(N,k)*C(M,k); 先忽略这个 ...
- 牛客NOIP暑期七天营-提高组5
A:deco的abs. 水题,先%,然后相邻两个数min()一下差值. #include<bits/stdc++.h> #define ll long long using namespa ...
- 牛客NOIP暑期七天营-提高组2C:滑块(平衡树) (这里rope骗分)
A:hash 或者 map 或者trie. #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) usin ...
- 牛客NOIP暑期七天营-提高组1 解题报告
https://ac.nowcoder.com/acm/contest/920#question A 构造+双指针 发现m的限制是1e5,而点数是5e4,所以不能构造太多的边,思考一下最短路树的定义. ...
- 牛客NOIP暑期七天营-普及组2D
链接:https://ac.nowcoder.com/acm/contest/926/D来源:牛客网 在一维坐标系中,给定 n条有颜色的线段,第 i条线段的左右端点分别为 li和 ri,此外它的颜 ...
随机推荐
- 召唤神龙Ladon强化Cobalt Strike
Ladon5.5 20191109 wiki update 20191114 前言 Ladon 5.5支持Cobalt Strike,内置39个功能模块 加载脚本K8Ladon.cna,通过Ladon ...
- D-Bus
D-Bus三层架构 D-Bus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信.它是个3层架构的IPC 系统,包括: 1.函数库libdbus ,用于两个应用程序互相联系和交互消息. 2.一 ...
- Ext.Net GridPanel (属性|方法|配置|详细介绍)
1.Ext.NET ---- GridPanel 主要配置项: store:表格的数据集 columns:表格列模式的配置数组,可自动创建ColumnModel列模式 autoExpandColumn ...
- EF连接mysql,出现A call to SSPI failed错误,解决办法
我的使用场景是用EF连接AWS的mysql RDS,会偶发性的出现A call to SSPI failed错误, System.AggregateException: One or more err ...
- TCP/UDP协议(二)
面试问题:Tcp/Udp协议是什么,各有什么异同点,各自的使用场景? Tcp协议(传输控制协议) tcp是面向连接的协议,在收发数据之前,必须与对方建立可靠的连接: 三次握手:简单形象通俗描述: 主机 ...
- WebAPI HelpPage帮助页
WebAPI HelpPage是个插件,根据代码的注释生成API说明页,一目了然. 下面开始安装和配置 1.添加引用 先选择管理NuGet程序包,搜索 Microsoft.AspNet.WebApi. ...
- PIE SDK剔除栅格块算法
1.算法功能简介 剔除栅格块即剔除栅格小斑块功能.一幅影像图层某一区域存在碎小斑块,需要对其按照一定的条件进行剔除. PIE支持剔除栅格快算法功能的执行,下面对该算法功能进行介绍. 2.算法功能实现说 ...
- vue中路由在新的标签页打开
如下 let routeData = this.$router.resolve({ name: 'commercialPreview', query: {cylType: this.$route.qu ...
- 一文读懂Java线程状态转换
前言 本文描述Java线程线程状态及状态转换,不会涉及过多理论,主要以代码示例说明线程状态如何转换. 基础知识 1. 线程状态 Thread源码中的状态说明: 线程可以有6种状态: New(新建) R ...
- 【转载】c# datatable 判断值是否存在
在C#的数据表格DataTable操作过程中,有时候在操作DataTable前需要判断DataTable中的值是否存在,此时首选需要判断DataTable是否为null值,而后在判断DataTable ...