分块傻逼题。 memset很慢的。。。而且其实也没有用。。。。
转载
2016-07-18 20:45:00
80阅读
2评论
两题本质是一样,只不过3585要离散化这种不修改,不强制的问题,显然先考虑离线算法这道题的思路和bzoj1878非常像考虑到如果只是求每个前缀的mex,我们是很容易扫一遍就得出来的我们设为这个位置的mex考虑从左往右依次删除当前数会对后面产生什么影响我们设删除数a[i],a[i]下一个相同数的位置为next[a[i]]显然对于[i+1,next[a[i]]-1]这些位置的mex可能有影响(如过没有
转载
2014-12-08 13:14:00
60阅读
2评论
最小割的经典模型,体现出最小割的基本定义,把两个集合划分的最小代价
把一开始同意的人连源点,不同意的连汇点,有关系的人之间连边,流量都为1
不难发现,割两点(人)间的边就相当于朋友之间发生冲突
割到连源汇点的边就相当于与原来意愿不同
所以解决问题的方案等于图中的一个割
则最少冲突数=最小割=最大流
1 type node=record
2 point,flow,next:
转载
2014-04-14 15:51:00
67阅读
2评论
BZOJ4712 洪水 BZOJ4712 洪水 1 题外话 鸽了好久 2 sol 首先考虑没有修改的情况,题目变成一个简单的dp 设\(f_i\) 表示从\(i\) 出发走不到所有其叶子节点的最小代价 则\(f_i=min(V_i,\sum_{t}f_t)\) 其中\(V_i\) 为删去\(i\) ...
转载
2021-07-15 15:26:00
44阅读
2评论
两题是类似的,这里说一下bzoj1853
首先我们求出所有的幸运号码,注意如果存在x是y的倍数则x不算在内,避免之后重复计算
下面我们就要统计幸运号码的倍数了,这显然是要用到容斥原理的
但是幸运号码很多,如果直接暴力找几个幸运号码的公倍数做容斥原理弄会TLE的;
因此我们想到在搜索中剪枝,如果几个幸运号码的公倍数已经大于r,
那么我们一定不会再用这几个幸运号码和别的幸运号码求公倍数了
为了体现这个
转载
2014-10-07 21:34:00
79阅读
2评论
BZOJ4128 Matrix BZOJ4128 Matrix 1 题外话 调了半天竟是因为比较函数打错 2 sol 矩阵离散对数 令\(x=A\lceil \sqrt{p} \rceil -B\) ,其中\(0\leqslant A,B \leq \lceil \sqrt{p} \rceil\) ...
转载
2021-07-16 19:57:00
68阅读
2评论
线段树的裸题;
但是操作很奇怪,开方是不能lazy tag的
看来只能暴力修改了
但注意,开放开到1的时候就不用开,立一个flag就可以了
这可以大大的优化;
其实我是来复习线段树的
1 var tree:array[0..400010] of int64;
2 lazy:array[0..400010] of boolean;
3 a:array[0..100010]
转载
2014-05-02 23:43:00
66阅读
2评论
[BZOJ3585][BZOJ3339]mex 试题描述 有一个长度为n的数组{a1,a2,...,an}。m次询问,每次询问一个区间内最小没有出现过的自然数。 有一个长度为n的数组{a1,a2,...,an}。m次询问,每次询问一个区间内最小没有出现过的自然数。 输入 第一行n,m。第二行为n个数
转载
2017-09-18 20:49:00
25阅读
2评论
BZOJ3782 上学路线 BZOJ3782 上学路线 1 题外话 奇怪的DP增加了 2 sol 直接删去坏点的难度有点大(暴力\(O(nm)\) ),考虑DP 设\(f[i]\) 表示从\((0,0)\) 走到第\(i\) 个坏点,中途不经过其他坏点的方案数 求某个\(f[x]\) 时,我们枚举它 ...
转载
2021-08-12 16:22:00
99阅读
2评论
思路:水题, 将所有点按x轴对称反转,就变成了两堆点的坐标和的差。。
转载
2018-06-16 20:36:00
24阅读
2评论
思路:很容易就能想到统计没两对点之间的未匹配点的个数。 在想怎么用数据结构维护这个东西, 没有想到用树状数组能很巧妙地维护出来, 就写了个莫队。。。 莫队:暴力维护就好了。 树状数组: 对于第一次遇到的数a[ i ], 我们往 i 位置加1, 对于第二次遇到的数,我们往 pre[ a[ i ] ]
转载
2018-06-15 15:28:00
10阅读
2评论
思路:因为被占奇数次的点只有一个, 那么我们可以将数轴分成两部分,奇数次点之前的前缀和为偶数,之后的前缀和为奇数, 然后就可以二分了。
转载
2018-06-06 14:04:00
30阅读
2评论
想了一个小时。。 思路:dp[ i ] 表示第一台机器用了 i 分钟 第二台机器所用的最少分钟数,然后转移一下就好啦。
转载
2018-06-03 19:50:00
30阅读
2评论
思路:随便猜一猜填的数字是不下降的,反证很好证明,然后就没了。。
转载
2018-10-08 21:35:00
24阅读
2评论
莫比乌斯反演 答案求$\sum_{i=1}^{n}{\sigma(i^{2})}$ 转化一下 设$f(i)=\sum_{d|i}{\mu(d)^{2}}$ 答案等于 $\sum_{i=1}^{n}\sum_{d|i}{f(d)}$ 为什么呢,这么思考一下,我们求的是每个$i^{2}$的约数个数,枚举
转载
2019-08-25 08:38:00
21阅读
2评论
思路: 水题 竟然不会做 尴尬 比b大的数=1 比b小的数=-1 找到b 统计一下左边比b大x的数有多少 扫右边的时候就查左边的表 就可以了
转载
2017-04-01 08:25:00
12阅读
2评论
思路: 维护两个指针pointer_1和pointer_2 代表用算法一走到的位置 和算法2走到的位置 若 算法一<算法2 数组后面就插入算法一的解 pointer_1++ (记得判重) (这题卡不住heap什么鬼)
转载
2017-04-01 07:51:00
22阅读
2评论