随笔分类 -  其它--乱搞与思维

摘要:"题面戳我" Solution 一般这种有两种选择的题都可以转化成最小割来做 所以我们先把所有的代价累加,求最小损失 考虑第一二种代价,分S,T连就好了。。。 连完你会发现,第三种怎么连??? 要求在同一块儿的损失,怎么用连边表示?? ~~这个时候只能Orz Zsy大佬了~~ 不同类 相邻 的格子 阅读全文
posted @ 2018-01-08 17:18 Cyhlnj 阅读(188) 评论(0) 推荐(0)
摘要:"题面戳我" Solution 一般这种题就转化成最小割做 把最大收益转化成最小损失,先把所有收益加入ans 考虑建图,设S集合为选文的,T为选理的 单个选的比较简单,就直接连就好了: 直接令容量(S,x)=选文科的收益,(x,T)=选理科的收益即可。 那么两个一起选的怎么连? 设两个人x,y,他们 阅读全文
posted @ 2018-01-08 15:21 Cyhlnj 阅读(153) 评论(0) 推荐(0)
摘要:显然选择的区域有一维要是1,其他维要最大 相当于问最少切多少个面才能覆盖所有点 a*b*c<=5000 那么一定有一个小于等于17 枚举这一维切不切,跑二分图即可 TLE代码千万别复制 # include <bits/stdc++.h> # define IL inline # define RG 阅读全文
posted @ 2018-01-04 22:36 Cyhlnj 阅读(278) 评论(0) 推荐(0)
摘要:前50分就开两个数组,一个sum[i][j][k],表示1,1到i,j大于k的和,num[i][j][k]表示个数,二分一下就好 后50分用主席树,主席树上二分 # include <bits/stdc++.h> # define RG register # define IL inline # d 阅读全文
posted @ 2018-01-04 18:41 Cyhlnj 阅读(196) 评论(0) 推荐(0)
摘要:先把问题简化,怎样求一个点x和y的lca的deep和 显然直接求LCA,但是这样的话,要求多个就不好叠加 于是可以用奇技淫巧:先把x到根的所有点打上标记,那么询问y到根的标记的个数即为答案,这样就可以叠加 所以对于询问,拆成[1,l-1], [1, r],排序后依次加点覆盖标记即可 可以用树链剖分+ 阅读全文
posted @ 2017-12-31 20:26 Cyhlnj 阅读(175) 评论(0) 推荐(0)
摘要:ST表,再大力讨论一下(因为lower_bound和upper_bound,WA了一次) # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof 阅读全文
posted @ 2017-12-30 08:15 Cyhlnj 阅读(371) 评论(0) 推荐(0)
摘要:显然知道一个节点就可以推出整棵树 然而直接乘会爆longlong 所以考虑取log 最后排序算众数即可 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <algorithm> # include <str 阅读全文
posted @ 2017-12-12 19:19 Cyhlnj 阅读(171) 评论(0) 推荐(0)