随笔分类 - 刷题记录 - BZOJ
摘要:这道题所需要的区间反转操作是Splay的主要功能之一——维护区间信息的一个应用。如何维护呢?我们考虑区间$[l, r]$,我们如何在Splay中将它变成一个可操作的东西呢?考虑把整个区间搞到一棵子树上去,然后用类似于线段树打懒标记的方法维护信息。 具体来说,我们把区间节点$l 1$旋到整棵树的...
阅读全文
摘要:最小生成树的裸题咯…
但是在边的编号上还是出了点问题… 以后直接上$n×n$,不虚。。
阅读全文
摘要:武神给窝看了这题,然后窝三秒钟之内没有反应出来做法。 然后码代码。TM然后窝WA了4次!! 为何窝如此沙茶… 果然窝还是NOIP选手…
阅读全文
摘要:之前一直把矩阵的元素以为是给定的$m$以内… 然后才发现… 哔了狗了… 二分图匹配咯… 如果第$i$行第$j$列是黑色,那么在代表这一行和这一列的两个节点之间连边。然后匈牙利算法跑一遍,判断最大匹配是否是$n$即可。有若干种想法可以证明(伪)它的正确性。如果某一组输入对应的二分图的最大匹...
阅读全文
摘要:NOI 2015 Day1 T1啊… 学(nao'bu)了一下离散化,跟哈希的写法差不多咯… 大概的想法就是搞一个struct,两个域,分别储存原值和排序后的编号(也就是离散化之后的值)。然后利用这个二分查找一下即可。举个例子,原序列排序后为$ 1, 2, 5, 1000, 25000 $,然后我们...
阅读全文
摘要:这道题可以用set水过,也可以练习写一下treap...
显然任何时候,领养人和宠物都不会同时存在……
所以就相当于每次查询序列的前驱/后继了…
贴上两份代码吧… 代码一(set): 代码二(treap): BZOJ的测试结果显示窝手写的treap比set还慢了4ms... 身败名裂.....
阅读全文
摘要:我也不知道BZOJ里为什么会出现这种非BZOJ画风的题。。
裸上前缀和即可。。
阅读全文
摘要:逻辑推理题。根据扫雷经验可以知道,边界上的格子一定是本题的突破口。先看第一列前两个格子,它们对应的是第二列的第一个格子,我们设之为$a_1$。如果$a_1=0$或$a_1=2$,则第一列前两个格子的方案唯一确定,所以我们只需判断输入是否合法即可。如果$a_1=1$,我们就枚举哪一个格子是有雷的,判断...
阅读全文
摘要:题目大意:有$n$个储钱罐,每个储钱罐的钥匙都在另一个储钱罐中。求打开每一个储钱罐所需要砸开的最小数量。 $Solution$:如果储钱罐$x$的钥匙在$y$中,那么就连边$x$ $y$。于是每个点的出度都是1。然后就变成了和NOIP 2015 Day1 T2几乎一样的题——Tarjan缩点或者D...
阅读全文
摘要:码了一发名次树,然后在remove和rank上GG了…… remove的话换了一种更保险的写法;而rank直接抄了Rujia Liu的代码…… 给Rj L跪了…
阅读全文
摘要:BZOJ 2423 DP 第一问是经典DP,直接做就可以了(设$f[i][j]$为$X$串考虑到$i$,$Y$串考虑到$j$,且不强制选$i$和$j$的方案数)。然后第二问。分几种情况讨论一下(可能看起来有点不优美……): 设$g[i][j]$为方案数,则 I. $A[i]=B[j]$ $...
阅读全文
摘要:把思路理顺了就行了… 下面把整个乱搞思路讲一下。
三条项链首先考虑最里面的那个珠子。如果不是完全相同的话,就需要把所有项链的所有珠子全都拆下来——这也就是全部过程,如果再装的话也是浪费。然后如果完全相同的话,就考虑倒数第二个珠子,一样的思维方式。因此,我们要找到的就是从里到外第一个不完全相同的珠子,...
阅读全文
摘要:本题是Treap/Splay的模板题了… 也可以用set或者双向链表实现。 (其实这题是在NOIP2012 Day1 T3的一部分啊。。 由于我懒,所以只码了Treap。还有很多模板题,先把这几种数据结构刷熟再说。 平衡树上找一个元素的前缀/后缀只要脑补一下,左左右右地走一走就行了。 第一次码,出现...
阅读全文
摘要:枚举1..n的每个数x,加上它对答案的贡献n/x即可。// BZOJ 1968#includeusing namespace std; int n, ans; int main(){ scanf("%d", &n); for(int i=1; i<=n; i++) ans+=n/i; ...
阅读全文
摘要:比较裸的DP+斜率优化啦…… 让窝又想到了BZOJ上A的第一道有意义的题1597…… 作为第27个A的题也让我颇有感触……设前$i$个玩具放置到$j$个盒子里所需的最小费用为$f[i][j]$。由于连续的玩具必须放到一个容器里,所以我们有:$$f[i][j]=f[k][j-1]+cost[k+1][...
阅读全文
摘要:题意:给出一张无向图,每次删去其中一个点,每删一次就输出当前连通块的数量。 首先要明确一点:删去一个点,同时也删去了和这个点有关联的边集。但无论如何,删点并不好搞,所以我们可以考虑倒着来,加点,用并查集维护。具体来说,每次加上一个点x,如果一个点是被第一次删去的(一个点可能被删去多次)(然而数据中并...
阅读全文
摘要:本题的DP思路很好想:设f[i]为第i个怪兽被消灭所需要的最小代价,那么,f[i]=min{spl[i],ori[i]+∑j∈App[i]f[j]}然而,由于f[j]有可能也要依赖f[i],所以这个DP会带环。啊,那该怎么办呢?遇到这类问题,我们常常用SPFA来处理。怎么处理呢?我们需要更新过f[j...
阅读全文
摘要:题意:求∑ni=1gcd(i,n) 首先,gcd(i,n)肯定是n的约数。所以我们可以考虑枚举每个n的约数d,然后看有多少个gcd(i,n)=d。这个式子又可以化成gcd(i/d,n/d)=1。而它,就相当于ϕ(n/d)。所以,答案就是∑d|nϕ(n/d),其中ϕ(x)可以在O(x√)的时间内求出。...
阅读全文
摘要:1009那题仍然记忆犹新…… 首先说一下1009的拓展:如果有多个串,则需要建立AC自动机,状态也需要改成:设f[i][j]为考虑到长度为i的字符串,匹配到AC自动机的j号节点的方案数,同样地道理构造出矩阵即可,只不过这里f[i][j]为0的条件变为j号节点是单词节点。 然后看这道题,它的要求是相反...
阅读全文

浙公网安备 33010602011771号