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)的更多相关文章

  1. 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 ...

  2. 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 ...

  3. 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 ...

  4. 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 ...

  5. Codeforces Round #381 (Div. 2) C. Alyona and mex(无语)

    题目链接 http://codeforces.com/contest/740/problem/C 题意:有一串数字,给你m个区间求每一个区间内不含有的最小的数,输出全部中最小的那个尽量使得这个最小值最 ...

  6. 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 ...

  7. 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 ...

  8. 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 ...

  9. 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 ...

随机推荐

  1. 学习zepto.js(对象方法)[6]

    first: 获取当前对象集合中的第一个dom元素. $("div").first(); // 返回第一个div对象(zepto对象) //相当于$("div" ...

  2. 安装InfoPath 2013后 SharePoint 2010 出现 “找不到 Microsoft.Office.InfoPath, Version=14.0.0....” 的错误的解决方案

    1. 症状 您的SharePoint 2010的服务器是不是最近一直出现这个错误呢? Could not load file or assembly 'Microsoft.Office.InfoPat ...

  3. dede:field name='imgurls'不能二次使用的解决办法

    {dede:field name='imgurls' alt='图片输出区'}图片链接  [field:linkurl/]图片地址 [field:imgsrc/]{/dede:field} 这个标签不 ...

  4. IOS开发基础知识--碎片37

    1:iOS 使用NJKWebViewProgress做webview进度条 引入头文件: #import "NJKWebViewProgressView.h" #import &q ...

  5. 学习tensorflow之mac上安装tensorflow

    背景 听说谷歌的第二代机器学习的框架tensorflow开源了,我也心血来潮去探探大牛的产品.怎奈安装就折腾了一天,现在整理出来备忘. tensorflow官方网站给出的安装步骤很简单: # Only ...

  6. 我对uml类图关系的理解

    uml类图的关系: 泛化关系也就是继承. 实现关系就是一个类实现另外一个接口. 依赖关系就是一个类使用了另外一个类,是一种使用关系,在这个类的某个服务中需要另外一个类来协助. 关联关系就是一类拥有另外 ...

  7. SQLServer中修改字段为空

    ALTER 表名 table1 ALTER COLUMN [字段] 类型 NULL; 例如: ) COLLATE Chinese_PRC_CI_AS NULL;

  8. js中操作数组的一些方法

    增 push   在数组的末尾添加一个或多个元素,并返回新的长度.  array.push(1,2,3.........) unshift  在数组的开头添加一个或多个元素,并返回新的长度. arra ...

  9. 【Linux学习】Linux下用户组、文件权限详解

    原文地址:http://www.cnblogs.com/123-/p/4189072.html Linux下用户组.文件权限详解 用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在li ...

  10. 【Linux】Vim语法高亮显示

    配置vim 1. 安装vim2. 在hom创建文件.vimrc3. 修改.vimrc内容 syntax=on4. 打开vim,完成! 注: 预转的Vim(比如我现在的Linux Mint)不是完整版, ...