自定义博客皮肤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.

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

原创 【状压DP】51Nod 1779 逆序对统计

题面在这里很水的状压DP……fsf_s表示s这个状态的最大逆序对数显然按照顺序去处理M个数,用于修正后面的转移的权值其实就是算有几个比当前大的示例程序:

2017-10-31 09:32:01 1106

原创 【DFS序+树状数组】51Nod 1681 公共祖先

题面在这里稍稍转化一下题面就可以得到,其实是求 ∑x=1nC2s\sum_{x=1}^n C_s^2 其中s是在两棵树中都是x的后代的节点个数如何统计s呢?其实也很简单先对一棵树处理出DFS序,然后遍历另一棵树时,不断插入当前节点,统计子树区间内的个数即可示例程序:

2017-10-30 19:52:32 723

原创 【主席树】51Nod 1175 区间中第K大的数

题面在这里主席树裸题……联赛快来了还是练练手速吧示例程序

2017-10-30 16:46:01 845

原创 【贪心+优先队列】51Nod 1053 最大M子段和 V2

题面在这里其实很简单……首先有一个贪心想法就是把所有的正数都取来但是这样子段数可能会超过m那么有以下两种方法减少子段数:删去一个正的子段取一个负的子段,并将相邻两个正子段合并然后把这两种操作都扔到优先队列里,每次取就好了示例程序:

2017-10-30 15:26:14 880

原创 【乱搞】51Nod 1622 集合对

题面在这里数学题,看懂了就很好做。下面给出证明:首先,集合的异或操作是可以类比位运算的异或操作的。对于一个集合AA,可以给全集的每个元素赋一个01变量,表示是否在集合AA中出现过这样A xor BA\text{ xor }B其实就是两个二进制数异或了然后这个东西是满足交换律和结合律的然后: (P xor A) xor (Q xor B)=A xor B(P xor Q) xor (A xor B)

2017-10-29 20:41:37 703

原创 【分数规划,最优比率生成树】POJ 2728 Desert King

题面在这里分数规划经典题目啊……考虑二分答案midmid则只需验证: ∑cost∑dist≤mid∑cost≤mid∗∑dist∑(costi−mid∗disti)\frac {\sum cost} {\sum dist}\le mid \\\sum cost\le mid*\sum dist \\\sum (cost_i-mid*dist_i) 然后就直接最小生成树了示例程序:

2017-10-29 17:22:17 668

原创 【单调栈】51Nod 1349 最大值

题面在这里最大值相关题目求控制区间已经是很明显的套路了啊喂枚举当前点为区间的最大值,用单调栈求出范围,两边一乘就好了示例程序:

2017-10-28 21:15:47 763

原创 【思路题】AtCoder agc013_c Ants on a Circle

题面在这里如果是在一条直线上的就非常好做。直接把蚂蚁看作可以穿透,然后把所有距离排序就好了因为无论怎么爬,蚂蚁的相对位置是不会变的那么对于这题,只需要知道原来的第一个蚂蚁到了哪里就好了其实就是求穿过(L−1,0)(L-1,0)这条线的蚂蚁的个数这个就很好求了,直接搞示例程序:

2017-10-28 20:01:48 747

原创 【容斥】51Nod 1829 函数

题面在这里其实很简单……我太菜了……想了好久……因为题目要求B中所有元素都至少被覆盖一次所以枚举有几个元素没有被覆盖(这是容斥的基本套路)答案就是: ∑i=0mCim⋅(m−i)n⋅(−1)i+1\sum_{i=0}^m C_m^i\cdot (m-i)^n\cdot (-1)^{i+1}示例程序:

2017-10-28 19:04:45 789

原创 【欧拉筛+主席树】CodeChef PRMQ Chef and Prime Queries

题面在这里其实非常傻逼……一看就知道是主席树了吧……重点在如何快速对每个aia_i拆分质因子其实可以在欧拉筛的同时记录nxt[x]nxt[x]表示xx除以最小的质因子后得到的数(因为欧拉筛对每个合数仅标记一次)然后对aia_i分解质因子就是O(log ai)O(log\space a_i)的了所以总复杂度为O(nlogn⋅log ai)O(nlogn\cdot log\space a_i)勉强可以过

