Codeforces Round #381(div 2)
A、(分类讨论)
题意:你有n本书,有三种买书方案,花a元买1本,花b元买2本,花c元买3本,问最少花多少钱,使得你书的总数是4的倍数
分析:分类讨论的题,但是要注意你可以买超过4本书……可以买5本、6本、7本让你达到4的倍数
B、=w=
C、(构造)
题意:设mex[i][j]表示一段区间i,j内最小的没出现过的非负整数,你有m个询问[x,y],构造一个数组a,使得m个询问对应的区间中mex最小的最大。
分析:易得让最短的区间的值填0..ans-1,构造的话就是先把最短区间从x到y依次填上0..ans-1,再将其他区间排序,从头到尾模拟着补充填
然后看见了一种十分巧妙的构造方法,就是a[]={0,1,2...ans-1,0,1,2...}这样任意一个区间必然有0..ans-1
D、(dfs序+二分)
题意:给你一棵树,有点权和边权,对于一个节点u,如果节点v是u的子孙,且dist(u,v)<=val(v),则u能掌握v,问每个节点分别能掌握多少节点。(n<=2e5)
分析:根据dfs序,对于每次dfs得到的栈里的点,必然是从根开始的一条路径,对于新遍历的节点u,栈中的节点stack[i]满足dist(u,stack[i])的单调性,所以可以根据val(u)的值二分出栈中哪一段点可以掌控节点u,那么给这一段加上1
这种当然不需要线段树,和一维数组类似,每个点记录和父亲节点的答案差d[i],那么从最底层往上走一遍就得出了每个点的答案,具体的每个点答案是所有儿子节点的答案和。
E、(线段树)
题意:有n个数,m个操作x,y,z,每次操作先将[x,y]上的数都加上z,然后再询问整个数组最长的“山峰”序列,"山峰”是指先严格单增后严格单减的连续序列。(n<=3e5)
分析:遇见前后数差的问题,想到写出差值数组,对于数组b[n]得到差值数组a[n-1]
问题其实就是求a[]数组中最长的+ + + + + - - - - - - -这种序列
对于修改也很简单,和D题一样,在两个位置删+z -z就行
这个可以用线段树来维护
具体的要维护3个域mx,mxl,mxr分别表示区间最长值,从左边开始可以延伸的最长值,从右边开始可以延伸的最长值
合并[l,mid] [mid+1,r]的时候:
先就是普通的mx[k]=max(mx[l],mx[r]),mxl[k]=mxl[l],mxr[k]=mxr[r]
然后看能否再更新
如果a[mid]和a[mid+1]有一个为0,说明两边无法接起来,就无法更新了
如果a[mid]是负的,a[mid+1]是正的,也无法接起来,仍旧无法更新
如果a[mid]和a[mid+1]同号,或者a[mid]为正,a[mid+1]为负,那么很显然可以接,mx[k]再和mxr[l]+mxl[r]比较
对于mxl和mxr的更新,也是同理分析
Codeforces Round #381(div 2)的更多相关文章
- Codeforces Round #381 (Div. 1) B. Alyona and a tree dfs序 二分 前缀和
B. Alyona and a tree 题目连接: http://codeforces.com/contest/739/problem/B Description Alyona has a tree ...
- Codeforces Round #381 (Div. 1) A. Alyona and mex 构造
A. Alyona and mex 题目连接: http://codeforces.com/contest/739/problem/A Description Alyona's mother want ...
- Codeforces Round #381 (Div. 2) D. Alyona and a tree 树上二分+前缀和思想
题目链接: http://codeforces.com/contest/740/problem/D D. Alyona and a tree time limit per test2 secondsm ...
- Codeforces Round #381 (Div. 2) D dfs序+树状数组
D. Alyona and a tree time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- Codeforces Round #381 (Div. 2) C. Alyona and mex(无语)
题目链接 http://codeforces.com/contest/740/problem/C 题意:有一串数字,给你m个区间求每一个区间内不含有的最小的数,输出全部中最小的那个尽量使得这个最小值最 ...
- Codeforces Round #381 (Div. 2) A B C 水 构造
A. Alyona and copybooks time limit per test 1 second memory limit per test 256 megabytes input stand ...
- Codeforces Round #381 (Div. 2)D. Alyona and a tree(树+二分+dfs)
D. Alyona and a tree Problem Description: Alyona has a tree with n vertices. The root of the tree is ...
- Codeforces Round #381 (Div. 2)C. Alyona and mex(思维)
C. Alyona and mex Problem Description: Alyona's mother wants to present an array of n non-negative i ...
- Codeforces Round #381 (Div. 2)B. Alyona and flowers(水题)
B. Alyona and flowers Problem Description: Let's define a subarray as a segment of consecutive flowe ...
随机推荐
- 怎么才能算大项目(Application),大的衡量?
最近在思考一个问题,就是怎么才算一个大型项目,大的衡量有哪些东西?为什么要搞清这个问题呢,是因为在实际的开发过程中,如果知道这是个多大的项目,那就有各种相应的解决方案(我们称之为套路的东西)就可以使用 ...
- window对象的属性及事件。
不同的运行环境有不同的“顶层对象”,而在浏览器的环境中,顶层对象就是window对象.window就是指当前的浏览器窗口. 例:var a = 1: window.a; //1 1.window对象的 ...
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(四)地图导航控件模块
config.xml文件的配置如下: <widget left="10" top="50" config="widgets/Navigation ...
- 给DB数据表加强制索引
DB2 数据库会根据DB层的统计值决定 根据查询条件走哪一个索引,某些情况下,由于未知原因,索引会走偏,故程序中可以规定程序走哪一个索引来避免索引走偏的情况发生. 强制走索引的 实例代码如下: SEL ...
- Set up Github Pages with Hexo, migrating from Jekyll
Set up Github Pages with Hexo, migrating from Jekyll. 本文介绍用Hexo建立github pages, 其中包含了从Jekyll迁移过来的过程. ...
- entity Framework codefirst Migrations
一次数据迁移的记录 首先在vs工具里面使用打开程序包管理器控制台 在控制台上面选择程序集为数据访问层 注意配置生成app里面的连接字符串 在控制台输入 Enable-Migrations 会自动生成一 ...
- Android 拍照后保证保证图片不失真,进行压缩
今天在网上找了一下参考,得出把图片压缩至KB 其他不想多说.直接上代码 拍完照后调用下面代码 BitmapUtils.compressBitmap(photoPath, photoPath, 640) ...
- Android app被系统kill的场景
何时发生 当我们的app被切到后台的时候,比如用户按下了home键或者切换到了别的应用,总之是我们的app不再和用户交互了,这个时候对于我们的app来说就是什么事情都可能发生的时候了,因为系统会认为你 ...
- js(javascript)与OC(Objective-C)交互
实质上oc与js的通信交互就是发送消息,也即函数调用,iOS7以后官方公布JavaScriptCore framework中很方便我们对他们之间的相互调用.在以前我们只能通过UIWebView的UIW ...
- LeakCanary内存泄漏检测工具使用步骤
LeakCanary内存检测工具使用步骤: 第一步,进入app目录下的build.gradle,在最下面找到dependencies{},里面添加如下三行语句: debugCompile 'com.s ...