自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qwb的博客

ACing

  • 博客(40)
  • 资源 (6)
  • 收藏
  • 关注

原创 单调队列 fzu1894 志愿者选拔

传送门:点击打开链接题意:3种操作:队列中加入一个人;队首出队;求队中权值最大是多少思路:运用单调队列来维护。其实单调队列中其实id也是有序的,所以队列出队只要看单调队列的第一个是否等于队首那个就行了。#include#include#include#include#include#include#include#include#include#include#in

2015-10-28 22:18:55 752

原创 单调队列 poj2823 Sliding Window

传送门:点击打开链接题意:有n个数字,有个宽度为k的窗口,从最左边向右边移动,每次都框住k个数字,依次输出这些框中的最大值和最小值思路:运用单调队列维护。一般deque我们都手动模拟,因为一般单调对列对时间复杂度要求都会比较高。一般令cur=rear=0,rear表示尾指针,其实这个指针是取不到的,也就是说左开由闭。当cur单调队列数字都是从队尾进,要求最值的时候一般都是在堆首取。

2015-10-28 21:15:52 722

原创 左偏树+并查集 hdu1512 Monkey King

传送门:点击打开链接题意:很多只猴子,每个猴子有个强壮值,一开始每只猴子都不认识。会有m次冲突,每次冲突的两只猴子如果不认识,就会各自在认识的人中各找一个最强壮的人打架,打完后打赢的那个人的强壮值会减半,并输出减半后的值,然后猴子两边的人都会互相认识成为朋友(所谓不打不相识..),如果两只猴子冲突但是已经认识了,那么就输出-1思路:左偏树上次翻论文无意中发现的,感觉这种数据结构好66666

2015-10-27 22:46:44 910

原创 AC自动机 zoj3228 Searching the String

传送门:点击打开链接题意:告诉你原串,告诉你很多个子串,有两种匹配模式,一种是可以重叠的匹配,一种是不能重叠的,问每个子串出现的次数。子串可能有重复的出现。思路:这题揭示了AC自动机的两种处理方法。首先是当AC自动机中出现有串重复的时候,我们应该怎么处理,我这里用到了一个数组pre,如果这个节点结尾的子串是第一次出现,pre标记为自己,如果这个节点结尾的子串不是第一次出现,那么就把pr

2015-10-25 16:26:33 863

原创 AC自动机+dp打印路径 hdu2296 Ring

传送门:点击打开链接题意:告诉你m个字符串,每个字符串有一个权值。再告诉你n,要求新的字符串长度小于等于n,现在求总权值最大的最小字典序字符串是多少思路:首先用AC自动机去把状态优化,然后列出dp方程,这些都是不难的,问题还在于打印路径上。由于要求字典序最小,但是实际上在AC自动机顺着插入的话,只能比较后缀,根本比较不了前缀,所以不是很好做。有的题解是插入字符串到AC自动机的时候就把它翻转

2015-10-24 16:00:49 866

原创 AC自动机+状压dp hdu2825 Wireless Password

传送门:点击打开链接题意:有个密码长度为n,现在有m个魔力单词,要求密码中魔力单词的种类数>=k,问这种密码的种类数。思路:和之前一样,我们会想到AC自动机去压缩状态,把状态给简化。然后我们就会想到一个问题,,因为一种种类实际上可能会出现很多次,但是统计的时候只统计一次,所以用普通的dp可能就做不到了,那么我们就必须考虑复杂度更高的方法,又看到m但是这题也有两个很容易TLE的问题,,首

2015-10-23 22:50:50 851

原创 AC自动机+快速矩阵幂 poj2778 DNA Sequence

传送门:点击打开链接题意:DNA只有AGCT四种脱氧核糖核苷酸组成,现在告诉你n条致病基因序列,,问长度为m的DNA序列里不含任何的致病基因的种类数是多少。思路:这题可谓是AC自动机的经典神题。。如果只是简单的认为AC自动机只不过是在文中匹配字符串那就打错特错了,它还可以用来压缩状态~这题我们先构想一下动态规划。如果我们没学过AC自动机,,现在假如致病基因的长度都为3.我们可能会这

2015-10-23 12:18:27 750

原创 AC自动机+base64解码 zoj3430 Detect the Virus

传送门:点击打开链接题意:告诉你邮件内容,告诉你病毒,问内容里有多少种类的病毒。一听就知道是裸AC自动机,,但是有两个很恶心的地方。。首先是base64解码,还是第一次手撸这个也是麻烦..另外一个很容易弄错的地方就是,有的语言字节是从0~255,其实C语言的字节是从0~127是正数,最高位表示的是负数了...所以说,base64解码后,可能有的字节是大于127的,所以我们不能用char类型来存