2017-10-28 15:42:27 538

原创 边双联通分量小结+模板

为什么我之前都没学过……预备知识桥:如果去掉,图的联通块个数会增加的边DFS树:将一个图DFS遍历所得到的树非树边:不在DFS树上的边显然非树边只会存在于DFS树的点与祖先之间非树边不可能是桥边双联通分量:任意两点通过【不经过同一边】的路径可达的子图桥有了以上姿势,就可以找到一张无向图的所有桥了记录in[x]in[x]为x入栈的时间戳,low[x]low[x]为x可达的所有点中最小的in显然,DFS

2017-10-28 07:55:31 1653

原创 【边双联通分量】hihoCoder#1184 连通性二·边的双连通分量

题面在这里其实就是边双的裸题示例程序:

2017-10-27 21:14:49 729

原创 【乱搞】BZOJ5074 [Lydsy十月月赛]小B的数字

题面在这里可以感觉到当N很大时,基本都是输出NO的如何证明呢?设bi=2ci,∑ci=Sb_i=2^{c_i},\sum c_i=S则有:∀i满足S≤ai⋅ci,即Sai≤ci\forall i \text{满足}S\le a_i\cdot c_i,\text{即} \frac S {a_i}\le c_i考虑这个式子:Sn≤ci\frac S n\le c_i这个显然不能对所有的i成立(除非所有c

2017-10-27 20:45:59 968

原创 【单调栈】51Nod 1423 最大二“货”

题面在这里考虑枚举区间的次大值。那么可以维护一个递减的单调栈,里面都是可能的最大值然后第一个比当前大的值就是区间的最大值,更新答案就好了倒过来再做一次示例程序:

2017-10-27 20:34:45 673

原创 【树状数组+二分】BZOJ2028 [SHOI2009]会场预约

题面在这里考虑到每个预约只可能被删除一次所以可以把与当前冲突的预约一个一个删除其实就是不断取某位置前面第一个比自己小的端点这个用树状数组+二分维护就好了(其实也是第K大问题)然后这样就O(nlog2n)O(nlog^2n)示例程序:

2017-10-26 15:33:21 806

原创 【状压DP】UOJ#265 【NOIP2016】愤怒的小鸟

题面在这里其实就是一个简单的状压DP如果你直接O(2n⋅n3)O(2^n\cdot n^3)暴搞肯定是不行的那么就预处理一下gi,jg_{i,j}表示经过i,j两头猪的抛物线经过的猪然后……就好了示例程序:

2017-10-25 20:39:32 943

原创 【组合数】51Nod 1627 瞬间移动

题面在这里考虑枚举移动的步数ii那么答案就是 ∑i=1i<min(n,m)Ci−1n−2⋅Ci−1m−2\sum_{i=1}^{i<min(n,m)}C_{n-2}^{i-1}\cdot C_{m-2}^{i-1}示例程序:

2017-10-25 16:42:07 808

原创 【二分+正序对】51Nod 1711 平均数

题面在这里考虑二分答案,其实就是求平均值大于等于mid的区间个数写出来就是∑air−l+1≥mid\frac {\sum a_i} {r-l+1}\ge mid所以每一项减去mid,写成前缀和就是Sr−Sl−1≥0S_r-S_{l-1}\ge 0然后就是求正序对了示例程序:

2017-10-25 15:28:13 690

原创 【贪心+线段树】Codeforces 557C Arthur and Table

题面在这里其实很简单……暴枚最长桌脚的长度ll,然后长度比ll长的桌脚全部都要砍掉长度比ll短的桌脚选择代价前kk小的砍掉用线段树维护……示例程序 :

2017-10-25 12:50:01 914

原创 【字符串+乱搞】Codeforces 762C Two strings

题面在这里一开始题目看错了……还以为是求LCA\text {LCA}……其实很简单:对A串的每个位置求能匹配到B串的最长前/后缀然后就是在A串上枚举一个位置ii,把[1,i][1,i]能匹配的前缀 和(i,n](i,n]能匹配的后缀拼起来就好了答案在这里面求最优示例程序:

2017-10-25 09:58:20 624

原创 【扫描线+贪心+线段树】Codeforces 458C Elections

题面在这里考虑暴枚dd表示所有的对手选票不大于dd那么选票大于dd的对手都需要抢选票,如果这样自己的票数还是不够就从选票小于等于dd的对手哪里抢选票这个可以用线段树维护前K小示例程序:

2017-10-24 19:02:30 871

原创 【二分+Two Pointers】51Nod 1686 第K大区间

题面在这里首先需要知道这样一个性质:给一个区间加入元素,众数的个数只会变多不会变少然后就可以想到二分答案只需要验证众数的个数大于等于mid的区间的个数是否大于等于K就好了这个可以用Two Pointers\text{Two Pointers}算法来实现:对于区间的起点i,若有终点j满足该区间众数的个数大于等于mid,则更大的j也满足而i往右枚举,只会使j更往右示例程序:

2017-10-24 07:54:40 594

原创 【树形DP】51Nod 1500 苹果曼和树

题面在这里定义fi,0/1f_{i,0/1}表示处理到i子树,i所在的块是否含有黑色点那么对于fi,1f_{i,1},可以由fi,1f_{i,1}和fi,0f_{i,0}得到对于fi,0f_{i,0},只能由fi,0f_{i,0}得到示例程序:

2017-10-23 20:11:44 793

原创 【二分+曼哈顿距离】51Nod 1671 货物运输

题面在这里首先想到二分,设当前答案为SS,传送门的两个端点为x,yx,y则对于ti−si>St_i-s_i>S的路径,必须满足: |x−si|+|y−ti|≤S\left| x-s_i \right|+\left| y-t_i \right|\le S 这个可以理解为曼哈顿距离而到某个定点(si,ti)(s_i,t_i)的曼哈顿距离相等的点构成的集合是一个正方形相当于判断所有正方形是否有交示

2017-10-23 07:19:23 678 2

原创 【并查集】Codeforces 566D Restructuring Company

题面在这里对于本题,只需要再维护一个并查集表示i所在联通块的最右位置因为相邻两个元素之间的关系至多被处理1次所以均摊是O(q⋅α(n))O(q\cdot \alpha (n))示例程序:

2017-10-22 17:10:59 560

原创 【DFS】Codeforces 717E Paint it really, really dark gray

题面在这里其实就是用DFS递归处理:对于子树x,先把它的所有儿子子树处理掉然后再看x,如果颜色不对,为了不改变下面的颜色,就x→fa→xx\rightarrow fa \rightarrow x如果x是根就比较特殊了,可以x→son→xx\rightarrow son\rightarrow x示例程序:

2017-10-21 14:26:57 688

原创 【DP】51Nod 1274 最长递增路径

题面在这里好题啊……肯定会有这样的DP:fi,jf_{i,j}表示终点是i,最大边权为j的最长路径然而就算离散后还是O(ne)O(ne)的其实可以直接对边排序,边权的那一维就可以省去了Tips:以后遇到边权递增的题目,第一想到对边排序值得注意的是,边权相同的边必须同时转移,不能有先后修正的关系示例程序:

2017-10-21 10:28:31 656

原创 【贪心构造】51Nod 1385 凑数字

题面在这里乱搞就好了每次发现数字不够了就在最后添一个需要的数字示例程序:

2017-10-21 08:56:41 508

原创 【数学】51Nod 1421 最大MOD值

题面在这里有个想法就是先排序,对每个aia_i分别找[ai,2ai−1],[2ai,3ai−1],[3ai,4ai−1]…[a_i,2a_i-1],[2a_i,3a_i-1],[3a_i,4a_i-1]\dots中的最大值复杂度对吗?其实这个就是调和级数: ∑i=1n1i\sum_{i=1}^n\frac 1 i 可以证明这个是O(ln n)O(ln\space n)的所以总复杂度是O(n⋅

2017-10-21 07:56:25 689

原创 【贪心】51Nod 1476 括号序列的最小代价

题面在这里这题不太容易想到……其实还是很简单的先把所有的?换成’)’,然后一路扫过去如果不符合配对的要求就在之前的?中找修正代价最小的用优先队列维护一下,然后就好了示例程序:

2017-10-20 20:12:46 834

原创 【贪心】51Nod 1615 跳跃的杰克

题面在这里其实很SB的题目……因为每次跳跃后,长度就增加1,所以往左跳一次,右跳一次就相当于移动了一个单位肯定会有一个想法,就是不断往一个方向跳,然后一个单位一个单位地移动但是还不是最佳答案考虑跳过n到了x则x−nx-n是偶数就可以将之前某次跳跃反向否则就继续跳,直到x−nx-n是偶数示例程序:

2017-10-20 19:09:09 864

原创 【Tarjan】UOJ#146 【NOIP2015】信息传递

题面在这里Tarjan刷最小环……示例程序:

2017-10-19 15:32:06 638

原创 【遍历】UOJ#19 【NOIP2014】寻找道路

题面在这里直接先处理出那些点不能走,然后乱搞就好了示例程序:

2017-10-19 14:51:08 522

原创 【DFS乱搞】UOJ#16 【NOIP2014】联合权值

题面在这里没什么技巧,就是一个DFS乱搞的题目距离为2的点只有2种:互为兄弟节点,深度相差2所以维护fif_i表示i的儿子的w之和gig_i表示i的儿子中最大的w然后就很好统计答案了示例程序:

2017-10-19 13:46:41 606

原创 【DP】UOJ#17 【NOIP2014】飞扬的小鸟

题面在这里很显然是一个DP……fi,jf_{i,j}表示到(i,j)(i,j)这个位置的最小步数 fi,j=Min{fi−1,j−k⋅xi−1+1,fi−1,j+yi−1}f_{i,j}=Min\{f_{i-1,j-k\cdot x_{i-1}}+1,f_{i-1,j+y_{i-1}} \}但是转移需要O(m)O(m),显然不行发现fi,jf_{i,j}有很大一部分的状态都可以由fi,j−xi

2017-10-18 21:44:41 634

原创 【DP】UOJ#149 【NOIP2015】子串

题面在这里其实就是DPfi,j,kf_{i,j,k}表示A串处理到i,B串到j,分了k个块发现状态数已经很大了,想办法O(1)O(1)转移那么就fi,j,k,0/1f_{i,j,k,0/1}表示i是否在块里然后就很好转移了示例程序:

2017-10-18 18:38:13 558

原创 【LCA+打标记】BZOJ4719(UOJ#261) [Noip2016]天天爱跑步

题面在这里还可以双倍经验不得不说真是一道好题啊……对于路径x→yx\rightarrow y,可以拆分为x→lcax\rightarrow lca和lca→ylca\rightarrow y同时注意到,对于点i在一条往上走的路径x→yx\rightarrow y上:deepi+wi=deepxdeep_i+w_i=deep_x反之: deepi−wi=deepy−distx,ydeep_i-

2017-10-18 15:34:06 836

原创 【最大生成树+倍增】NOIP 2013 货车运输

题面在这里考虑每次都应该走尽可能大的路对于任意两个联通块也是如此,可以只保留边权最大的那条边来连接这两个联通块那么就是最大生成树了每次询问就是在树上询问最小的边权,倍增一发就好了示例程序:

2017-10-17 15:55:40 711

原创 【2-SAT】Codeforces 876E National Property

题面在这里其实就是2-SAT……对于每个字母,考虑是否改掉那么只需要相邻两个满足字典序,所有的单词就都满足字典序了然后应该很好处理吧……nm打反狂WA 3发……示例程序:

2017-10-17 14:38:23 888

原创 【树哈希】BZOJ4337 BJOI2015 树的同构

题面在这里这题树哈希就好了我的哈希函数是: hashi=p0+∑hashsonj×pjhash_i=p_0+\sum hash_{son_j}\times p_j 其中sonjson_j是i的第j个儿子,pjp_j是一个素数表注意儿子需要按哈希值排序注意题目说给出的是有根树是骗人的!!!还是要枚举根处理示例程序:

2017-10-16 16:43:09 1053

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

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

2017-05-30

空空如也

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

TA关注的人

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