Codeforces Round #851 (Div. 2) 题解
Codeforces Round #851 (Div. 2) 题解
A. One and Two
取 \(\log_2\),变成加号,前缀和枚举 \(s[i]=\dfrac{s[n]}{2}\)。
B. Sum of Two Numbers
对于每一位,如果是偶数则平均分,如果是奇数则分给当前数字和小的数多 \(1\)。
C. Matching Numbers
随便推个构造即可,给个参考。
void solve(){
int n;
cin>>n;
if(n%2==0){
cout<<"NO"<<endl;
return;
}
cout<<"YES"<<endl;
n*=2;
cout<<"1 "<<n<<endl;
for(int i=2,tmp=n-2;i<=(n+2)/4;i++,tmp-=2)
cout<<i<<" "<<tmp<<endl;
for(int i=(n+2)/4+1,tmp=n-1;i<=n/2;i++,tmp-=2)
cout<<i<<" "<<tmp<<endl;
return;
}
D. Moving Dots
考虑所求对于一个状态,必然是两个点“双向奔赴”的时候才有贡献。枚举这相邻的两个点 \(x,y\),然后发现 \([x-len,y+len-1]\) 这一范围内其他数取不了。使用 lower_bound
随便求就好了。
时间复杂度 \(O(n^2\log n)\)。
E. Sum Over Zero
转移为前缀和,写出 \(dp\) 状态为:
\]
考虑把 \(f_{j-1}-j\) 试做一个整体,那么相当于维护这玩意最小值。
树状数组即可。
#include<iostream>
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<vector>
#include<map>
#include<set>
using namespace std;
#define ll long long
#define MP make_pair
inline ll read(){
ll re=0;char ch=getchar();
while(ch>'9'||ch<'0') ch=getchar();
while(ch>='0'&&ch<='9') re=10*re+ch-'0',ch=getchar();
return re;
}
int n;
namespace sugt{
int mx[200005];
void build(){
for(int i=1;i<=n;i++) mx[i]=-1e9;
}
int lowbit(int x){
return x&(-x);
}
void ins(int x,int y){
while(x<=n){
mx[x]=max(mx[x],y);
x+=lowbit(x);
}
return;
}
int query(int x){
int res=-1e9;
while(x){
res=max(res,mx[x]);
x-=lowbit(x);
}
return res;
}
}
ll s[200005],t[200005];
int f[200005];
map<ll,int> M;int tot=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i];
s[i]+=s[i-1];
t[i]=s[i];
}
sort(t,t+n+1);
for(int i=0;i<=n;i++)
if(!M[t[i]]) M[t[i]]=++tot;
for(int i=0;i<=n;i++)
s[i]=M[s[i]];
sugt::build();
sugt::ins(s[0],0);
for(int i=1;i<=n;i++){
f[i]=max(f[i-1],sugt::query(s[i])+i);
sugt::ins(s[i],f[i-1]-i);
}
cout<<f[n];
return 0;
}
F. XOR, Tree, and Queries
引理: 假设 \(w(u,v)\) 为 \(u,v\) 路径上所有边权异或,则 \(w(u,v)=w(1,u)\ \text{xor}\ w(1,v)\)。
本题相当于给 \(w(1,u)\) 赋权。\(w(1,u)\) 有贡献当且仅当 \(d(u)\) 为奇数。
对于每个 \((u,v,w)\) 连边,每个连通块选代表点,代表点确定整个块确定。
拆位枚举即可。
Codeforces Round #851 (Div. 2) 题解的更多相关文章
- Codeforces Round #182 (Div. 1)题解【ABCD】
Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...
- Codeforces Round #608 (Div. 2) 题解
目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...
- Codeforces Round #525 (Div. 2)题解
Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...
- Codeforces Round #528 (Div. 2)题解
Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...
- Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F
Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...
- Codeforces Round #677 (Div. 3) 题解
Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...
- Codeforces Round #665 (Div. 2) 题解
Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...
- Codeforces Round #160 (Div. 1) 题解【ABCD】
Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...
- Codeforces Round #383 (Div. 2) 题解【ABCDE】
Codeforces Round #383 (Div. 2) A. Arpa's hard exam and Mehrdad's naive cheat 题意 求1378^n mod 10 题解 直接 ...
- Codeforces Round #271 (Div. 2)题解【ABCDEF】
Codeforces Round #271 (Div. 2) A - Keyboard 题意 给你一个字符串,问你这个字符串在键盘的位置往左边挪一位,或者往右边挪一位字符,这个字符串是什么样子 题解 ...
随机推荐
- Leetcode 42题 接雨水(Trapping Rain Water) Java语言求解
题目链接 https://leetcode-cn.com/problems/trapping-rain-water/ 题目内容 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱 ...
- 同时配置github和gitee秘钥
1.设置用户名和邮箱 git config --global --list 查看全局配置信息 git config --global --list 删除配置:必须删除该设置 git config -- ...
- 【栈和队列】纯C实现栈和队列以及其基本操作-宝藏级别数据结构教程【保姆级别详细教学】
[栈和队列]栈和队列的C语言实现-宝藏级别数据结构教程-超详细的注释和解释 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种非常重要的动力 看完之后别忘记 ...
- 体验 ABP 的功能和服务
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. ABP是一个全栈开发框架,它在企业解决方案的各个方面都有许多构建模块.在前面三章中 ...
- Linux C/C++ 获取进程号、线程号和设置线程名
1 前言 在Linux开发过程中,设计多线程开发时可以将进程和线程的 id 打印出来,方便开发调试和后期查问题使用,同时也包括设置线程名. 2 函数及头文件 2.1 进程ID #include < ...
- 《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(下)
第 3 章 ASP.NET Core 核心特性 3.5 配置 要访问配置,需要使用 ConfigurationBinder 类,它实现了 IConfigurationBuilder 接口,该接口包括两 ...
- Flink CDC写入数据到kafka几种格式
Flink CDC写入kafka几种常见的数据格式,其中包括upsert-kafka写入后正常的json格式,debezium-json格式以及changelog-json格式. upsert-kaf ...
- 【译】.NET 8 网络改进(三)
原文 | Máňa,Natalia Kondratyeva 翻译 | 郑子铭 简化的 SocketsHttpHandler 配置 .NET 8 添加了更方便.更流畅的方式来使用 SocketsHttp ...
- ABC 332
ABCDF 都赛时做出来了. E \(\displaystyle\dfrac{1}{D}\sum_{i=1}^D (x_i-\overline{x})^2=\dfrac{1}{D}(\sum_{i=1 ...
- IPFS 添加和管理文件
IPFS的文件有不同的模式 默认模式 默认模式下, 文件会被解析并存入blocks, 同时文件的结构被存入filestore, 因为IPFS是按内容寻址的文件系统, 在添加时最外层的目录名或文件名信息 ...