2015-10-23 12:01:30 805

原创 AC自动机+dp+大数 poj1625

传送门:点击打开链接题意:告诉你有哪些字符可以用,然后再告诉你哪些单词不能出现,要你求长度为m的字符串只由给你的字符组成,但是不能出现那些单词的种类数。思路:..一分析就发现,,貌似爆long long了,,醉了。。总的思路和那个DNA的思路是一样的,用AC自动机完成了矩阵的转移,很逆天的压缩了状态。。除了大数其他和那题基本一样的可以去看看那题..#include#include#

2015-10-23 11:56:02 812

原创 离线LCA hdu2586 How far away ?

传送门:点击打开链接题意:一棵树,告诉你两个点,求两个点之间的距离思路:裸LCA。维护点到根节点的距离,那么u到根节点距离+v到根节点距离-lca(u,v)到根节点距离即可离线LCA的思路很清晰,大概就是利用从下向上的并查集去维护节点。#include#include#include#include#include#include#include#include#i

2015-10-21 15:10:58 680

原创 AC自动机 hdu2222 Keywords Search

传送门:点击打开链接题意:给一个字典,再给一个查询串,问字典中的单词一共在这个查询串中出现了多少次。思路:裸AC自动机。。第一次做,照着bin神代码写了个模板留着以后贴#include#include#include#include#include#include#include#include#include#include#include#include#i

2015-10-21 14:48:41 770

原创 贪心+map Codeforces583C GCD Table

传送门:点击打开链接题意:参照那个表格,,最后给出的n*n个那表格中的数字,是打乱的,求还原出是哪n个数字思路:可以发现,G表格中,正斜对角线恰好是ai,因为对自己的gcd就等于自己。那么也就是说所有的ai最后都会存在于n*n个数字中,进一步一想我们就能发现,最大的那个数字一定是A数组中的,因为gcd不可能比原数大。那么第二次我再选出最大的,此时这个最大的会与之前已确定的A数组中的会有gc

2015-10-17 20:18:33 1008

原创 字符串hash+线段树 Codeforces580E Kefa and Watch

传送门:点击打开链接题意:给你一个原串,只有0和9组成。现在有两种操作操作1,区间修改,把[L,R]的数字都改成d操作2,询问区间[L,R]中是否满足si = si + x for all i from 1 to |s| - x.思路:虽然本身会字符串hash,但是没想到还能这样玩。。hash的思路和普通的是一样的,每一位中间乘以某个数字。。如果担心最后的答案,可以对两个大

2015-10-17 19:55:28 1030 1

原创 状压dp Codeforces580D Kefa and Dishes

