05 2018 档案

摘要:背景:最近czy刚讲了segmenttree,整理例题。 线段树操作要考虑: 0.记录必要数值 1.支持区间合并 2.标记覆盖 3.标记下放(cpu监控),数值上推(楼房重建) 4.保证log ........... T1: n 个数, qqq 次操作 操作0 x y把 Ax 修改为 y 操作1 l 阅读全文
posted @ 2018-05-31 21:48 *Miracle* 阅读(501) 评论(0) 推荐(0)
摘要:时间:2018年5月31日 8:00~11:00 题目:5 难度:普及+/提高- T1、T2略 T3: 题目: 此时,Conan 却在一旁玩着 2048。 这是一个 4*4 的矩阵,初始全为 0。每次一个没有数字的格子中会随机出现一个 2 或 4,每次可以选择上下左右其中一个方向去滑动,每滑动一次, 阅读全文
posted @ 2018-05-31 17:33 *Miracle* 阅读(332) 评论(0) 推荐(0)
摘要:可以支持的操作: 7.来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 0.预备: struct有:siz,sum(该点出现次数),fa,val,以及ch[0],ch[1] 1.pushup,新节点,回收节 阅读全文
posted @ 2018-05-28 20:54 *Miracle* 阅读(322) 评论(0) 推荐(0)
摘要:题目大意: 给出N个正整数a[1..N],再给出一个正整数k,现在可以进行如下操作:每次选择一个大于k的正整数a[i],将a[i]减去1,选择a[i-1]或a[i+1]中的一个加上1。经过一定次数的操作后,问最大能够选出多长的一个连续子序列,使得这个子序列的每个数都不小于k。M组询问,每组给出一个k 阅读全文
posted @ 2018-05-27 22:38 *Miracle* 阅读(254) 评论(0) 推荐(0)
摘要:题目大意: 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积。 要对10000007(非质数)取模 n<=10^15 分析: O(nlogn)暴力显然可以想出来。显然会tle 阅读全文
posted @ 2018-05-25 18:27 *Miracle* 阅读(255) 评论(0) 推荐(0)
摘要:题意: 小 C 在自己家的花园里种了一棵苹果树, 树上每个结点都有恰好两个分支. 经过细心的观察, 小 C 发现每一天这棵树都会生长出一个新的结点. 第一天的时候, 果树会长出一个根结点, 以后每一天, 果树会随机选择一个当前树中没有长出过结点 的分支, 然后在这个分支上长出一个新结点, 新结点与分 阅读全文
posted @ 2018-05-24 09:32 *Miracle* 阅读(258) 评论(0) 推荐(0)
摘要:2018-05-24 题目大意: 给一张由非负边组成的图,(可能有零边),设从出发点1到终点n的路径的最短路为d,求出所有到达n的路径中,路程长度为d~d+k的方案总数。(取模) 若有无数条,输出-1; 分析: 暴力: 1.30分k=0,最短路计数暴力妥妥30分 2.70分,因为,k<=50,比较小 阅读全文
posted @ 2018-05-23 21:11 *Miracle* 阅读(240) 评论(2) 推荐(0)
摘要:题目大意: 给定一棵有n个节点的有边权树,给定m个运输任务,每个任务从x出发到y,耗时就是树上两点之间的距离。所有运输任务同时开始,总耗时就是最大耗时。 现给一次机会,使某个树边的权值变为0,请选择合适树边,使得处理后,总耗时最小。 输出该最小值。 n<=300000,m<=300000 分析: 暴 阅读全文
posted @ 2018-05-21 23:16 *Miracle* 阅读(189) 评论(0) 推荐(0)
摘要:题目大意: 给定一棵严格的treap,父亲节点的优先级必然小于儿子节点的。权值按照二叉树的定义,左儿子小于父亲小于右儿子。 深度从1开始定义,每个点除优先级、数值之外,还有一个访问频度。 访问频度所产生的代价是:访问频度*该点深度(这和事实相符) 可以用给定的k的代价,修改任意个点的优先级为任意实数 阅读全文
posted @ 2018-05-20 11:20 *Miracle* 阅读(301) 评论(0) 推荐(0)
摘要:题目大意: 一共有n件食材,每件食材有三个属性,ai,bi和ci,如果在t时刻完成第i样食材则得到ai-t*bi的美味指数,用第i件食材做饭要花去ci的时间。 求最大美味指数之和。 分析: 显然的0/1背包,但是,它与平常的0/1背包不同之处在于:平常的物品不会因为时间的延续而使价值贬值,也就是说, 阅读全文
posted @ 2018-05-19 09:15 *Miracle* 阅读(186) 评论(0) 推荐(0)
摘要:题目大意: 给定n个点的有根树,每条边有边权,每个点有点权w, 你要在k个点上建立伐木场,对于每个没有建伐木场的点x,令与它最近的祖先、有伐木场的点,为y,你需要支付dis(x,y)*w[x]的代价。 选择合适的位置建伐木场,最小化总代价。 n<=100 分析: f[i][j][k]表示, 以i为根 阅读全文
posted @ 2018-05-18 15:27 *Miracle* 阅读(392) 评论(0) 推荐(0)
摘要:推荐:题解 P3977 【[TJOI2015]棋盘】 看不懂再来看本篇。 题目大意: 有个n行m列的棋盘,棋盘上可以放许多特殊的棋子。每个棋子的攻击范围是3行,p列。输入数据用一个3×p的矩阵给出了棋子攻击范围的模板,棋子被默认为模板中的第1行,第k列,则棋子能攻击到的位置是1,不能攻击到的位置是0 阅读全文
posted @ 2018-05-17 22:07 *Miracle* 阅读(491) 评论(0) 推荐(1)
摘要:参考:题解 P3813 【[FJOI2017]矩阵填数】 题目大意: 给定一个 h∗w 的矩阵,矩阵的行编号从上到下依次为 1...h ,列编号从左到右依次 1...w 。 在这个矩阵中你需要在每个格子中填入 1...m 中的某个数。 给这个矩阵填数的时候有一些限制,给定 n个该矩阵的子矩阵,以及该 阅读全文
posted @ 2018-05-17 15:21 *Miracle* 阅读(415) 评论(0) 推荐(0)
摘要:此题解只是详细一些,推荐大家先看一个更好的:题解 P3349 【[ZJOI2016]小星星】 就是该程序较机(gui)智(chu)。 题目大意: 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品。她有n颗小星星,用m条彩色的细线串了起来,每条细线连着两颗小星星。 有一天她发现,她的饰品被破坏了, 阅读全文
posted @ 2018-05-16 21:30 *Miracle* 阅读(260) 评论(0) 推荐(0)
摘要:题目大意: Welcome to SAO ( Strange and Abnormal Online)。这是一个 VR MMORPG, 含有 n 个关卡。但是,挑战不同关卡的顺序是一个很大的问题。 有 n – 1 个对于挑战关卡的限制,诸如第 i 个关卡必须在第 j 个关卡前挑战, 或者完成了第 k 阅读全文
posted @ 2018-05-16 11:07 *Miracle* 阅读(355) 评论(0) 推荐(1)
摘要:题目大意: N个骑士组个队,每个骑士有战力,每个骑士恨一人,相互憎恨不同在队里,怎样安排战斗力最大?输出最大总战斗力即可。 分析: 明显的,每个骑士恨一个人,那么这两个人之间可以连一条边。是有向的还是无向的?可以想到,如果一个骑士恨一个骑士,那么他们两个无论如何不可能在这个队里,我恨你,就相当于你恨 阅读全文
posted @ 2018-05-15 17:10 *Miracle* 阅读(213) 评论(0) 推荐(0)
摘要:简介: 莫队这个算法是莫涛提出的。 用于处理一类不带修改的区间查询问题的离线 算法,其核心在于利用曼哈顿距离最小生成树 算法对区间处理顺序进行处理 。 ——zrt课件 这个算法本质上其实是暴力,但是由于可以离线处理循环的顺序,使得复杂度可以从n^2降到n^根号n甚至更低。 对于可以找到以下特点的题可 阅读全文
posted @ 2018-05-13 12:08 *Miracle* 阅读(730) 评论(0) 推荐(0)
摘要:可持久化线段树,意思是可以查询历史记录的线段树。又叫主席树。我们可以通过记录不同的根节点,并在每一个更新到的节点处新建必要的节点。询问不同版本的主席树,只需要进入不同的根节点即可。 例题: 给定n,m,输入n个数组成的数列,有m个询问,每次询问l,r这个区间中,第k小的数的值。 分析: 这个题可以巧 阅读全文
posted @ 2018-05-13 12:04 *Miracle* 阅读(230) 评论(0) 推荐(1)
摘要:两种算法本质是相同的。 都是从某一个点开始进行延伸,不断更新一个dis值,直到所有的点都被遍历到,从而求出一个最短路或者是一个树的边权的最小总和。 朴素算法都是n^2,都可以采用堆优化处理,降低复杂度到mlogn. 但是在一张完全图上跑,此时m=n^2,朴素算法反而快一些。而且常数小。 相比较于SP 阅读全文
posted @ 2018-05-13 12:03 *Miracle* 阅读(1207) 评论(0) 推荐(0)
摘要:1.倍增LCA 通过记录f[i][j],每个点第2的j次方个父亲的编号,来找LCA 代码中,先要处理出每个点的深度,和father(f[i][0]),然后倍增求出所有的祖先。 work的时候,利用二进制拆分的思想,先把两个节点向上翻到同一个深度,再同时向上翻,直到到了lca的儿子位置,再返回f[x] 阅读全文
posted @ 2018-05-13 12:02 *Miracle* 阅读(662) 评论(1) 推荐(0)
摘要:意义: 树链剖分 就是对一棵树分成几条链,把树形变为线性,减少处理难度 概念 题目大意: 给定一棵有根树,给定每个点初值。 需要处理的问题: 分析: 树链剖分+线段树 树剖部分: 需要数组: 1.dfs1: 目标: ①找到fa,重儿子(son) ②处理节点深度,子树大小(size)(dep[root 阅读全文
posted @ 2018-05-13 12:00 *Miracle* 阅读(226) 评论(0) 推荐(0)
摘要:普通平衡树 Treap 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 输入输出格式 输入格式: 第一行为 n ,表示操作的个数,下面 n 行每行有两个数 opt 和 x , opt 表示操作的序号( 1≤opt≤6 ) 输出格式: 对于操作 3,4,5,6 阅读全文
posted @ 2018-05-13 11:59 *Miracle* 阅读(215) 评论(0) 推荐(0)
摘要:欧拉函数: 在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler'so totient function),它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8 阅读全文
posted @ 2018-05-13 11:56 *Miracle* 阅读(454) 评论(0) 推荐(0)
摘要:LICS:最长公共上升子序列; 一般令f[i][j]表示a串前i位,b串以j结尾的LICS长度。于是,答案为:max(1~m)(f[n][i]); 朴素做法:O(n^3) 相等时,从1~j-1枚举最大值。 算法时间复杂度改进思路主要从优化第三层(k)复杂度入手。 升级做法: O(n^2logn) 利 阅读全文
posted @ 2018-05-13 11:54 *Miracle* 阅读(366) 评论(0) 推荐(0)
摘要:基本思想在于将一个数拆分成每一位的数字,将总问题转化为子问题。 例:求[a,b]中各个数字出现次数。 (luogu2602 数字计数) 1.发现在i位数中(不考虑前导零),每一个数字出现的次数都相同。f[i]=f[i-1]*10+10^(i-1); 2.在ABCD中,将其拆为:A000+B00+C0 阅读全文
posted @ 2018-05-13 11:53 *Miracle* 阅读(226) 评论(0) 推荐(0)
摘要:压位高精:即通过将原来数组中一个位置存一位数,改为一个位置存p位数(8-10)。本质上是一种利用进制转换思想的压缩方式。 压位高精VS普通高精优势: 1.节省空间。(10倍以上) 2.节省时间(循环次数少)(10倍) 3.在对于高精与低精(乘法不超int)运算时,可以利用进制较高的优势,达到简化代码 阅读全文
posted @ 2018-05-13 11:52 *Miracle* 阅读(1025) 评论(0) 推荐(1)
摘要:Link Station 传送站 阅读全文
posted @ 2018-05-13 11:50 *Miracle* 阅读(900) 评论(0) 推荐(1)
摘要:方法一:scanf()读入char[] 使用方法: char str[1024]; scanf("%[^\n]",&str); getchar(); 方法二:getchar()读入char[] 使用方法: char str[1024]; int i=0; while((str[i]=getchar( 阅读全文
posted @ 2018-05-13 11:48 *Miracle* 阅读(495) 评论(0) 推荐(0)
摘要:1.floyd和dij(SPFA同理)算法的路径记录方法。 https://blog.csdn.net/silence401/article/details/62049708 2.背包中用到的vector直接复制。 https://blog.csdn.net/benTuTuT/article/det 阅读全文
posted @ 2018-05-13 11:47 *Miracle* 阅读(308) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/xiong452980729/article/details/51394036 阅读全文
posted @ 2018-05-13 11:46 *Miracle* 阅读(793) 评论(0) 推荐(0)
摘要:题目大意: 要求在平面直角坐标系下维护两个操作: 1.在平面上加入一条线段。记第 i 条被插入的线段的标号为 i 2.给定一个数 k,询问与直线 x = k 相交的线段中,交点最靠上的线段的编号。 若有多条线段符合要求,输出编号最小的线段的编号 (省略输入以及在线操作的要求) 分析: 明显的线段树特 阅读全文
posted @ 2018-05-13 11:45 *Miracle* 阅读(241) 评论(0) 推荐(0)
摘要:题目大意: 小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没有与之前的线段相交,那么这栋楼房就被认为是可见的。 施工队的建造总共进行了M天。初始时,所有楼房都还没有开始建造 阅读全文
posted @ 2018-05-13 11:43 *Miracle* 阅读(197) 评论(0) 推荐(0)
摘要:题目大意: 给定一个区间及其各个元素的初值,要求支持如下操作: 1.区间加 2.区间赋值 3.查询区间最大值 4.查询区间历史最大值 分析: 容易想到线段树,但是细思恶极(仔细想想恶心到了极点)的是,最后查询区间历史最大值的操作。 如果只记录区间历史最大值显然不能下放,如果单纯更新区间加,区间赋值最 阅读全文
posted @ 2018-05-13 11:42 *Miracle* 阅读(310) 评论(0) 推荐(0)
摘要:题目大意: 有n个数,要将他们分成若干段,每一段的cost定义为: cost=r-l+ΣCk (k∈[r,l]) 该段的最终花费是:(cost-L)^2; 给出L,n,C(1~n),总共的最小花费。 分析: dp方程极容易想出来: f[i]=max(f[j]+(sum[i]-sum[j]+i-j-1 阅读全文
posted @ 2018-05-13 11:41 *Miracle* 阅读(280) 评论(0) 推荐(0)
摘要:题目大意: 你初始时有∞ 元钱,并且每天持有的股票不超过 Maxp 。 有 T 天,你知道每一天的买入价格( AP[i] ),卖出价格( Bp[i] ), 买入数量限制( AS[i] ),卖出数量限制( BS[i] )。 并且两次交易之间必须间隔 W 天。 现在问你 T 天结束后,最大收益是多少。 阅读全文
posted @ 2018-05-13 11:39 *Miracle* 阅读(260) 评论(0) 推荐(0)
摘要:题目大意: 给出N个正整数,AB两个人轮流取数,A先取。每次可以取任意多个数,直到N个数都被取走。每次获得的得分为取的数中的最小值,A和B的策略都是尽可能使得自己的得分减去对手的得分更大。在这样的情况下,最终A的得分减去B的得分为多少。 分析: 我们身临其境地考虑一下,先手肯定是要从大到小取数,并且 阅读全文
posted @ 2018-05-13 11:38 *Miracle* 阅读(187) 评论(0) 推荐(0)
摘要:题目大意: 某人写了n封信和n个信封,如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。 分析: 方法一:递推 已经处理了f[0]~f[n-1],考虑f[n],新来了一个数n,这个数要放错位,有n-1种情况。其他的数的放置每次都有f[n-1]种情况,被n占用位置的数k,将k放在n位置, 阅读全文
posted @ 2018-05-13 11:37 *Miracle* 阅读(257) 评论(0) 推荐(0)
摘要:题目大意: 给定n和一串数字,这串数字是一个1~n的排列。现在要用两个栈给这些数字排序。首先先判断是否有解,有解的话再输出字典序最小的方案: 入栈1,输出a,出栈1,输出b 入栈2,输出c,出栈2,输出d 分析: 首先必然要先考虑是否有解。对于没有解的情况,必然是当到了某一个数x0时,栈1,栈2队首 阅读全文
posted @ 2018-05-13 11:36 *Miracle* 阅读(286) 评论(0) 推荐(0)
摘要:题意: 将n(n<=10^18)的各位数字重新排列(不允许有前导零) 求 可以构造几个mod m等于0的数字 分析: 状态压缩 状态: 设f[s][k]表示对于选择数字组合的s来说,%m等于k的排列数量。 第一维大小:2^18 第二维大小:100 阶段: 对于s的选择的枚举。s直接从1枚举到1<<( 阅读全文
posted @ 2018-05-13 11:34 *Miracle* 阅读(298) 评论(0) 推荐(0)
摘要:题目大意 给定一个 n 位的十进制数,可以在数字之间加 k 个' + ',得到一个式子,求每种方案的这个式子的和 分析: 容易想到将式子的和转化为每个数字的贡献值之和。 设数组a为:a(n-1),a(n-2),...,a(0); 对于每一个位置,我们可以以其右面第一个放加号的位置为界,确定它的数位和 阅读全文
posted @ 2018-05-13 11:33 *Miracle* 阅读(394) 评论(0) 推荐(0)
摘要:题目大意: 有n盏灯,(0<=n<=1000),有m盏已经点亮,每次只能点亮与已经点亮的灯相邻的灯,求总方案数,答案对1e9+7取模 第一行:两个整数n,m表示灯的总数和已点亮的灯的数目 第二行m个数,表示已点亮的灯的编号 分析: 我们可以借助已经被点亮的灯作为分界点,找到若干个长度不为0的开区间。 阅读全文
posted @ 2018-05-13 11:30 *Miracle* 阅读(303) 评论(0) 推荐(1)
摘要:题目大意: 给一个n边形,求出在所有任意三条对角线都不相交于同一个点的情况下,交点个数是多少。(即交点个数最多是多少) 分析: 题目很水,但是公式不好想。 由于任意三条对角线不会交于一点,所以所有的交点都是两条对角线相交而成的。这两条对角线来自四个点(可以当做求四边形的个数问题)。所以每有任意的四个 阅读全文
posted @ 2018-05-13 11:27 *Miracle* 阅读(147) 评论(0) 推荐(0)
摘要:题目大意: 给出k、n个数选择一种字典序最大的排列,使得对于任意的i,di>=d[i/k](下取整 下同) 分析: 很容易想到的是建树,将i的父亲设为[i/k],之后建有向边。 60分贪心: 将原先的a数组升序排列,直接根据子树大小分配排位。pai[i]=(同层级剩余的)-(子树大小)+1; 然而对 阅读全文
posted @ 2018-05-13 11:26 *Miracle* 阅读(177) 评论(0) 推荐(0)
摘要:题目描述 菲菲和牛牛在一块n 行m 列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手。 棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结束。 落子的规则是:一个格子可以落子当且仅当这个格子内没有棋子且这个格子的左侧及上方的所有格子内都有棋子。 棋盘的每个格子上,都写有两个非负整数 阅读全文
posted @ 2018-05-13 11:25 *Miracle* 阅读(302) 评论(0) 推荐(0)
摘要:题目大意: 在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选n 个人作为陪审团的候选人,然后再从这n 个人中选m 人组成陪审团。选m 人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0 到20。为了公平起见,法官选出陪审团的原则是 阅读全文
posted @ 2018-05-13 11:23 *Miracle* 阅读(436) 评论(0) 推荐(0)
摘要:题意: 给定若干子区间,以及目标区间,用最少的子区间覆盖目标区间。若无法实现,输出-1; 思路: 因为每取一个,花费都是1,所以可以使用贪心。(否则要用DP)子区间按照左端点由小到大排序,记录已被覆盖区间,每次找到左端点在[1~r+1]中的右端点的最大值,用有这个最大值的子区间参与覆盖。ans++; 阅读全文
posted @ 2018-05-13 11:18 *Miracle* 阅读(159) 评论(0) 推荐(0)
摘要:本文转载:http://www.cnblogs.com/YoungNeal/p/8530398.html 题目大意: 给定一棵树,有 n-1 条树边,m 条非树边,有两次割边的机会,第一次只能割树边,第二次只能割非树边,问有多少种方案使得两次之后树分为两个部分? 题解: 我们称每条非树边 (x,y) 阅读全文
posted @ 2018-05-13 11:13 *Miracle* 阅读(203) 评论(0) 推荐(0)
摘要:题意: 给出一个无向连通图,q次增加后询问,问每次增加后剩余“桥(割边)”的数量。 思路: 先将所有的边双连通分量找到,缩点变成树,找到dcc个数,桥数即为dcc-1; 对于每个询问,若c[x]==c[y]无影响;反之,在树上找到c[x]、c[y]的LCA,再将路上的桥变为0,sum++,最后桥数减 阅读全文
posted @ 2018-05-13 11:06 *Miracle* 阅读(223) 评论(2) 推荐(0)
摘要:洛谷P2761 1.考虑到所有的错误只有“修复,未修复”两种情况,所以可以用0,1标记压缩状态,采用位运算减少时空浪费。 又考虑到有修复时间的关系,将时间抽象成边,将状态抽象为点(设修复为0,未修复为1)最后从(1<<n)-1开始寻找到0的最短路,SPFA一边建图一边松弛即可。 2.实现过程中,难点 阅读全文
posted @ 2018-05-13 11:01 *Miracle* 阅读(207) 评论(0) 推荐(0)
摘要:洛谷P2567 要点: 很容易考虑到容斥。先预处理出所有幸运数字,加上它们的倍数个,再找所有两个的最小公倍数减去倍数个,再加上3的…… 至于[a,b],“前缀和”思想处理即可。 但是暴力的考虑复杂度2^2046,tle; 所以要考虑如下剪枝: 1.如果b|a,那么对于所有的x|b,都有x|a,所以这 阅读全文
posted @ 2018-05-13 10:59 *Miracle* 阅读(438) 评论(0) 推荐(0)
摘要:本篇博文记录一些机智操作,简洁方法,奇技淫巧。 阅读全文
posted @ 2018-05-13 10:48 *Miracle* 阅读(2206) 评论(0) 推荐(4)
该文被密码保护。
posted @ 2018-05-13 10:43 *Miracle* 阅读(111) 评论(0) 推荐(0)
摘要:本文章记录所错、易错细节要点。 阅读全文
posted @ 2018-05-13 10:07 *Miracle* 阅读(1089) 评论(0) 推荐(0)