Codeforces Educational Round 23
A
emmmmmmmmm
B
emmmmmmmmm
C(套路)
题意:
给定n和s(n,s<=1e18),计算n以内有多少个数x满足(x-x的各个位置数字之和)>=s
分析:
容易想到如果x相对于s很大很大,那么肯定是满足条件的
那些小于s的数,肯定是不行的
于是x就可以从s开始,往后枚举1e6个,去判定这1e6个有多少个是满足条件的,再往后的那些x肯定是满足的,直接算出多少个就行了
D(插板法)
题意:
给定一个长度为n(n<=1e6)的数列,对于这个数列的一个连续的子列,定义value=该子列的最大值-最小值。求这个数列所有连续子列的value和
分析:
肯定要分开考虑,考虑一个数字a[i]作为最大值能贡献多少组子列,作为最小值能贡献多少组子列(作为最小值的时候是负贡献)
下面以求最大值为例,求最小值同理
问题就转变成了要求出每个数字a[i]往左往右至多扩展多长距离才遇见第一个比其大的数
可以先把所有数字排序,然后按照从大到小的顺序将数字插入到对应位置上,那么对于当前考察的a[i],离其最近的左边隔板和右边隔板就是它作为最大值的区间
这一过程可以用set来维护
时间复杂度O(nlogn)
E(Trie树处理异或比较问题)
题意:
在一个初始为空的集合中有1e5个操作:
1)插入一个数字p
2)删除一个数字p(保证合法)
3)输入p和l,询问当前集合中有多少个数字x满足p xor x < l
分析:
经典的Trie树处理异或比较问题
这里有个删除操作
实际上在Trie树上就直接暴力删就行了,复杂度O(logA)的
具体的就是从root开始沿着p数字的二进制位走,如果发现当前某一分支的sum==1,就说明这个分支下面只管理着一个节点(这就是我们要删的),所以直接在这里把树枝断掉就行了
复杂度O(qlogA)
F(线段树)
题意:
在一个初始为空的集合中有1e5个操作:
1)将[l,r]这些数加入到集合中(如果数字重复就只保留一个)
2)将[l,r]这些数从集合中删除(如果集合中本来就没有某个数,那这个数就不操作)
3)将[l,r]这些数在集合中的出现情况反转,也就是将原本在集合中存在的数删除,原本不在的数加入
l,r<=1e18
在每次操作之后,输出集合的mex,即最小的没有出现在集合中的正整数
分析:
每次的结果肯定会在所有的l、所有的r+1,以及数字1中产生
考虑先把所有数据读入,将这些数字离散,建立一个线段树
对于操作1和2,就是将线段树一段区间赋值,sum直接维护
对于操作3,就是将线段树一段区间异或(只有0和1),sum=len-sum
发现这个线段树是可以lazy的,并且可以合并
对于查询,就是寻找线段树上最左边的0的点,直接根据一个节点k的sum[lchild]与len[lchild]的大小关系即可判断是向左走还是向右走,查询也是O(logn)的
时间复杂度O(nlogn)
Codeforces Educational Round 23的更多相关文章
- Codeforces Educational Round 33 题解
题目链接 Codeforces Educational Round 33 Problem A 按照题目模拟,中间发现不对就直接输出NO. #include <bits/stdc++.h> ...
- Codeforces Educational Round 92 赛后解题报告(A-G)
Codeforces Educational Round 92 赛后解题报告 惨 huayucaiji 惨 A. LCM Problem 赛前:A题嘛,总归简单的咯 赛后:A题这种**题居然想了20m ...
- [CodeForces]Educational Round 52
幸好我没有打这场,我VP的时候在C题就卡死了,我果然还是太菜了. A Vasya and Chocolate 题意:一个巧克力\(c\)元,买\(a\)赠\(b\),一共有\(n\)元,问能买几个巧克 ...
- Codeforces Global Round 23 D.Paths on the Tree(记忆化搜索)
https://codeforces.ml/contest/1746/problem/D 题目大意:一棵n节点有根树,根节点为1,分别有两个数组 s[i] 顶点 i 的魅力值 c[i] 覆盖顶点 i ...
- Codeforces Educational Round 37
Solved CodeForces 920A Water The Garden Solved CodeForces 920B Tea Queue Solved CodeForces ...
- CF Educational Round 23 F.MEX Queries
写了3小时 = =.这两天堕落了,昨天也刷了一晚上hihocoder比赛,还爆了零.之后得节制点了,好好准备考研.. 首先很容易想到 压缩数据 + 线段树 然后对于Pushdown真很难写..需要牵涉 ...
- Codeforces Educational round 58
Ediv2 58 随手AK.jpg D 裸的虚树,在这里就不写了 E 傻逼贪心?这个题过的比$B$都多.jpg #include <cstdio> #include <algorit ...
- Codeforces Educational Round 57
这场出题人好像特别喜欢998244353,每个题里都放一个 A.Find Divisible 考察选手对输入输出的掌握 输出l 2*l即可(为啥你要放这个题,凑字数吗 #include<cstd ...
- Codeforces Educational Round 21
A =w= B qwq C wvw D(multiset) 题意: 有n(n<=1e5)个数,希望通过把一个位置y的数字放到位置x上这个操作,使得新序列的某个前缀和等于总和的一半,问这样的操作是 ...
随机推荐
- bootstrap框架栅格系统使用
使用的前端框架 bootstrap框架 Bootstrap是一个响应式的框架 我们在使用的时候主要使用的是它的网格系统, 1.bootstrap布局 布局容器:.container(用于固定宽度并支 ...
- 移动端rem
手机有很多尺寸的型号.使用rem来做为大小单位可以达到兼容的目的. 方法一:js测量手机尺寸,设置font-size:为手机屏幕width /10 + ‘px’.即10rem 为手机屏幕width. ...
- React 实践心得:react-redux 之 connect 方法详解
Redux 是「React 全家桶」中极为重要的一员,它试图为 React 应用提供「可预测化的状态管理」机制. Redux 本身足够简单,除了 React,它还能够支持其他界面框架.所以如果要将 R ...
- XamarinAndroid 自动绑定View变量
Android 编程时我们少不了使用FindIdByView函数,在Xamarin Android开发时也需要如此.这个工作很无聊且烦人.在常规Android开发中,人们已经发明了一些方法免除这项工作 ...
- java synchronized(object/this)的 区别
1.synchronized(object) package test.thread; import java.io.IOException; import org.junit.Test; /* * ...
- php5.6.30开启redis扩展
注:5.6版本的php一定要下载phpredis3.0以上的版本,之前自己下载用的2.2.4的redis,安装配置完成后,PHP死活不支持redis的扩展,通过phpinfo打印也压根看不到,重复服务 ...
- vue1.0生命周期
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue-cropper
项目中用到了vue-cropper插件,让我觉得很好用附上两个地址 vue-cropper在git上的地址 https://github.com/xyxiao001/vue-cropper 针对vue ...
- webpac入门
基于node环境,必须确保node已经安装:node-v,npm-v 基础入门 前身:browserify 缺点:只能转化JS webpack作用:一切都是模块化(js.css图片等),一个模块加载器 ...
- [转载]迅为4418开发板Qt移植移动4G模块第一部分
本文转自迅为论坛:http://topeetboard.com 平台:iTOP-4418开发板 1.首先要配置内核,这个一步和Android系统移植3G或者4G模块是一样的.一般模块的 ...