Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/fontdata.js

07 2018 档案

摘要:枚举跑多少天,动态加边即可。 cpp include include include include using namespace std; const int N=1000005,inf=0x3f3f3f3f; int n,m,K,p[50],z[50],g[50][50],fa[50],ans 阅读全文
posted @ 2018-07-30 22:22 SWHsz 阅读(153) 评论(0) 推荐(0) 编辑
摘要:7月倒数第二天补flag 拆点,像深海机器人问题一样。最后求路线的时候dfs一下,根据流量判定走了几个机器人,不能超过流量即可。 cpp include include include include using namespace std; const int inf=0x3f3f3f3f,N=5 阅读全文
posted @ 2018-07-30 20:33 SWHsz 阅读(121) 评论(0) 推荐(0) 编辑
摘要:很容易想到暴力的转移:f[i][j]表示较长串的前i个字母,最后和不吉利数字相同的已经有j个。价格数组g[j][k]表示第j个不吉利前缀转移到不吉利前缀k的方案数。然后kmp一下就能求得g数组。看到n是1e9,矩阵快速幂优化即可。 cpp include include include using 阅读全文
posted @ 2018-07-29 20:01 SWHsz 阅读(109) 评论(0) 推荐(0) 编辑
摘要:状压DP。 设计状态f[i]表示奶牛的状态为i时,所有奶牛的可用耐力最小值,随便转移一下就行了。(翻译的大兄弟,没有翻译不可行的情况,wa了一次。。。) cpp include include include using namespace std; const int N=25; long lon 阅读全文
posted @ 2018-07-29 18:07 SWHsz 阅读(175) 评论(0) 推荐(0) 编辑
摘要:可持久化并查集的好题啊。。。(flag:补克鲁斯卡尔重构树。。。) 先dijkstra求一下1号点到每个点的距离,再用可持久化并查集维护一下联通性与联通块内哪个点离1号点最近。upper_bound一下,再查询,时间复杂度可行。 cpp include include include include 阅读全文
posted @ 2018-07-29 16:47 SWHsz 阅读(143) 评论(0) 推荐(0) 编辑
摘要:树剖LCA+树上差分。 树上差分的基本操作。 cpp include include include using namespace std; const int N=100005; int head[N],ecnt,dfn[N],top[N],son[N],fa[N],tim,dep[N],siz 阅读全文
posted @ 2018-07-28 09:01 SWHsz 阅读(148) 评论(0) 推荐(0) 编辑
摘要:毫无意义的一道题。 用pai[i]表示某种点数的牌的剩余量,used[i]表示单,对,三,四的出牌数,大力分类讨论,大力dfs即可。。。真奇葩。。。 cpp include include include using namespace std; int T,n,ans,pai[20],used[6 阅读全文
posted @ 2018-07-27 21:35 SWHsz 阅读(324) 评论(0) 推荐(0) 编辑
摘要:tarjan缩点+拓扑排序+DP。 让求的其实是缩点后最长链的长度和最长链的个数。基本操作。(注意去重边。。。) cpp include include include include include include using namespace std; queueq; const int N= 阅读全文
posted @ 2018-07-27 17:23 SWHsz 阅读(114) 评论(0) 推荐(0) 编辑
摘要:一看n=10,大力dfs啊。。。每次切的长度一定x/n的倍数。 cpp include include include using namespace std; int N,X,Y; double dfs(double x,double y,double n) { if(n==1) {return 阅读全文
posted @ 2018-07-27 12:21 SWHsz 阅读(112) 评论(0) 推荐(0) 编辑
摘要:矩阵加速递推。 图片出处见水印 cpp include include include define int long long using namespace std; int K,b[20],c[20],m,n,p; long long sum[20]; struct Matrix { int 阅读全文
posted @ 2018-07-27 11:06 SWHsz 阅读(251) 评论(0) 推荐(0) 编辑
摘要:期望dp。 基本套路就是逆推一下,可以忽略不能到达的情况。因为n,K输入反,re2次。。。 cpp include include include include using namespace std; int K,n; double f[105][1 阅读全文
posted @ 2018-07-27 07:56 SWHsz 阅读(123) 评论(0) 推荐(0) 编辑
摘要:一开始以为是数位dp,但是想到什么68,688的倍数怎么求就懵了。。。但是发现只有10位,有1024个幸运数字,我们可以把这些数算出来,容斥原理做一下。 cpp include include include include include using namespace std; long lon 阅读全文
posted @ 2018-07-27 07:21 SWHsz 阅读(163) 评论(0) 推荐(0) 编辑
摘要:以行,列为左右部点,跑最大匹配,匹配数为n即可。 cpp include include include using namespace std; int T,n,tim; int g[205][205];int vis[205],match[205]; bool dfs(int x) { for( 阅读全文
posted @ 2018-07-27 07:18 SWHsz 阅读(94) 评论(0) 推荐(0) 编辑
摘要:一开始以为是01分数规划,后来发现不知道怎么写。 发现只需要关心S,T的连通性和最长边最小边,而且边又那么少,可以枚举。 cpp include include include include using namespace std; const int N=5005; int n,m,mn,mx, 阅读全文
posted @ 2018-07-27 07:15 SWHsz 阅读(126) 评论(0) 推荐(0) 编辑
摘要:贪心。 一开始以为和田忌赛马的策略一样,码码码。。。突然发现不太对,如果就这的把最弱的卖了多亏啊。。。所以先比对一下自己家最弱的能不能干掉对手最弱的,如果不能再判一下能不能和最强的打成平局。如果不能就消耗了对面最强的即可。 阅读全文
posted @ 2018-07-26 11:11 SWHsz 阅读(158) 评论(0) 推荐(0) 编辑
摘要:前置知识:同弧所对的圆周角=圆心角的一半,~~矩形的四个内角是直角~~ 由此找到所有的直径排列组合一下即可。 阅读全文
posted @ 2018-07-26 09:51 SWHsz 阅读(156) 评论(0) 推荐(0) 编辑
摘要:状压DP。 f[i][j][k]表示走的点的状态是i,倒数第二个岛是j,最后一个是k的mincost,cnt表示该状态下的方案数。统计方案数就和23号的考试题一个套路。 注意加个特判,判1个点的状态。 cpp include include include using namespace std; 阅读全文
posted @ 2018-07-26 00:07 SWHsz 阅读(129) 评论(0) 推荐(0) 编辑
摘要:贪心+优先队列。 先按照结束时间从小到大排个序,然后把施工时间一个个加进去,如果发现不行了,就看看priority_queue的top是不是比现在的要大,如果是就转修现在的即可。 cpp include include include include include using namespace 阅读全文
posted @ 2018-07-25 23:45 SWHsz 阅读(150) 评论(0) 推荐(0) 编辑
摘要:有个结论:(x1,y1)和(x2,y2)连线上的整点的个数为GCD(x1 x2,y1 y2) 1个。 利用全集 补集,O(1)求出来所有情况减去三点共网格线的,再减去共斜线的即可。 cpp include include include using namespace std; long long 阅读全文
posted @ 2018-07-25 23:04 SWHsz 阅读(107) 评论(0) 推荐(0) 编辑
摘要:分层图最短路水题。。 cpp include include include include using namespace std; int ecnt,head[55],dis[55][55],n,m,k; bool vis[55][55]; struct Edge{int to,nxt,val; 阅读全文
posted @ 2018-07-25 22:33 SWHsz 阅读(102) 评论(0) 推荐(0) 编辑
摘要:树剖学的好啊。。。 先预处理出来每个询问的距离,然后二分答案,check的时候树上差分一下,求出来大于mid的询问的最长公共边,减去以后判一下行不行。 阅读全文
posted @ 2018-07-25 00:05 SWHsz 阅读(118) 评论(0) 推荐(0) 编辑
摘要:可以转成动态规划问题,f[i][j][k][0/1]表示选完了前i种牌,第i 1种选了j个,第i种选了k个,选/不选一对的。 阅读全文
posted @ 2018-07-24 21:59 SWHsz 阅读(193) 评论(0) 推荐(0) 编辑
摘要:tarjan 缩点,跑个最长路。 cpp include include include include include using namespace std; const int N=500005; vectorG[N],V[N]; int n,m,ecnt,head[N],val[N],S,p 阅读全文
posted @ 2018-07-24 21:40 SWHsz 阅读(139) 评论(0) 推荐(0) 编辑
摘要:正难则反,离线下来并查集反的修建就行了。修建的时候判定一下两边现在是不是在一个并查集里,并且是不是现在都没有被摧毁即可。 cpp include include include using namespace std; const int N=400005; int n,m,fa[N],ans[N] 阅读全文
posted @ 2018-07-24 16:36 SWHsz 阅读(97) 评论(0) 推荐(0) 编辑
摘要:建一个反图跑个最短路,然后记忆化搜索一下。 (很迷的是堆优化dij就wa了,线段树优化的和spfa就A了。)(求dalao看看我的堆优化dij是不是打错了,但是过了80分)。 spfa的AC代码: cpp include include include include include include 阅读全文
posted @ 2018-07-24 12:00 SWHsz 阅读(162) 评论(0) 推荐(0) 编辑
摘要:T1: 2000的数据显然不能矩阵乘法。 考场上忘了矩阵乘法怎么写了,手推了一下,结果突然发现有公因式Orz 提取一下公因式,就可以有O(nm)的解法了。。。(忘了矩乘海星) cpp include include include include using namespace std; const 阅读全文
posted @ 2018-07-23 16:27 SWHsz 阅读(106) 评论(0) 推荐(0) 编辑
摘要:左偏树。 从下往上求每个子树的战斗力最大值。如果付出的薪水大于m,那么就pop了子树中最贵的那个点,把所有的子树合并起来,用左偏树维护。 (好像所有的master都是1号点....) cpp include include include using namespace std; const int 阅读全文
posted @ 2018-07-22 19:29 SWHsz 阅读(128) 评论(0) 推荐(0) 编辑
摘要:期望dp 不考虑打的顺序,只要最后能把地图都装下就行了,因此把概率和容量装进一个结构体里面,把地图放后面。 记一个状态f[i][j][k]表示前i个比赛,赢了j场,容量k的期望,转移即可。 cpp include include include using namespace std; const 阅读全文
posted @ 2018-07-22 00:05 SWHsz 阅读(116) 评论(0) 推荐(0) 编辑
摘要:斜率优化dp。 显然,如果一个土地的长,宽都小于另一个土地,那么就一定能被免费打包带走,排个序~~(或许只有我因为这个调了半天)~~,去一下这些没用的。 一个O(n^2)的显然做法:以f[i]表示买了前i块土地最小花费。 $f_i=f_j+len_i \cdot width_{j+1} (1 i 阅读全文
posted @ 2018-07-21 20:41 SWHsz 阅读(123) 评论(0) 推荐(0) 编辑
摘要:树形DP。 每个点有两个属性:黑色点的权值和,白色点权值和,一个知道另一个也一定知道。 因为只要子树的和它相等的点得权值和不超过x[u],u点的权值总能将其补齐。 设计状态f[u]表示以u为根的子树,和u颜色不同的最小权值和,树形背包转移。 cpp include include include u 阅读全文
posted @ 2018-07-21 19:36 SWHsz 阅读(233) 评论(0) 推荐(0) 编辑
摘要:用可持久化线段树维护可持久化数组。可持久化线段树见之前发的主席树模板 cpp include include include using namespace std; int n,m; const int N=22000001; int rt[N],l[N],r[N],t[N],cnt; int b 阅读全文
posted @ 2018-07-20 21:39 SWHsz 阅读(96) 评论(0) 推荐(0) 编辑
摘要:有人恶意刷难度。。。就一个最大流模板。。。 但是题面吼啊2333 cpp include include include include using namespace std; int n,m; const int N=505,S=0,T=504; char s1[105][10],s2[105] 阅读全文
posted @ 2018-07-20 21:05 SWHsz 阅读(147) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2018-07-20 19:10 SWHsz 阅读(42) 评论(0) 推荐(0) 编辑
摘要:欢乐赛爆零祭 今天上午困得要死,全程划水。。 T1: 同gss3.最后query的时候return 的ans2,全部翻车。样例还过了。 cpp include include include using namespace std; int n,m; const int N=500005; stru 阅读全文
posted @ 2018-07-20 15:03 SWHsz 阅读(105) 评论(0) 推荐(0) 编辑
摘要:双向搜索。 ~~水div3的时候最后一道题由于C题死活看不懂题~~ 来不及做F了Orz。。 因为n,m是20,双向搜索一下,求个到中间的Xor值的方案,统计一下即可。 时间复杂度O(2^{21}) ~~好好学习英语,readforces。。。~~ cpp include using namesp 阅读全文
posted @ 2018-07-19 21:36 SWHsz 阅读(212) 评论(0) 推荐(0) 编辑
摘要:盲人oi,the best oi T1: DP+贪心 贪心地让以i为结尾的序列的最后一段最小,直接转移。 cpp include const int N=200005; long long n,h[N],f[N],sum[N],las[N]; int main(){ freopen("tower.i 阅读全文
posted @ 2018-07-19 16:17 SWHsz 阅读(99) 评论(0) 推荐(0) 编辑
摘要:~~水题。。。我在干什么~~ f[i][j][k][0/1]表示取到(i,j),差值为k,最后一次是0/1取的, 把k=0,最后一维是1的加起来就行了。 cpp include include include using namespace std; const int N=805,mod=1e9+ 阅读全文
posted @ 2018-07-18 22:43 SWHsz 阅读(118) 评论(0) 推荐(0) 编辑
摘要:因为修改的地方越靠上,影响的节点就越多。 O(n)求出从叶到每个节点的最长时间,对每个子树同步即可。 cpp include include include using namespace std; const int N=500005; int n,s,head[N],ecnt,dis[N]; l 阅读全文
posted @ 2018-07-18 18:58 SWHsz 阅读(151) 评论(0) 推荐(0) 编辑
摘要:后缀数组是解决字符串问题的有力工具——罗穗骞 后缀数组是对字符串的后缀排序的一个工具, sa将排名为i的字符串的开头位置记录下来, rnk将开头位置为i的字符串的排名记录下来。 https://www.cnblogs.com/ECJTUACM 873284962/p/6618870.html 如代码 阅读全文
posted @ 2018-07-18 17:14 SWHsz 阅读(164) 评论(0) 推荐(0) 编辑
摘要:我本来想看看SAM,就看见了这个。。 这道题很容易让人想到数位DP,用f[i][j]表示考虑到第i位,最后一位是j的方案数。看到1e18,直接矩阵快速幂加速,因为它每位转移都是差不多的。。 (本咸鱼复制的矩阵乘法的板子,结果忘了调矩阵大小,调了半天Orz) cpp include inc 阅读全文
posted @ 2018-07-18 15:24 SWHsz 阅读(159) 评论(0) 推荐(0) 编辑
摘要:最大费用最大流。 建图思路: 起点终点能走两次,限流。 用个map存下string与编号的对应关系,输出方案时走那些走过流量的边。 cpp include include include include include include using namespace std; const int N 阅读全文
posted @ 2018-07-17 20:43 SWHsz 阅读(132) 评论(0) 推荐(0) 编辑
摘要:状压DP。 设状态f_{i,S}表示考虑最后一个奶牛是原序列中第i个,现在选的奶牛的集合为S,即可凭此转移。 cpp include include include include using namespace std; long long n,k,a[20],ans,f[20][1 n k; 阅读全文
posted @ 2018-07-17 20:13 SWHsz 阅读(93) 评论(0) 推荐(0) 编辑
摘要:脑洞+暴力。 因为边权是1,所以bfs一下,O(n^2)求任意两点间最短路,再枚举。 ans最大是dis_{s1,t1}+dis_{s2,t2} 再考虑有公共边的情况,一定存在两个点 u, v ,最后留下的边为(s1,u),(s2,u),(u,v),(v,t1),(v,t2)或是 (s1,u), 阅读全文
posted @ 2018-07-17 19:52 SWHsz 阅读(205) 评论(0) 推荐(0) 编辑
摘要:因为x =2,所以一个数每乘x,二进制位总会往前推至少一位。因此把所有的x贪心地乘在一个上面即可。 用前缀后缀和优化一下即可。 迷:为什么手写pow就过了,stl的pow就过不了?? cpp include include include using namespace std; long long 阅读全文
posted @ 2018-07-16 21:02 SWHsz 阅读(155) 评论(0) 推荐(0) 编辑
摘要:~~AK爷GhostCai的电脑又蓝屏了Orz~~ 贪心题,确定一个maxh,限定h不大于一个值。枚举maxh。 check的时候的细节很多: 1.h maxh但w include include using namespace std; const int N=1005; int n,w[N],h 阅读全文
posted @ 2018-07-16 20:32 SWHsz 阅读(174) 评论(0) 推荐(0) 编辑
摘要:~~刷水题~~做几道入门贪心题预热。。。 找联通块里字典序最小的放到最前面即可。~~记得写传递闭包~~ cpp include include include using namespace std; const int N=350; int n,a[N],pos[N],g[N][N]; int m 阅读全文
posted @ 2018-07-16 19:51 SWHsz 阅读(133) 评论(0) 推荐(0) 编辑
摘要:贪心水题。 思路:将原排列弄成有序数列的最少操作,转化一下思维就是不用操作的最多数字。 LIS? 不止。 如 1 2 4 5 3,ans=2,但n lis=1 所以要求的是连续的lis。 O(n)求连续lis:做一个类似桶(?)的东西,递推一下即可,看一下代码就懂了。。 cpp include in 阅读全文
posted @ 2018-07-16 19:21 SWHsz 阅读(181) 评论(0) 推荐(0) 编辑
摘要:https://blog.csdn.net/creatorx/article/details/71100840 AC自动机就是一直跳fail边,然后找到整个要匹配的串就行了。 fail边:大概就是指向以当前节点表示的字符 为最后一个字符的 最长当前字符串的 后缀字符串的 最后一个节点(摘自上面的博客 阅读全文
posted @ 2018-07-15 21:07 SWHsz 阅读(122) 评论(0) 推荐(0) 编辑
摘要:复习一下kmp,结果发现真的需要复习。 本题很水,思路很明显,但是有个咸鱼kmp打错这也。。。sad 做两遍kmp,然后发现如果nxt的长度 include include using namespace std; const int N=1e7+5,mod=1e9+7; char s[N]; in 阅读全文
posted @ 2018-07-15 20:19 SWHsz 阅读(102) 评论(0) 推荐(0) 编辑
摘要:今天真是个奇奇怪怪的考试。。。盲人OI+智障OI=HSZOI T1:(出题人英语水平堪忧) 不会写正解,写的暴力水一下。。。谁曾想有个咸鱼搞错了a,b,x,y的正确关系????80 40??? 暴力80解,留个纪念,纪念本咸鱼首次(希望最后一次)写错变量名: 正解:扩欧求方程一组x最小,y最大的解。 阅读全文
posted @ 2018-07-15 15:09 SWHsz 阅读(114) 评论(0) 推荐(0) 编辑
摘要:我是咸鱼 T1 图论题。。。。我竟然只写了暴力○| ̄|_ sol:我好懒啊 cpp include include include include define int long long using namespace std; const int N=100005; int n,m,d[N],a 阅读全文
posted @ 2018-07-13 19:29 SWHsz 阅读(100) 评论(0) 推荐(0) 编辑
摘要:和花神游历各国有一点像的地方就是都到某一状态后就可以不修改了。当当前值为1/2时就不用修改了。 对于预处理每个数的因子数,我只会n^2的,但显然不行,后来我突然想到一个渐进于O(nlnn)的,如代码~~(后来发现是我太菜想不到,别人都是这的写的)~~ cpp include include 阅读全文
posted @ 2018-07-12 20:16 SWHsz 阅读(202) 评论(0) 推荐(0) 编辑
摘要:线段树题,打个标记即可,因为如果那个位置的值被降到了1/0,再怎么sqrt它也不会变。如果一个节点的两个子树已经全部被打了标记,那么就不用再更新了。 这份代码因为一开始打错了疯狂T,加了各种鬼畜优化。。。~~(貌似这的跑的能快一点点)~~ 阅读全文
posted @ 2018-07-12 19:40 SWHsz 阅读(142) 评论(0) 推荐(0) 编辑
摘要:做了昨天的维护区间GCD的题这道题就不难了 有一个性质就是一个区间内如果有 =两个数不能被x整除,即输出NO 那么就可以用线段树维护区间的GCD是否是X的倍数,如果发现有两个区间不是,那么就GG了。 用return 2表示有1个,还可以挽救,return 1表示很完美,return 0表示已经GG。 阅读全文
posted @ 2018-07-12 18:57 SWHsz 阅读(205) 评论(0) 推荐(0) 编辑
摘要:线段树维护区间GCD~~(我永远爱GCD)~~ 和区间内值为GCD的数的个数 因为区间越大,GCD只会越来越小,所以新的GCD如果不等于原来的GCD,那么这个子区间内就不会有数等于新GCD。 根据这个性质随便搞一下就行了。 cpp include include include include us 阅读全文
posted @ 2018-07-12 00:08 SWHsz 阅读(131) 评论(0) 推荐(0) 编辑
摘要:大力讨论。 luogu上交spoj的题卡的一比... 难受 wa了好几次,原因大概首先求的是非空区间,不能乱和0取max,第二点是求无相交的解时,在两段求lmx和rmx的时候可以取max(0)。 区间相交的有四种讨论,大概就是讨论一下左右端点在左/右/公共区间即可。 cpp include incl 阅读全文
posted @ 2018-07-11 22:45 SWHsz 阅读(242) 评论(0) 推荐(0) 编辑
摘要:线段树操作。 维护一个区间最大连续子段和,左最大连续子段和,右最大连续子段和即可。 最后不知道怎么搞,query的时候返回了个结构体。 cpp include include include using namespace std; const int N=50005; int n,q,a[N],o 阅读全文
posted @ 2018-07-11 19:30 SWHsz 阅读(110) 评论(0) 推荐(0) 编辑
摘要:组合式能想出来。 首先就是假设两个老师中间只有一个女生,那么把这三个人看成一个整体,还有一种就是两个老师之间不是仅有一个女生,那么有n+3个空隙,女生插空即可。 高精坑死了,char开的10000还不行,开的100000 cpp // luogu judger enable o2 //Writer: 阅读全文
posted @ 2018-07-10 23:09 SWHsz 阅读(119) 评论(0) 推荐(0) 编辑
摘要:大水题,二项式定理即可(忘得差不多了) 对于一个二项式,(a+b)^n的结果为 $\sum_{k=0}^{k include include define int long long using namespace std; const int mod=10007; int n,m,k,a,b, 阅读全文
posted @ 2018-07-10 21:09 SWHsz 阅读(118) 评论(0) 推荐(0) 编辑
摘要:又咸鱼了。 原因: 1:策略失误,死磕最后一道题,觉得非常可做,结果别的题只写了暴力,最后一道题是& |集训队作业题Orz。。。。爆零gg 2:组合数学的操作很弱啊。。。做的题看似难度大,实际上只是用到的算法难,实际上思维难度并不大。一遇到包装起来的题就gg T1: 正难则反 从后往前思考放珠子,最 阅读全文
posted @ 2018-07-10 16:22 SWHsz 阅读(156) 评论(0) 推荐(0) 编辑
摘要:和最长k可重区间集问题一样。 cpp include include include include include include include define int long long const int N=10005,S=10003,T=10004,inf=0x3f3f3f3f3f3f3f 阅读全文
posted @ 2018-07-10 00:13 SWHsz 阅读(112) 评论(0) 推荐(0) 编辑
摘要:T1: 一道背包,从大到小排一遍序,枚举取到了第i个物品f[j]表示这时剩余j元的方案数. 取第i个物品:f[j]+=f[j a[i]],若i取的话,i+1...n一定要被取到,那么剩余的钱在m a[i]的范围内时就可以更新答案. 出自不知道谁写的,给我们发下来的题解上。。。 T2 数学题 算法:组 阅读全文
posted @ 2018-07-09 21:00 SWHsz 阅读(137) 评论(0) 推荐(0) 编辑
摘要:我好咸鱼。 归并排序之前写过,树状数组就是维护从后往前插入,找比现在插入的数大的数的数量。 如果值域大,可以离散化 归并排序求 cpp include include include using namespace std; int n,a[50005],b[50005]; int merge(in 阅读全文
posted @ 2018-07-09 20:43 SWHsz 阅读(207) 评论(0) 推荐(0) 编辑
摘要:想填一下以前的坑,结果发现是巨坑Orz lcs就是把a序列的位置映射到b序列上,求一个用树状数组lis即可 好简单啊,我真的是咸鱼Orz cpp include include include using namespace std; int n,ans; int a[100005],b[10000 阅读全文
posted @ 2018-07-09 10:52 SWHsz 阅读(247) 评论(0) 推荐(1) 编辑
摘要:分层图bfs/spfa spfa好难写。。。 调不出来,写了bfs 记录持有钥匙的状态,以此分层即可。 cpp include include include include using namespace std; const int N=105,dx[4]={0,0,1, 1},dy[4]={1 阅读全文
posted @ 2018-07-09 10:00 SWHsz 阅读(213) 评论(0) 推荐(0) 编辑
摘要:01分数规划的基本裸题。 因为路线一定是个环,所以找个最优比率生成环即可 二分一个比值,check一下即可。 阅读全文
posted @ 2018-07-08 23:51 SWHsz 阅读(111) 评论(0) 推荐(0) 编辑
摘要:我真的是咸鱼啊 多少年前的基础了我竟然才弄明白,哭 用树状数组维护 using namespace std; mapmp; int f[50005],n,t[50005]; void modify(int x,int Max){ for(int i=x;i 阅读全文
posted @ 2018-07-08 21:48 SWHsz 阅读(766) 评论(5) 推荐(0) 编辑
摘要:前置: nlogn逆序对: 前一个小时我还真的不会这个Orz 这里运用归并排序的思想。 对于一个序列,我们把它先分开,再合并成一个有序序列。 引自https://blog.csdn.net/qq_30189255/article/details/50937307 假设f(i,j)为i到j号元素中的逆 阅读全文
posted @ 2018-07-08 21:28 SWHsz 阅读(365) 评论(0) 推荐(0) 编辑
摘要:一直没有思路啊。。 看了下byvoid的解释,强啊 以下内容来自byvoid https://www.byvoid.com/zhs/blog/lpf24 solution 最大权不相交路径问题,可以用最大费用最大流解决。 【建模方法】 方法1 按左端点排序所有区间,把每个区间拆分看做两个顶点,建立附 阅读全文
posted @ 2018-07-08 19:04 SWHsz 阅读(174) 评论(2) 推荐(0) 编辑
摘要:树链剖分LCA O(n) O(logn) cpp include include const int N=500005; int n,m,S,ecnt,head[N],tim; struct Edge{int to,nxt;}e[N=dep[top[y]]) x=fa[top[x]]; else y 阅读全文
posted @ 2018-07-08 18:41 SWHsz 阅读(101) 评论(0) 推荐(0) 编辑
摘要:看到一个dalao的博客,里面有很多神奇的东西。 https://www.czyhe.me/2018/05/05/strangaj lerta%C4%B5oj.html (这种博客会不会崩。。。) 阅读全文
posted @ 2018-07-08 17:35 SWHsz 阅读(193) 评论(2) 推荐(0) 编辑
摘要:一道冒充网络流的最短路题。 根据题意,用位运算表示能否转移与转以后的状态。 (!(u & cantinc[i])) && (!(incw[i] & u ^ incw[i])) u表示旧状态,cantinc(can't include),inc(include wron 阅读全文
posted @ 2018-07-08 15:40 SWHsz 阅读(116) 评论(0) 推荐(0) 编辑
摘要:费用流Orz 懒癌发作复制了个mcf的模板 然后那个模板建边cost是不取反的,因此出现了负环,spfa出不来了,调试到心态爆炸Orz 建模:每个点向与它有相连的点连一条边权为1,cost为v的边,表示一个物品可取一次,再连一条边权inf,cost为0的边。 读题大赛,出题人语文水平堪忧。 cpp 阅读全文
posted @ 2018-07-08 11:58 SWHsz 阅读(106) 评论(0) 推荐(0) 编辑
摘要:在tyvj上怀疑爆栈了.....~~或许~~一定是我写挂了。以后调吧。。。 UPD:bzoj上过了。。。 题解:https://blog.csdn.net/popoqqq/article/details/39965603 po姐太神了! cpp include include include inc 阅读全文
posted @ 2018-07-08 10:23 SWHsz 阅读(178) 评论(0) 推荐(0) 编辑
摘要:突然发现这个自己还不会。。。 其实也不难,就和快速幂感觉很像,把物品数量二进制拆分一下,01背包即可 我是咸鱼 cpp include include include using namespace std; int a[7],ave,sum; bool f[120005]; void bag01( 阅读全文
posted @ 2018-07-08 08:55 SWHsz 阅读(168) 评论(0) 推荐(0) 编辑
摘要:做克鲁斯卡尔的时候维护一个并查集即可。 cpp include include include include using namespace std; const int N= 6010; int T; struct Edge { int x,y,val; } e[N]; bool operato 阅读全文
posted @ 2018-07-08 02:04 SWHsz 阅读(322) 评论(0) 推荐(0) 编辑
摘要:滚动数组优化一波。 原设计状态:表示三个员工分别的位置和执行到的任务。 考虑到:执行完第i个任务,一定有员工在pos[i],那么就可以压一维,空间复杂度就算不滚动数组也可以了。 (喜闻乐见,~~今天~~第一次)1A cpp include include include using namespac 阅读全文
posted @ 2018-07-08 01:14 SWHsz 阅读(199) 评论(0) 推荐(0) 编辑
摘要:对的n^3的程序调了一个月了,惊了。。。 HSZ学oi\Longleftrightarrow闭眼学oi 要不是翻旧账还看不见。。 这是有n^2做法的。 参见LYD的书P244 cpp include include include include include include defi 阅读全文
posted @ 2018-07-08 00:25 SWHsz 阅读(132) 评论(0) 推荐(0) 编辑
摘要:LCIS模板 cpp include include include using namespace std; int n; long long a[3005],b[3005],f[3005]; int main() { scanf("%d",&n); for(int i=1; ib[j]&&f[j 阅读全文
posted @ 2018-07-07 23:53 SWHsz 阅读(281) 评论(0) 推荐(0) 编辑
摘要:歪解:爆空间的DP cpp //Writer:jr HSZ;%%%WJMZBMR include include include define LL long long define reg register int define f(i,a,b) for(reg i=a;i include lon 阅读全文
posted @ 2018-07-07 23:14 SWHsz 阅读(116) 评论(0) 推荐(0) 编辑
摘要:巨坑 树剖学的好啊! sfailsth 把一段路径拆成两段,向上和S LCA,向下LCA T 用维护重链什么的操作搞一下。 sfailsth学长真不容易啊。。。考场上rush了4.58KB代码。。。。 常数巨大懒得优化,最慢一个点1528ms/128703KB,Orz cpp include inc 阅读全文
posted @ 2018-07-07 21:27 SWHsz 阅读(206) 评论(0) 推荐(0) 编辑
摘要:本来用vector写的,结果T了,您还卡常啊.... 这类题叫同余类bfs,因为h太大了,我们不可能枚举(雾) 把h层弄成膜a下剩余系,然后向每个剩余系(x+b)%a连权为b的边,(x+c)%a连权c的边,spfa一发,然后随便搞一下。 long long! cpp include include 阅读全文
posted @ 2018-07-07 00:29 SWHsz 阅读(188) 评论(0) 推荐(0) 编辑
摘要:rainbowcat的题解,然后AK爷按这个写挂了(AK爷怎么可能写挂,肯定是题解的问题) cf的毒瘤数据卡了lyd的说法,一个全是W的图。 那么我们应该让最后求得时候 这样就输出min(ans)即可AC cpp include include include include include u 阅读全文
posted @ 2018-07-06 23:46 SWHsz 阅读(210) 评论(0) 推荐(0) 编辑
摘要:给定m0~2^n 1的整数 ,每个整数代表一个点,两个整数x,y之间有无向边联通当且仅当 x&y=0 求无向图有多少个联通块 $ n include include include using namespace std; int n,m; int a[1 n m; for( 阅读全文
posted @ 2018-07-06 23:17 SWHsz 阅读(141) 评论(0) 推荐(0) 编辑
摘要:lyd讲的最小生成树的题。 道理我都懂,费用流多好写,又好调。但和一般费用流不一样的就是它走过一次后费用需调成0,但是再等回流,就恢复原状即可。 cpp include include include include using namespace std; const int N=5050,S=0 阅读全文
posted @ 2018-07-06 20:35 SWHsz 阅读(226) 评论(0) 推荐(0) 编辑
摘要:大意:给一张图,每个图上有一个数,问以每个点为源点,经过的点包含k种数字的最小距离。 显然跑最短路会T,但我们注意到边权一定。某次学校考试就是类似题,可以bfs做,复杂度O(n),每种货物做一次,复杂度O(kn),n=1e5,k=100,稳了。 cpp include include include 阅读全文
posted @ 2018-07-06 20:18 SWHsz 阅读(141) 评论(0) 推荐(0) 编辑
摘要:李煜东dalao今天给我们讲课了QwQ ppt上一道题 英文题说一下题意吧,以后又看不懂了 将一棵树分割成多个简单路径,每个边只能在一条路径上,但至少有一个公共节点。 输出简单路径分割方法/No 由题易知,如果图不是一个菊花图的话,想搞成题意的样子至少要有环或者有的路径共用。 想到这儿代码搞一搞就行 阅读全文
posted @ 2018-07-06 19:38 SWHsz 阅读(155) 评论(0) 推荐(0) 编辑
摘要:套路费用流 cpp include include include include using namespace std;const int S=0,T=100003,inf=0x3f3f3f3f; int m,n,tmd; int g[105][105],ecnt=1,head[1000005] 阅读全文
posted @ 2018-07-06 01:24 SWHsz 阅读(111) 评论(0) 推荐(0) 编辑
摘要:和试题库问题很类似 套路满满 阅读全文
posted @ 2018-07-06 01:11 SWHsz 阅读(126) 评论(0) 推荐(0) 编辑
摘要:梯形的第一行有 m 个数字。从梯形的顶部的 m 个数字开始,在每个数字处可以沿左下或右下方向移动,形成一条从梯形的顶至底的路径。 分别遵守以下规则: 1.从梯形的顶至底的 m 条路径互不相交; 2.从梯形的顶至底的 m 条路径仅在数字结点处相交; 3.从梯形的顶至底的 m 条路径允许在数字结点相交或 阅读全文
posted @ 2018-07-06 00:04 SWHsz 阅读(248) 评论(0) 推荐(0) 编辑
摘要:很水的费用流,本弱都能想出来QwQ 就是建一个图 (但是我不会怎么操作一下可以不重建图所以直接暴力重建,反正数据小) 求最大费用最大流的时候,就把cost变成 cost,之后输出 mincost即可。 强啊!Orz ~~代码非常清楚~~ cpp include include include inc 阅读全文
posted @ 2018-07-05 20:41 SWHsz 阅读(141) 评论(0) 推荐(0) 编辑
摘要:我是咸鱼啊啊啊啊 我再也不交卷前1S改代码了,会 1s 题面见文件。 T1 考场代码,毫无美感。 在逆推的时候应该除19,而非20~~(ryc:啊我也不知道为什么)~~. 因为是逆推,所以前一个点是这个点的 20/19 T2 一道貌似网络流的题,考场最后一秒改了边权,80 20 &^%$ @! 实际 阅读全文
posted @ 2018-07-05 15:57 SWHsz 阅读(187) 评论(0) 推荐(0) 编辑
摘要:可证贪心运送到中间的仓库最优,因为只能运送到相邻的仓库 证明:http://www.cnblogs.com/five20/p/8869948.html cpp //Writer:jr HSZ;%%%WJMZBMR include define int long long define reg reg 阅读全文
posted @ 2018-07-05 00:43 SWHsz 阅读(95) 评论(0) 推荐(0) 编辑
摘要:最大独立集 套路题 cpp include include include include using namespace std; const int S=0,T=40005,inf=0x7f7f7f7f; bool g[205][205]; int n,m,ecnt=1,h[Tq; q.push 阅读全文
posted @ 2018-07-05 00:37 SWHsz 阅读(125) 评论(0) 推荐(0) 编辑
摘要:贪心 反证法 放在旧的柱子上一定比新开一个优 cpp include include include std::vector d[60]; int n,ans=1,cnt; bool sqr[5005]; int main() { scanf("%d",&n); for(int i=1;i i 阅读全文
posted @ 2018-07-05 00:35 SWHsz 阅读(113) 评论(0) 推荐(0) 编辑
摘要:多重匹配+输出方案 套路题 cpp include include include include using namespace std; int n,k,s,m; int a,b,c; const int N = 5000; int h[Nq; q.push(0); h[0]=0; while( 阅读全文
posted @ 2018-07-05 00:33 SWHsz 阅读(90) 评论(0) 推荐(0) 编辑
摘要:最大权闭合子图问题 ans=sum maxflow 套路题 cpp //Writer:jr HSZ;%%%WJMZBMR include include include include include include include define LL long long using namespa 阅读全文
posted @ 2018-07-05 00:29 SWHsz 阅读(121) 评论(0) 推荐(0) 编辑
摘要:二分图匹配即可水过 没什么可说的 cpp //Writer:jr HSZ;%%%WJMZBMR include define LL long long define reg register int define f(i,a,b) for(reg i=a;i n m; for(;;) { scanf 阅读全文
posted @ 2018-07-05 00:28 SWHsz 阅读(120) 评论(0) 推荐(0) 编辑
摘要:byvoid好神啊Orz 摘自byvoid的题解 【问题分析】 有向无环图最小路径覆盖,可以转化成二分图最大匹配问题,从而用最大流解决。 【建模方法】 构造二分图,把原图每个顶点i拆分成二分图X,Y集合中的两个顶点Xi和Yi。对于原图中存在的每条边(i,j),在二分图中连接边(Xi,Yj)。然后把二 阅读全文
posted @ 2018-07-04 23:54 SWHsz 阅读(549) 评论(0) 推荐(0) 编辑
摘要:最大独立集。 最小割=最大流 套路题 我弱智的地方:边长是N严重不等于点数是N!!!~~数组开505也是没谁了~~ 阅读全文
posted @ 2018-07-04 21:16 SWHsz 阅读(151) 评论(0) 推荐(0) 编辑
摘要:题目建模很好 建模思路转自: "byvoid" (dalao十年前的题解Orz) 「问题分析」 第一问是LIS,动态规划求解,第二问和第三问用网络最大流解决。 「建模方法」 首先动态规划求出F[i],表示以第i位为开头的最长上升序列的长度,求出最长上升序列长度K。 1、把序列每位i拆成两个点和,从到 阅读全文
posted @ 2018-07-04 19:40 SWHsz 阅读(434) 评论(2) 推荐(0) 编辑
摘要:Manacher的题,较简单。 先manacher一下,找到每个回文串的长度,把长度为奇数的回文串统计一下,由于manacher,每个字母只会被统计一次,就不存在重复计算。看那个数据范围里面巨大的K很唬人,但是复杂度和这个K关系不大。(奇丑无比堪比wwb的代码) cpp //Writer : Hsz 阅读全文
posted @ 2018-07-04 19:35 SWHsz 阅读(173) 评论(0) 推荐(0) 编辑
摘要:flag:7月苟完除了某题外的23题。 flag完成了OrzID是luogu上的 IDNAMESOL 2756 飞行员配对方案问题 二分图匹配 2766 最长不下降子序列问题 简单DP+拆点->最大流 4015 运输问题 费用流 4016 负载平衡问题 我爱数学 4014 分配问题 最小/大费用最大 阅读全文
posted @ 2018-07-04 17:14 SWHsz 阅读(404) 评论(4) 推荐(0) 编辑
摘要:汽车加油行驶问题 网络流24题中的,但好像不用费用流水过~~更快?(我没测过)~~ 广搜搞一下,按剩余油量分层。 cpp include include include const int dx[4]= {0,0,1, 1},dy[4]= {1, 1,0,0}; int n,k,a,b,c,g[10 阅读全文
posted @ 2018-07-04 16:28 SWHsz 阅读(158) 评论(0) 推荐(0) 编辑
摘要:巨坑的一道题。 GhostCai:这不是道无脑题吗? 这个题不难,用ST表维护RMQ,然后处理一堆神奇的细节就行了。注意maybe和false。 手动狗头 cpp //<! // :: // :;J7, :, ::;7: // ,ivYi, , ;LLLFS: // :iv7Yi :7ri;j5PL 阅读全文
posted @ 2018-07-04 11:38 SWHsz 阅读(203) 评论(0) 推荐(0) 编辑
摘要:一道平衡树的题。 当时用pb_ds胡搞过了,但发现我的数据结构好鱼.。 2018.7.9修改:比数据结构更鱼的是dp 线段树可以搞,就是维护一个桶,然后支持单点添加,区间赋值,记一个detla,记录工资的加减。为防止工资出现负数,做桶时候RE,加一个100001,query后减去。 Orz:http 阅读全文
posted @ 2018-07-04 09:38 SWHsz 阅读(139) 评论(0) 推荐(0) 编辑
摘要:线性基裸题,求最大线性无关组。 注意:1ll int n,m; const int mod=2008; long long b[64]; void insert(long long x) { for(int i=62; ~i; i ) { if((x i)&1) { if(b[i]) x^=b[i] 阅读全文
posted @ 2018-07-04 00:44 SWHsz 阅读(93) 评论(0) 推荐(0) 编辑
摘要:区间DP 赶紧补一补QwQ 因为它可能有负数,那么我们就维护两个值,mx和mn 说不定哪一天负数就变成正数了呢2333 然后环上区间DP操作一下 cpp include using namespace std; const int inf=0x3f3f3f3f; int n; int a[55]; 阅读全文
posted @ 2018-07-03 20:08 SWHsz 阅读(144) 评论(0) 推荐(0) 编辑
摘要:题面见文件 T1: 一道贪心大水题,然后我wa了。。。 就是把它按照结束时间排个序,然后乱搞一下就行了 T3 一道线段树的操作题。也可以分块 线段树维护最长连续上升子序列裸题,写挂交暴力。 cpp include include include using std::max; const int N 阅读全文
posted @ 2018-07-03 17:30 SWHsz 阅读(249) 评论(4) 推荐(0) 编辑
摘要:"学习dalao的blog" flag++ cpp void insert(long long x){ for(int i=60;~i;i ){ if(x&(1llx)x^=base[i]; } return x; } long long query_min(long long x){ for(in 阅读全文
posted @ 2018-07-02 19:41 SWHsz 阅读(158) 评论(0) 推荐(0) 编辑
摘要:flag++ cpp //Writer : Hsz %WJMZBMR%tourist%hzwer include include include define LL long long define M(a,b) memset(a,b,sizeof a) const int inf=0x3fffff 阅读全文
posted @ 2018-07-02 15:36 SWHsz 阅读(117) 评论(0) 推荐(0) 编辑
摘要:"[HNOI2013]游走" 晚上回去写 flag++; cpp include include include const int N = 505;const double eps=1e 8; int n,m,ecnt,head[N],d[N],S[N N],T[N N]; double f[N] 阅读全文
posted @ 2018-07-02 15:28 SWHsz 阅读(95) 评论(0) 推荐(0) 编辑
摘要:"[Noi2002]Savage" 数学题。 题解回去写(有个坑点) flag++ cpp include int n,m,c[25],p[29],l[29]; int exgcd(int a,int b,int &x,int &y){ if(!b){x=1,y=0;return a;} int a 阅读全文
posted @ 2018-07-02 10:57 SWHsz 阅读(122) 评论(0) 推荐(0) 编辑
摘要:"[SDOI2010]古代猪文" 一道数学题。 题解回去补 flag++ cpp include include long long n,g; long long prime[4]= {2,3,4679,35617}; const long long mod=999911659; int x[4]; 阅读全文
posted @ 2018-07-02 10:28 SWHsz 阅读(140) 评论(0) 推荐(0) 编辑
摘要:"题面" 最小生成树计数题。 每个MST中,每种长度的边的数目是一定的,由此可以搞一下 因为限制了同一长度的边的数量不超过10,可以dfs 注意的一点:不要随随便便把东西放到for循环的里面如$for(i=1;i include int n,m,ecnt,fa[105],ans,cnt,nc 阅读全文
posted @ 2018-07-01 20:10 SWHsz 阅读(122) 评论(0) 推荐(0) 编辑
摘要:https://www.luogu.org/problemnew/show/P1640 luogu数据真心水。 对于这种要多次二分图匹配的,可以把vis数组定义成一个int型的,加一个时间戳,然后dfs的时候只需判定是否这个时间遍历过这个点,然后就可以了。不用多次memset。操作神奇。 cpp i 阅读全文
posted @ 2018-07-01 09:53 SWHsz 阅读(125) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示