自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

linkfqy

                          ——A link to FQY.

  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 【DFS序+线段树】BZOJ1103 [POI2007]大都市meg

题面在这里很显然可以用DFS序把树上问题转化为区间问题修改一条边只影响了下面那棵子树中所有点的答案线段树维护区间加,单点询问就好了示例程序:

2017-09-30 08:05:09 718

原创 【二维树状数组】BZOJ1452 [JSOI2009]Count

题面在这里二维树状数组裸题……不解释了,直接上代码示例程序:

2017-09-29 20:02:38 746

原创 【BFS+链表】BZOJ1098 [POI2007]办公楼biu

题面在这里显然是求补图的联通块个数……考虑每次找一个点扩展,那么已经遍历过的点就可以无视了因为每个点只能属于一个联通块。用链表来实现点的删除,这样就可以只访问未删除的点了由于每个点只被遍历一次,所以总复杂度为O(n+m)O(n+m)示例程序:

2017-09-29 15:26:05 770

原创 【主席树】BZOJ3524 [Poi2014]Couriers

题面在这里主席树裸题……每次找到最多的那个值就好了如果最多的都没有超过r−l+12r-l+1 \over 2,就是0了示例程序:

2017-09-28 10:56:28 710

原创 【斜率优化DP】BZOJ1911 [Apio2010]特别行动队

