- 博客(50)
- 收藏
- 关注
原创 Hello world
#include <cstdio>using namespace std;int main(){ printf("hello world\n"); return 0;}虽然这个博客开了有一段时间,但到现在才写Hello World =.=所以说,我是YJSheep,schaf是德语的羊。感觉很高端 (实际上是yjsheep被人注册了)高中终于走上了OI这一条道,希望各位大犇带我会竭尽全
2017-08-18 10:50:41
486
原创 codeforces718C Sasha and Array
codeforces718C Sasha and Array 线段树Description维护一个序列,支持区间加,与求∑ri=lf(a)\sum_{i=l}^{r}f(a),其中ff为斐波那契。题解线段树真的是只要能合并,打标记什么都可维护呀!这道题目维护的就是fib的转移矩阵,就连打的标记都是矩阵。为什么可以合并? 因为矩阵满足 A∗C+B∗C=(A+B)∗CA*C+B*C=(A+B)*C
2017-07-05 20:29:07
519
原创 codeforces413E Maze 2D
codeforces413E Maze 2D 线段树Description给你一个2*n的迷宫矩阵,你可以上下左右移动,其中 . 为可以走, X 为不能走,问你任意两点间距离。题解很有趣的题目。我们可以把上下两个格子看成一个元素,然后? 然后就可以维护这样几个数值,从左上到右上,左上到右下,左下到右上,左下到右下的距离。转移方程是很容易可以想到的。这里就不写了,直接上代码。 这么小的迷宫,我肯
2017-07-05 20:28:35
490
原创 BZOJ2734 [HNOI2012]集合选数
BZOJ2734 [HNOI2012]集合选数Description求出集合{1,2,…..,n}中,满足: 诺x在该集合中,2x与3x不在集合。 的所有子集的个数。对答案mod 1000000001。题解这个题目很要思维了,反正我没想出来,但看了题解十分佩服。 我们构造一个矩阵, x 3x 9x .. 3nx3^nx 2x 6x 18x .. ..
2017-06-09 11:30:01
623
原创 BZOJ3675 [Apio2014]序列分割 斜率优化
BZOJ3675 [Apio2014]序列分割 斜率优化Description将一个长度为n的非负整数序列分割成k+1个非空的子序列。为了得到k+1个子序列,小H需要重复k次以下的步骤: 1.首先选择一个长度超过1的序列(一开始小H只有一个长度为n的序列——也就是一开始得到的整个序列); 2.选择一个位置,并通过这个位置将这个序列分割成连续的两个非空的新序列。 每次进行上述步骤之后,将会得到
2017-05-28 08:29:38
680
原创 BZOJ3437 小P的牧场 斜率优化
BZOJ3437 小P的牧场 斜率优化Description要求将一n(n<=1000000)个点的序列分割,每个分割点上有一个代价a[i],每个点被其右边的点控制,代价为其权值b[i]乘以这个点到其右边第一个分割点中间的点的个数,,求出怎么分割代价最小。题解我们记sum[i]为后缀和,记cnt[j]=∑i=nj(n+1−i)∗b[i]cnt[j]=\sum\limits_{i=n}^{j}(n+1
2017-05-28 08:14:43
471
原创 BZOJ1010 [HNOI2008]玩具装箱toy
BZOJ1010 [HNOI2008]玩具装箱toyDescription划分一个数列,区间[l,r]的值x=r−l+∑k=lrCkx=r-l+\sum\limits_{k=l}^{r}C_k 求∑(xi−L)2\sum (x_i-L)^2最小值。题解可以很容易想出状态转移方程 ,记sum[i]为前缀和, f[i]=max(f[j]+(i−j+1+sum[i]−sum[j]−l)2)f[i]=
2017-05-28 07:49:12
481
原创 BZOJ1060[ZJOI2007]时态同步
BZOJ1260[CQOI2007]涂色paintDescription小Q在电子工艺实习课上学习焊接电路板。一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数字1,2,3….进行标号。电路板的各个节点由若干不相交的导线相连接,且对于电路板的任何两个节点,都存在且仅存在一条通路(通路指连接两个元件的导线序列)。在电路板上存在一个特殊的元件称为“激发器”。当激发器工 作后,产生一个激励电流,
2017-05-20 17:45:07
2277
原创 BZOJ1260[CQOI2007]涂色paint (区间DP)
BZOJ1260[CQOI2007]涂色paint 区间DPDescription给定一个空白木板,你一次可以把一个区间的木板改成一中颜色, 问要求变成给定颜色的木板最少要多少次染色。题解这是典型的区间DP, 根据套路 ,我们可以得到dp式如果c[l]==c[r] f[l][r]=min(f[l+1][r],f[l][r-1]) f[l][r]=min(f[l][k]+f[k+1][r])#i
2017-05-20 17:38:17
572
原创 BZOJ1911 [Apio2010]特别行动队 斜率优化
BZOJ1911 [Apio2010]特别行动队 斜率优化Description给定一个序列与一个二次函数f(x),将序列连续分段使得所以区间和的二次函数和最大。求最大值。题解我们可以很容易想出状态转移方程,s表示前缀和。 f[i]=max(f[i],f[j]−F(s[i]−s[j]));f[i]=max(f[i],f[j]-F(s[i]-s[j])); 可是这样的复杂度有O(n2)O(n^2)
2017-05-20 17:14:13
492
原创 BZOJ4321 queue2 DP/递推
BZOJ4321 queue2Description求1~n的序列,满足一个数的左右两边的差的绝对值不等与1的方案数。 对答案mod 7777777题解很奇怪的状态,看了题解才搞懂。 钦定f[i][j][1]表示推到第i个数,其中有j对数是相差1的,其中i,与i-1相邻 f[i][j][0]表示推到第i个数,其中有j对数是相差1的,其中i,与i-1不相邻。我们先来分析i-1,i相邻,也就是f[
2017-05-17 22:28:20
1135
1
原创 BZOJ2442 [Usaco2011 Open]修剪草坪 (DP+单调队列)
BZOJ2442 [Usaco2011 Open]修剪草坪Description给定一个n(n<=1000000)个数的正整数序列,要求选取的数连续不超过k,问最大选取值为多少。题解因为序列是正整数,所以我们每次空着不选的长度一定是1。 于是我们可以很容易地推出状态转移方程。 钦定f[i]为序列到i,且第i位不选的最大答案,用sum[i]表示前缀和 我们有 f[i]=max(f[i],f[j
2017-05-17 22:05:59
605
原创 BZOJ2423 [HAOI2010]最长公共子序列 (LCS)
BZOJ2423 [HAOI2010]最长公共子序列 (LCS)Description求出两个数列的LCS长度与个数题解对与第一问,应该都会求,用基本的动态规划就可以搞定。 问题是怎么求个数。 令f[i][j]表示a序列到第i个数与b序列到第j个数的LCS长度。 令g[i][j]表示a序列到第i个数与b序列到第j个数的LCS个数。 如果a[i]==b[j] 那么f[i][j]==f[
2017-05-14 17:03:10
563
原创 nlogn求最长上升子序列 (POJ2533)
nlogn求最长上升子序列 (POJ2533)Description求最长上升子序列。题解LIS裸题,但我这里想讲一下nlogn的做法。其实我们可以发现,在通常的LIS算法中的的二个循环的过程中,为了寻找最大值,做了很多无用功。 于是,我们可以用一个单调栈来作为决策列表,用logn的时间来找到最优决策。 对于一个数,如果其大于栈定元素,就将其加入栈,以其结尾的答案就是栈的大小。这就代表着这个数可
2017-05-14 15:23:45
2609
原创 POJ1692 Crossed Matchings DP
POJ1692 Crossed Matchings DPDescription给出两列数,要求对上下相同的数进行连线,要求 1.一个数最多连一条线。 2.一条线必须且仅与一条线相交。 求最多可以连出几条线。题解这一题可以用LIS的思想来建立状态转移方程。 令f[i][j]表示第一行到i个数,第二行到j个数的答案。 f[i][j]=max(f[i][j−1],f[i−1][j])f[i][j
2017-05-14 14:35:27
675
原创 HDU2881 Jack's struggle (LIS)
HDU2881 Jack’s struggle (LIS)Description给定一个n*n的场地,与m个任务,每个任务要求在第t秒时到达(r,c)位置,每一秒你可以向上下左右移动一个单位。第0秒你可以在任意未知,求最多可以完成多少任务。题解很容易看出来,我们把任务按照时间排序之后就是一个LIS问题了。 判断是否可以转移就是看时间差是否大于欧几里德距离。 这题可以O(n2)O(n^2)卡过。
2017-05-13 17:23:19
575
原创 BZOJ3173 [Tjoi2013]最长上升子序列
BZOJ3173 [Tjoi2013]最长上升子序列Description将1到N插入序列中,接下是N个数字,第k个数字Xk,表示我们将k插入到位置Xk(0<=Xk<=k-1,1<=k<=N)求每一次插入的LIS题解每一次插入的数是递增的,所以我们知道对于一个数x,再最终数列的位置为DxD_x, 那么f[Dx]=max(f[Dx],f[Dx−1])f[D_x]=max(f[D_x],f[D_{x
2017-05-13 17:14:38
731
原创 BZOJ3038 上帝造题的七分钟2
BZOJ3038 上帝造题的七分钟2DescriptionXLk觉得《上帝造题的七分钟》不太过瘾,于是有了第二部。 “第一分钟,X说,要有数列,于是便给定了一个正整数数列。 第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作。 第三分钟,k说,要能查询,于是便有了求一段数的和的操作。 第四分钟,彩虹喵说,要是noip难度,于是便有了数据范围。 第五分钟,诗人说,要
2017-05-08 22:13:54
490
原创 BZOJ3211 花神游历各国 线段树+并查集
BZOJ3211 花神游历各国 线段树+并查集Description维护区间和,支持区间开根。Input第一行一个n表示序列有n个数 第二行n个数表示原始序列的值aia_i 第三行一个m表示m个操作。 第四行到最后为m个操作, 每行3个数,x,l,r。 当x=1时,表示求∑lrai\sum\limits_{l}^{r}a_i 当x=2时,表示对[l,r]开根,向下取整。Output对应
2017-05-08 22:09:33
2263
原创 POJ2777 Count Color 线段树
POJ2777 Count Color 线段树Description一个长为L,颜色为1的木板,有操作为 1.C A B C 将[A,B]涂上C颜色 2.P A B 询问[A,b]不同颜色个数。Input第一行 L,T,O O为操作个数,T为颜色种类最大个数。 下面O行为操作。Output对应询问输出答案。Sample Input2 2 4C 1 1 2P 1 2C 2 2 2P 1
2017-04-30 11:47:39
2600
原创 BZOJ1858 [Scoi2010]序列操作
BZOJ1858 [Scoi2010]序列操作Descriptionlxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询问操作: 0 a b 把[a, b]区间内的所有数全变成0 1 a b 把[a, b]区间内的所有数全变成1 2 a b 把[a,b]区间内的所有数全部取反,也就是说把所有的0变成1,把所有的1变成0
2017-04-30 11:46:56
2034
原创 BZOJ1067 [SCOI2007]降雨量
BZOJ1067 [SCOI2007]降雨量Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”。它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格小于X年。例如2002,2003,2004和2005年的降雨量分别为4920,5901,2832和3890, 则可以说“2005年是自2003年以来最多的”,但不能说“2005年是自2002年以来最多
2017-04-30 11:45:52
613
原创 BZOJ2957 楼房重建
BZOJ2957 楼房重建 线段树Description小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。 为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何
2017-04-13 15:45:34
1574
原创 BZOJ3226 [Sdoi2008]校门外的区间
BZOJ3226 [Sdoi2008]校门外的区间 线段树Description抽象出5种运算维护集合S(S初始为空)并最终输出S 输入 操作 U T S∪T I T S∩T D T S-T C T T-S S T S⊕T基本集合运算如下: 输入 操作 A∪B {x : xÎA or xÎB} A∩B {x : xÎA and x
2017-04-13 15:30:27
544
原创 BZOJ3878 [Ahoi2014]奇怪的计算器 线段树
BZOJ3878 [Ahoi2014]奇怪的计算器Description对于一个储存数据大小只有[L,R]的计算器,有4个操作, 1、+ a:表示将当前的结果加上a; 2、- a:表示将当前的结果减去a; 3、* a:表示将当前的结果乘以a; 4、@ a:表示将当前的结果加上a*X(X是一开始输入的数)。 计算器每次会把超过R或低于L的储存为R或L继续后续计算。 给定n个操作,与q个数,
2017-04-10 22:41:45
2333
原创 POJ3177/BZOJ1718 Redundant Paths : Tarjan求桥+贪心
POJ3177/BZOJ1718 Redundant Paths : Tarjan求桥+贪心
2017-04-01 09:00:43
2942
原创 HDU3639 Hawk-and-Chicken Tarjan缩点 +dfs+贪心
###HDU3639 Hawk-and-Chicken :Tarjan缩点 +dfs+贪心####Description一个N(0~n-1)个点与M条边的有向图,他们是有传递关系的,问对于图中哪些点是其他最多点能到达他的。#####Input第一行一个T,表示T组测试数据.每组数据第一行为N,M后面M行为两个正整数A,B,代表A到B有一条有向边.#####Output对应每组数据输出若干个答案.
2017-04-01 08:58:33
1887
原创 POJ2378 BZOJ3391 网络破坏 Tarjan割点
###POJ2378/BZOJ3391 网络破坏 : Tarjan割点+dfs####Description 约翰意识到贝茜建设网络花费了他巨额的经费,就把她解雇了.贝茜很愤怒,打算狠狠报复.她打算破坏刚建成的约翰的网络. 约翰的网络是树形的,连接着N(1≤N≤10000)个牛棚.她打算切断某一个牛棚的电源,使和这个牛棚相连的所有电缆全部中断.之后,就会存在若干子网络.为保证破坏够大,每一个子网的牛
2017-04-01 08:57:42
1546
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人