传送门:点击打开链接题意:有n种菜,现在选m种菜来吃,还有很多条好处,如果在吃y的前一道菜是x的话,那么就可以获得满意度。每一种菜都有一个满意度。思路:...只能说Codeforces的测评机实在是太好了,n=18,O(n^2*2^n)复杂度的记忆化搜索代码都能在500ms跑出来,我自己本地跑了3秒多- -如果你敢写O(n^2*2^n)复杂度的代码的话,那基本就做完了。设dp[i][S

2015-10-17 19:18:29 1112

原创 尺取法 Codeforces580B Kefa and Company

传送门:点击打开链接题意:n个人,告诉你n个人的工资,每个人还有一个权值,现在从这n个人中选出m个人,使得他们的权值之和最大思路:先按照工资从小到大排序,那么每次最优的必然是一个子区间中的值。所以我们能确定,所有的答案此时都是子区间,。所以利用尺取法O(n)求出答案#include#include#include#include#include#include#includ

2015-10-17 19:02:19 933

原创 最大费用最大流 hdu4322 Candy

传送门:点击打开链接题意:有m个人,n个糖果,告诉你每个人喜欢哪些糖果,如果人分到喜欢的糖果幸福值+k,分到不喜欢的幸福值+1,现在告诉你每个人所需要的最低幸福值,问能否让所有人都开心。思路:这是一道很6666的费用流的建模题首先我们可以去分析,如果不喜欢,那么把这个糖果分给谁,幸福值都能+1,所以我们不如把s连接所有的糖果,容量为1,费用为0,如果糖果被人喜欢了,就连一条糖果到人的边

2015-10-14 13:24:23 775

原创 dp最大子矩阵 hdu4328 Cut the cake

传送门:点击打开链接题意:求全红的矩形,或者全蓝的矩形,或者红蓝相间的矩形,这些矩形中周长的最大值思路:大白书上有方法解释了如何利用动态规划思想去做求最大子矩阵,这里就不多说了。求最大子矩阵还有另外一种方法,就是利用单调栈,这也是一种非常棒的方法。这题还有一个小技巧,就是如何处理红蓝相间的呢。。我们直接把(i+j)%2==1的全部翻转,这样再做一次求最大子矩阵,,就搞定了#includ

2015-10-14 13:11:34 778

原创 dp编辑距离 poj3356 AGTC

传送门:点击打开链接题意:给一个字符串A,和一个字符串B,现在能对字符串A进行删除,修改,插入等操作,问至少需要多少步才能将字符串A转换成字符串B思路:利用动态规划,总的思路和求最长公共子序列几乎是一模一样的。这里直接写一下方程..边界dp[i][0] = dp[0][i] = i;当x[i] == y[j]时,i和j不需要编辑,要么删除,要么插入,要么替换dp[i

2015-10-13 14:56:56 752

原创 拓扑排序 hdu4324 Triangle LOVE

传送门:点击打开链接题意:每两个点之间必有且仅有一条有向边,问是否存在一个3元环。思路:这题与普通的求环有2个不一样的地方,一个是每两个点必有一条边,一个是只是求3元环而已。。然而我们可以证明,如果每两个点之间必有一条边存在环,那么必然会存在3元环。假设某一个n元环上存在a->b->c->d这样的4个,如果d就是a,那么(a,b,c)就直接构成了3元环之间满足题意。如果d不是a,那么就必有

2015-10-13 11:32:57 855

原创 贪心+dp zoj3905 Cake

传送门:点击打开链接题意:n(一定为偶数)块蛋糕,每块蛋糕Alice有一个权值,Bob有一个权值。每一次Alice选择两块蛋糕给Bob看,Bob会选择出他的观点的权值最大的蛋糕,然后Alice拿剩下的那一块,问Alice能获得的最大总权值是多少思路:我们可以发现,Bob的权值最大的那一块,无论如何,一定最后会给Bob。那么我们能发现其中好像存在一点规律。如果我们按照Bob认为的权值从大

2015-10-12 15:51:21 1127

原创 逆元+公式推导 zoj3903 Ant

传送门:点击打开链接题意:一个立方体,已知立方体最长边长为n,一只蚂蚁从一个顶点走到对角线的另一个顶点,且走的是最短的路线,记路线长度为L。那么所有满足题意的情况的L*L之和是多少思路:再去推导一下就发现,其实就是L^2=n^2+(a+b)^2,且a由于n太大了,所以只能是数学的角度推导公式(a+b)^2拆成a^2+b^2+2*a*b剩下的大概就是把每一部分都累加起来,然后答案

2015-10-12 15:40:55 1368 2

原创 哈希+前缀和 hdu5496 Beauty of Sequence

传送门:点击打开链接题意:一个序列,问所有的子序列的beauty操作之后的数字之和。beauty操作是将序列相邻多个相等的数字删除到只剩下一个思路:设F[i]表示以A[i]结尾的子序列的答案,cnt[i]表示以A[i]的结尾的子序列个数。那么对于第i个,可以枚举以A[k]结尾(k#include#include#include#include#include#include

2015-10-12 15:12:58 2066

原创 循环节 hdu5495 LCS

传送门:点击打开链接题意:告诉你两个序列An和Bn,都是{1,2,,...n}的排列,然后现在可以任意交换每一列,问之后能构成最长公共子序列是多长思路:首先想特殊点,想到A中1的位置,假如我们把A中1的那一列移动到最前面去,如果对应的B也是1,那么刚好就是相等的,那么肯定能使公共子序列长度+1,如果不相等,假如A是1,B是3,那么我要让3能立即构成公共子序列,就要让下一次的A为3,再看此时

2015-10-12 00:55:06 1014

原创 贪心+dp hdu5501 The Highest Mark

传送门:点击打开链接题意:类似cf的赛制,每道题目有A,B,C三个值,A表示初始分数,B表示每分钟题的分数会减少B,C表示做这道题需要C分钟,数据保证分数不会变为负数。现在给出比赛时长,问安排做题的顺序,求最大得分。思路:这道题是一道非常经典的题。首先很容易想到一件事,给出的题哪个先做没有先后顺序,那么在动态规划的时候,必然有前后顺序,所以要么就是状态压缩,要么就是之前就把这些题目排序了,

2015-10-10 23:27:37 1065

原创 dp+记忆化搜索 Codeforces567F Mausoleum

传送门:点击打开链接题意:用1~n这些数,每个数用2次,构造出一个长度为2n的数列,使得其先不下降,后上升,或者整个都是不下降,或者整个都是不上升,然后再给出k个限制条件,如果是3 思路:一开始会感觉没任何思路,,我们来慢慢的分析。。先考虑数字1,数字1只可能出现在数列前两个位置,或者最后两个位置,或者第一个位置和最后一个位置。同样的,2会在1的基础上,从两边开始填充。可以想象,所有的数字

2015-10-10 15:36:13 950

原创 网络流+打印路径 Codeforces510E Fox And Dinner

传送门:点击打开链接题意:n只狐狸,每个狐狸对应了一个数字,现在要把n只狐狸分成很多个圈坐着,每个圈中至少要有3只,且相邻两只狐狸对应的数字只和必须是质数思路:由于相加必须是质数。,且有对应的那个数字>=2,说明这个质数必须是奇数,进一步说明两只挨在一起的狐狸必须一奇一偶。看到奇偶,我们就应该要想到网络流我们让超级源点s连接所有的偶数,边容量为2.让所有的奇数连接超级汇点t,边容量为2

2015-10-10 11:21:22 1306

原创 数论+dp状压 Codeforces510D Fox And Jumping

传送门:点击打开链接题意:从n张卡中取出一些卡,使得k1*x1+k2*x2+...+kn*xn=1,问是否能找出这样的卡,并且使费用最低思路:这里首先必须要知道一个数论知识,gcd(x1,x2,x3..,xn)=1,那么必有k1*x1+k2*x2+...+xn=1。证明就不证明了,但是确实有个特例,gcd(x,y)=1,那么xm+yn=1必有解,是不是很熟悉?就是扩展欧几里德啊!前者也算是

2015-10-09 20:37:08 1053

原创 拓扑排序 Codecorces510C Fox And Names

传送门:点击打开链接题意:确定一种字典序,使得给出的单词是按照新的字典序排序好的思路:枚举相邻的字符串,然后开始比较两个字符串,确定一个字符的字典序应该小于另一个字符,那么这两个相邻的字符串就满足字典序的顺序,构造出所有需要满足的字符的前后顺序,然后做一遍拓扑排序,答案就出来了wa点:如果用邻接矩阵存边的时候,应该要注意重边,重边的时候不需要更新v的入度。还有,如果遇到两个字符串如xy

2015-10-09 20:26:50 723

原创 线段树 csu1551 Longest Increasing Subsequence Again

传送门:点击打开链接题意:给你一些数,删除一个连续区间,使得连续区间上升区间最大。思路:先求出SL,SR,分别表示以i结尾的最大连续区间长度和以i开头的最大连续区间长度然后从左边向右边将SL插入到线段树中,并类似求逆序数的方法去查询小于A[i]的在线段树中最大的数,并加上R[i]wa点:在递归线段树的时候,区间长度不应该是[1,n]而应该是[1,Max(A[i])],或者直接写成

2015-10-06 11:45:31 841

原创 DLX重复覆盖 hdu5046 Airport

传送门:点击打开链接题意:有N个城市,现在要修K个机场,使N个城市到最近机场的最大距离最小,问K个机场应该修在哪里,机场必须修在城市中。思路:二分N个城市到最近机场的最大距离,于是可以转换成,知道每个点,知道它的半径,能覆盖到这些点,问是否能选K个点,使得所在范围覆盖所有的点。那么这部分可以用DLX重复覆盖来做wa点:二分的时候,l,m,r都要使用LL才行,因为可能会爆int#in

2015-10-06 10:38:45 818

原创 DLX精确覆盖 hdu4069 Squiggly Sudoku

传送门:点击打开链接题意:将9*9的棋盘分割成了9个部分,每个部分都是9个格子,然后现在要求每个部分的数字恰是1~9的排列,每一行每一列恰是1~9的排列,问是否有解,有多少组解,如果只有1组解打印出来思路:先通过DFS求出所在的部分,然后剩下的和DLX精确覆盖求数独就是一样的了#include#include#include#include#include#include#

2015-10-06 10:18:45 774

原创 DLX重复覆盖 fzu1686 神龙的难题

传送门:点击打开链接题意:告诉你一个矩阵大小,再告诉你0和1的分布,现在可以用n1*m1大小的矩形去覆盖所有的1,问至少要多少个矩形思路:裸DLX重复覆盖,行为所有可能的矩形,列为每个点#include#include#include#include#include#include#include#include#include#include#include#i

2015-10-06 09:55:23 974

原创 DLX精确覆盖 zoj3209 Treasure Map

传送门:点击打开链接题意:先告诉一个一个矩阵大小n*m和有多少个矩形p,然后告诉每个矩形所在的左下角和右上角的坐标,要求矩形不能有重叠部分,求覆盖矩阵至少需要多少个矩形。思路:DLX精确覆盖,列表示每个点,行表示矩形,那么每次将矩形和矩形中的点对应起来,需要选出一些行使得所有的列都被覆盖,这样题目就转换完成了#include#include#include#include#in

2015-10-06 09:52:21 904

原创 匈牙利最大匹配+大质数判定 csu1552 Friends

传送门:点击打开链接题意:每个人都有一个数字,如果两个人的数字之和是质数,那么就可以成为朋友,一个人最多只能有一个朋友思路:二分图裸匈牙利最大匹配和大质数判定的模板题,测试模板专用#include#include#include#include#include#include#include#include#include#include#include#incl

2015-10-06 09:22:01 796

原创 线段树 csu1555 Inversion Sequence

传送门:点击打开链接题意:告诉你每个数字的逆序数,求原序列思路:从1开始考虑,利用线段树记录空白位置的数量,然后利用线段树维护插入位置经行插入#include#include#include#include#include#include#include#include#include#include#include#include#include#inclu

2015-10-06 09:13:52 683

原创 dp zoj3822 Domination

传送门:点击打开链接题意:一个棋盘N*M大,每次在空的位置放棋子,求使得每一行至少有1个棋子,每一列至少有1个棋子的期望值。一旦满足条件,就停止摆棋思路:通过概率dp,然后再去求期望,然而这个dp的状态很难设。最容易一开始会想到状态压缩。。其实没必要把状态记录的这么详细。设dp[i][j][k]为k个棋子摆放,恰好覆盖了i行,j列现在我们考虑摆放一个棋子,那么这个棋子可能会存在

2015-10-05 18:12:21 732

原创 二分+树上乱搞 zoj3820 Building Fire Stations

传送门:点击打开链接题意:给你N个点,有N-1条边,构成了一棵树,每条边的距离都为1。现在要在N个点中选出2个点放灭火装置,要求N个点到最近的灭火装置的距离的最大值最小。求这两个点的位置。思路:首先,一般让最大值最小,都是二分的方法。所以我们主要应该讨论,假如到灭火装置的距离最大值因为zoj是G++所以没办法扩栈,,所以只能全部用队列写了感觉不是很方便 。。当然这题还要注意另外一些

2015-10-05 17:46:33 881

原创 并查集+二分 hnu13433 Dragons

传送门:点击打开链接题意:有N个城市,M条双向边,K条龙。第i条龙在Ci城市,初始有Si个头,如果龙还活着,每一分钟增加Ci个头一个勇士1分钟可以砍一个龙的头,也可以选择移动到当前城市周围相邻的城市去不限定时间的前提下,至少要召集多少勇士,才能把所有的龙全部杀掉勇士的初始位置可以是任意的 思路:这道题出的非常好,但是却一下子很难想。首先,可以想到,这个图可能并不

2015-10-05 17:19:02 899

原创 最短路 hnu13430 Elevators

传送门:点击打开链接题意:n个电梯,告诉每个电梯可以停的楼层,问从某一楼层到另一楼层所需要的最少距离思路:好傻啊,,就是个最短路问题,对于某个电梯,两两枚举点,建立边,然后跑一遍最短路就做完了#include#include#include#include#include#include#include#include#include#include#include

2015-10-05 17:01:28 831

原创 树重心 poj1655 Balancing Act

传送门:点击打开链接题意:找到树的重心,要求平衡点相同时编号越小越好树重心是一个非常重要的东西,在树的分治中占有一席之地,能使树的分治的复杂度不会退化到O(n^2),是一种十分有效的手段树的重心的定义:将某一点删除,一颗树会分成许多棵子树,。一个树T的重心就是,删除了重心后,得到的那些子树中的最大子树的点数是最小的求法是利用树型dp的思路,很容易实现#include#incl

2015-10-05 11:04:09 962

C#八数码游戏实例

C#八数码游戏实例

2016-02-14

C#计算器实例

C#写的计算器实例

2016-02-13

左偏树论文-黄源河

黄源河的左偏树论文,一种简单易写而且合并和取最小值复杂度很低的平衡树

2015-10-27

Android 短代码实现 最简易的画板

Android 短代码实现 最简易的画板

2015-09-07

易逍遥模块1.6.ec

逆天http模块,无需处理cookie!(只有跨域才需要保存cookie)

2015-06-13

易语言 skinh破解版

SkinH_EL.dll

2012-08-15

空空如也

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

TA关注的人

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