题面在这里又是一道最简单的斜率优化……如下推导: fi=Max{fj+a(Si−Sj)2+b(Si−Sj)+c}fi=Max{fj+aS2j−bSj−2aSiSj}+c+aS2i−bSj设k=2aSi,x=Sj,y=fj+aS2j−bSj 则:b=y−kxy=kx+bf_i=Max\{ f_j+a(S_i-S_j)^2+b(S_i-S_j)+c \} \\f_i=Max\{ f_j+aS_j^

2017-09-27 21:40:59 706

原创 【暴力讨论+主席树】Codeforces 853C Boredom

题面在这里按照每次询问的子矩阵,把整个矩阵分为9块:1 2 34 5 67 8 9(块5是询问的子矩阵)那么块1与块5,6,8,9中的点有贡献,累计sum(1)∗sum(5+6+8+9)sum(1)*sum(5+6+8+9)(sum表示这个块里点的个数)……以此类推,暴力讨论每个块的贡献就好了怎么求sum?由于每一列有且只有1个点其实就是求一个序列的指定区间中值属于某个范围的个数用主席树维护就好

2017-09-27 18:00:31 608

原创 【贪心+并查集】Codeforces 853A Planning

题面在这里这题其实非常水……只需要按照(Ci,i)(C_i,i)的优先级顺序对每个航班取能取的最早的时刻这个贪心很显然吧……示例程序:

2017-09-27 17:47:22 714

原创 【大胆乱搞】HDU5762 Teacher Bo

题面在这里可以发现曼哈顿距离最多有2×1052\times 10^5种根据鸽笼原理,暴枚点对,判断每个曼哈顿距离是否出现过即可示例程序:

2017-09-26 19:56:07 672

原创 【差分+费用流|单纯形】BZOJ3112 [Zjoi2013]防守战线

题面在这里这道题和BZOJ1061是一样的只是需要先对等式差分一下接下来就一模一样了注:此题须用ZKW费用流才能过示例程序:#include<cstdio>

2017-09-25 21:24:20 717

原创 【费用流|单纯形】BZOJ1061 [Noi2008]志愿者招募

题面在这里这道题大佬一看就是裸的单纯形,但是也可以用费用流求解为了锻炼思维,Manchery神犇多次强调要打费用流于是……参考这篇博客:主要思想就是列出每一天第i种志愿者雇佣人数XiX_i与需求人数AiA_i的关系并加/减一个Yi(Yi>0)Y_i(Y_i\gt 0)使其变为等式然后处理一下得到Xi,Yi,AiX_i,Y_i,A_i的关系因为AiA_i是已知量,Xi,Yi,AiX_i,Y_i,A_i

2017-09-25 18:38:11 1250

原创 【二分+乱搞】Codeforces 743E Vladik and cards

题面在这里发现子序列的长度是单调的,所以可以直接二分答案如果答案确定了,那么每个数字(1~8)(1\text{~}8)只能取⌊mid8⌋\lfloor \frac {mid} 8 \rfloor或⌊mid8⌋+1\lfloor \frac {mid} 8 \rfloor+1再8!8!暴力枚举一下8个数字出现的顺序然后直接乱搞就可以验证答案是否符合题意复杂度:由于加了很多剪枝,复杂度远小于O(nlog

2017-09-24 15:08:39 595

原创 【分治计数】BZOJ4237 稻草人

题面在这里二维的分治计数……其实思路还是一样的,将当前区间分为上下两部分然后对两个部分分别按x排序考虑上面的每个点,只有当xi<xj且yi<yjx_i \lt x_j \text{且} y_i<y_j时,点i能够约束点j的矩阵那么用递增的单调栈维护前面第一个y值比i小的点对于下面的每个点,同理因此维护递减的单调栈,使上面任意点都可以与其形成合法矩阵考虑上面的每个点i对答案的贡献显然在单调栈中前一个与

2017-09-23 10:08:49 705

原创 【分治计数|单调栈】51Nod 1215 数组的宽度

题面在这里用单调栈分别维护maxmax和minmin的”势力范围”显然很好做其实分治的话就更简单了只需要记录mxmx和mnmn以及它们的前缀和就好了分类讨论一下,这是分治计数的核心示例程序:分治计数:

2017-09-21 21:50:34 628

原创 【分治计数】BZOJ3745 [Coci2015]Norma

题面在这里分治计数的经典题目……对midmid右边的每个位置维护以下量:i−midi-mid的前缀和前缀maxmax和minmin前缀maxmax和minmin的前缀和mxmx和mnmnmx⋅mnmx\cdot mn的前缀和mx⋅mn(i−mid)mx\cdot mn (i-mid)的前缀和mx(i−mid)mx(i-mid)和mn(i−mid)mn(i-mid)的前缀和然后JXB讨论一下就好了示

2017-09-21 21:43:58 741

原创 【堆+贪心】BZOJ1150 [CTSC2007]数据备份Backup

题面在这里先把整个数组差分一下,问题就转化成了:从n个元素中选择各不相邻的k个,使得其加和最小用堆来维护。每次中堆中取出权值最小的一个元素xx,计入答案然后将其与相邻的两个元素l,rl,r合并为一个新的元素,权值为l+r−xl+r-x将新元素放入堆中如此k次即可。可以用双向链表维护元素的相邻关系。此方法的正确性在于:当从堆顶取得一个新元素时,就相当于撤销了xx,改为取ll和rr这样取的次数仍然等于取

2017-09-20 21:36:08 741

原创 【置换群】51Nod 1125交换机器的最小代价

题面在这里ZZK说这是傻逼题但是我觉得好难啊显然,要使最终归为有序,必定构成若干个置换群对于每个置换群有两种方案:找群里最小的点,交换一圈群里最小点与群外最小点交换,交换一圈,再换回来然后就没有然后了示例程序:

2017-09-19 20:59:17 843

原创 关于高斯消元

其实是很简单的一个算法,之前一直不会……主要思想如下:我们现在有n个关于未知数xi,(1≤i≤n)x_i,(1\le i\le n)的方程: ∑j=1na1,jxj=a1,n+1∑j=1na2,jxj=a2,n+1…∑j=1nan,jxj=an,n+1\sum_{j=1}^n a_{1,j}x_j=a_{1,n+1} \\\sum_{j=1}^n a_{2,j}x_j=a_{2,n+1} \\

2017-09-19 19:26:08 975 1

原创 【高斯消元】BZOJ1013 [JSOI2008]球形空间产生器sphere

题面在这里高斯消元裸题,把球心的坐标设出来,再搞一搞把二次项消掉就好了示例程序:

2017-09-19 19:09:59 525

原创 【数学乱搞】HDU1568 Fibonacci

题面在这里Lynstery大佬说这是傻逼题……首先考虑斐波那契的通项公式: Fn=15√⎡⎣(1+5√2)n−(1−5√2)n⎤⎦=15√(1+5√2)n⎡⎣1−(1−5√1+5√)n⎤⎦log10(Fn)=log10(15√)+n⋅log10(1+5√2)+log10⎡⎣1−(1−5√1+5√)n⎤⎦F_n=\frac 1 {\sqrt 5} \left[ \left(\frac {1+\sq

2017-09-17 20:41:01 803

原创 【斐波那契数列】51Nod 1350 斐波那契表示

题面在这里一道神奇的数学题……首先需要了解:将一个数每次减去最大可减的斐波那契数,一定是最优的方案之一以下用fif_i表示斐波那契数列的第i项则有: Gfi−1=Gfi−1−1+Gfi−fi−1−1+fi−fi−1⇒Gfi−1=Gfi−1−1+Gfi−2−1+fi−2G_{f_i-1}=G_{f_{i-1}-1}+G_{f_i-f_{i-1}-1}+f_i-f_{i-1} \\\Rightar

2017-09-13 21:18:55 851

原创 【数学结论】51Nod 1674 区间的价值 V2

题面在这里很容易发现,一个序列的前缀and/or值可分为log(V)log(V)块其中V是序列中元素的最大值然后这题就很好做了枚举区间的右端点i,同时维护每一个块的范围和值显然有and块和or块两种分开维护那么i往后推一个,其实就是把每个块的值and/or上当前位置,再加上单点i然后合并相邻且值相等的块扫一波统计答案即可示例程序:

2017-09-10 15:31:02 722

原创 【反序表+DP】51Nod 1020 逆序排列

题面在这里科普一下关于反序表的知识:一个1到n的排列的反序表第 ii 位表示排列中 ii 的左边有几个比 ii 大的。反序表每位的取值范围:[0,0],[0,1],[0,2],[0,3]...,[0,n−1][0,0],[0,1],[0,2],[0,3]...,[0,n-1]排列和反序表是一一对应的关系。反序表每位相互独立。然后这题就是傻逼DP了示例程序:

2017-09-10 15:21:47 695

原创 【数论+搜索】BZOJ3629 [JLOI2014]聪明的燕姿

题面在这里通过数论知识可以得到:若x=∏ti=1pkiix=\prod_{i=1}^t p_i^{k_i},则xx的约数个数为∏ti=1(1+ki)\prod_{i=1}^t (1+k_i)类似地,xx的约数之和为∏ti=1∑kij=0pji\prod_{i=1}^t \sum_{j=0}^{k_i} p_i^j所以暴搜S的每个素因子取几次方就可以了示例程序:

2017-09-10 15:14:11 665

原创 【数论乱搞】BZOJ1041 [HAOI2008]圆上的整点

题面在这里其实就是乱搞题首先只要考虑第一象限的整点就可以了,答案可以很快由此得到考虑如下: r2=x2+y2⇒y2=(r−x)(r+x)r^2=x^2+y^2 \\\Rightarrow y^2=(r-x)(r+x) \\ 设(r−x)(r-x)和(r+x)(r+x)的最大公约数为dd,则有: ⇒y2=d2(r−x)d(r+x)d\Rightarrow y^2=d^2 \frac {

2017-09-10 14:49:49 942

原创 【线段树+Splay】HDU4942 Game on S♂play

题面在这里其实很简单的一道题……因为不管怎么旋转,Splay的中序遍历是永远不会变的所以用一个Splay跟他一起模拟对于每个节点,维护以下信息:子树区间[L,R][L,R]子树和sumsum子树大小sizesize然后每次询问就相当于询问一个区间的乘积,旋转就是修改两个点的值用线段树维护。复杂度O(qlogn)O(qlogn)然而……被卡常了,很不爽……以下代码正确,但不能过,仅供参考:

2017-09-03 21:06:18 791

原创 【线段树】BZOJ2957 楼房重建

题面在这里通过观察可以发现:能看到的楼房中,最高点与原点连线的斜率一定是递增的所以就是求最长上升序列的长度用线段树维护即可,与BZOJ2770类似示例程序:

2017-09-02 14:21:38 689

原创 【贪心】BZOJ2006 [NOI2010]超级钢琴

题面在这里其实就是超级钢琴的出处……考虑三元组(i,l,r)(i,l,r)表示以i为右端点,左端点在[l,r][l,r]范围的所有区间那么显然可以用ST算法快速求得这些区间内权值最大的区间,设其左端点为t然后就只用考虑(i,l,t−1)(i,l,t-1)和(i,t+1,r)(i,t+1,r)两个区间就可以了这些东西都可以用堆来维护示例程序:

2017-09-02 11:05:50 843

原创 【贪心】CodeChef PROTEPOI Protecting The Poison

题面在这里其实很显然,把所有蛇都投影到垂直的两个方向对两个方向分别进行扫描线就可以了示例程序:

2017-09-02 10:58:14 400

原创 【贪心+堆】Codeforces 752D Contest Balloons

题面在这里显然每次只要给排名比自己大的人送气球那么肯定选需要最小气球的人来猥琐他然后更新一下排名比自己大的人的集合就好了示例程序:

2017-09-02 10:44:01 547

原创 【DP】51Nod 1052 最大M子段和

题面在这里显然是DPfi,jf_{i,j}表示前i个位置,分了j段的最大值则有: fi,j=Max{fi−1,j,fk,j−1}+aif_{i,j}=Max\{ f_{i-1,j},f_{k,j-1} \}+a_i k其实不用枚举,直接带着刷最大值就好了示例程序:

2017-09-02 10:37:04 787

原创 【贪心】51Nod 1241 特殊的排序

题面在这里这题没什么好说的,直接贪心就可以了可以发现在最优方案中,没有被移动过的数字一定是连续单调增的那么直接刷最长的连续单调增序列就好了示例程序:

2017-09-02 10:27:05 356

周东《浅析最大最小定理在信息学竞赛中的应用》

周东大神关于s-t平面图与对偶图的转化PPT 可以快速求解s-t平面图中的最大流问题 解释很详细,很有帮助

2017-05-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除