- 博客(106)
- 问答 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 To_Heart—题解——BZOJ1261
目录题目题解思路代码题目题目链接题解思路搜索。对于任何一个区间[l,r],枚举其中的每一个点i,将 l~ i-1看为左子树,i+1 ~ r 看为右子数,再递归找最小的即可。代码#include<bits/stdc++.h>using namespace std;#define db double#define ll long longint n;db k,c,sum=0;db a[35];db dp[105][105][105];const db INF=1000
2020-12-15 14:04:11
108
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 To_Heart—题解——SCOI2009迷路
题目描述原题来自:SCOI 2009Windy 在有向图中迷路了. 该有向图有 nnn个节点,Windy 从节点 000 出发,他必须恰好在TTT时刻到达节点 N−1N-1N−1。现在给出该有向图,你能告诉 Windy 总共有多少种不同的路径吗?注意:Windy 不能在某个节点逗留,且通过某有向边的时间严格为给定的时间。输入格式第一行包含两个整数NNN,TTT;接下来有 NNN行,每行一个长度为NNN的字符串。第iii行第jjj列为 0表示从节点iii到节点jjj没有边,为111到999表示从
2020-10-06 19:17:00
991
4
原创 再见csdn
为什么要润的话是根本没有理由留在csdn,一开始留在csdn是因为在上面写了很多博客了而且csdn的阅读量很有成就感,现在发现写合集的话根本没有阅读量,甚至还爬取不到。
2023-09-21 16:59:17
124
原创 To_Heart—题解——好多好多!
很多时候它们只是路过我的天空变化出许多场景让我哭了笑了不用再说。有好多多的题,多的 trick 你不在我脑子里。
2023-09-11 16:40:42
120
原创 To_Heart—题解——HDU6829 Borrow
大致题意:给你三个数 a,b,c 每次操作可以选择最大的数减一,其他两个数各有 1/2 的概率加一,如果两个数都是最大的就等概率选择一个减一,其他两个数各有 1/2 的概率加一。问最后所有数相等的期望,如果期望无限大输出 -1。显然 anow。那么可以根据 b 和 now 的大小关系分为两种情况。现在考虑其他两种情况。不妨设 a
2023-08-21 20:41:28
148
原创 To_Heart—题解——P6234 [eJOI2019] T形覆盖
因为每次两个十字的重合最多只能让每个点丢弃一个方块,并且每次重合至少有一个十字会丢弃掉一个方块,所以惊天的结论是我们可以直接计算整个十字连通块的中心点和非中心点的个数。如果非中心点的个数大于等于中心点的个数的三倍,那么当前连通块一定合法,否则不能保证每个十字的中心点都能分配到刚好三个非中心点,即无解。而我们发现两个十字重合的部分不会超过两个方块,也就是说把这两个方块任意分配给两个人,就能保证这两个每个人都只会舍弃一个方块。但是可能有非中心点的个数大于中心点的个数的三倍。考场只有30分是为什么呢?
2023-08-21 15:08:23
952
原创 To_Heart—题解——BZOJ 4671
表示至少有 i 个联通块的方案数。发现这种定义下并不关心枚举的联通状态内部是否真正的联通,因为划分节点后已经满足最少有 i 个了。所以内部的边的异或状态并不关心,只需要每两个联通块之间有边即可。然后把每个图的需要的边状压一下放入线性基中,假设基的个数为 k ,那么当前这种划分对于。,假设真正分出了 n 个联通块,而我们确规定把他们划分在了 i 个块中。为有 i 个联通块的方案数。但因为是异或所以并不好处理。虽然图很多,但是节点数只有 10。考虑枚举节点的联通状态,看哪些图是对其有影响。然后斯特林反演即可。
2023-05-09 17:52:18
543
原创 To_Heart—题单——SAM
感觉SAM挺神仙的,所以准备列个题单。不定时更新?感觉SAM最重要的是它的可以不重不漏遍历完所有子串的性质。很nb啊。但是但是要不咱们背板子吧!感觉 cmd 大佬一句话非常正确SAM模板的学习原则 : 理解性默写。
2023-03-23 22:01:38
244
原创 To_Heart—题解——[Ynoi2021] TEST_68
然后就是先找到整棵树中使得最大的那两个点。发现除了这两个点到1的两条链以外,其他的点的答案就是全局最大。然后你再处理一下这两条链就好了。傻逼玩意儿,思想很简单,但是好久没写过 trie 了,实现有点不会了。以及有的点答案为 0,所以需要用个数组记录到底该用谁表示答案。细节就是,因为子树包括本身,所以说选择从链的上端往下跑。
2023-02-21 17:39:14
64
原创 To_Heart—题解——[SCOI2012]奇怪的游戏
黑白染色后发现如果黑色格子数量等于白色格子数量,那我们可以转换成二分图网络流模型,这部分应该是个很常见的 trick,二分一下操作次数判断是否满流,然后无解的判断在于一开始黑白两种格子的权值和是否相等。的棋盘,每次操作可以选择两个相邻的格子,让这两个各自上的数都 +1。问最少多少次操作使得所有格子的数相等。因为相邻两个格子进行操作,而且是方格,所以很容易想到黑白染色(好久没做题了这个都想不到了/kk)。这时候其实可以直接确定最后的每个格子的值。那么我们直接用二分图那个来判断一下是否有解就行了。
2023-02-21 16:18:30
341
原创 To_Heart—题解——[SDOI2008] Sandy 的卡片
题目链接Link.题解闲话正解应该是SA,把数组差分一下,然后把它们合成一个数组,跑一遍后缀数组以后二分长度判断答案。但是好像忘了SA怎么打,所以用 hash 写了个复杂度高一个 log 的做法题解首先还是差分,那么问题就转换成了求 k 个串的最长公共子串长度,因为是差分,所以长度+1就是最后的答案。单调性很好证明,所以考虑二分答案,然后我们用 map 存一下每一个长度为 mid 的 Hash 值,如果这里面有一个 Hash 值大于或等于了 n,那么当前长度就是可行的。然后因为每次 Che
2022-03-16 15:51:13
133
原创 To_Heart—题解——[HEOI2013]ALO
题目链接Link.题解对于每一个数,我们先考虑它可以和哪些数异或。设当前这个数为 iii,如果我们能够找到左边的第二个 lll 使得 ai<ala_i<a_lai<al,那么 iii 就是区间 [l+1,i]\left[ l+1,i \right][l+1,i] 的次大值,同理往右边找到第二个 rrr 使得 ai<ara_i<a_rai<ar ,iii 就是区间 [i,r−1]\left[ i,r-1 \right][i,r−1] 的次大值。这两个区间的交
2022-03-01 16:56:08
140
原创 To_Heart—模板——可持久化并查集
** %% 楼下大佬暴力水过 **** 身为蒟蒻的我暴力写挂了,就码了一发可持久化权值字典树 **** 可持久化权值字典树和可持久化的权值线段树非常类似,会写主席树就能码出来可持久化trie **** 我们枚举每一个值作为次大值的情况 **** 不妨设当前数字左边第一个比它大的下标为l1l_1l1,第二个比它大的记作l2l_2l2**** 同理设当前数字右边第一个比它大的下标为r1r_1r1,第二个比它大的记作r2r_2r2 **** 那么对于一个数字来说,它能作为次大值的区间有很
2022-03-01 16:28:33
59
原创 To_Heart—题解—— [SDOI2009]HH的项链
题目描述Link.题解我们设 LastiLast_iLasti 表示右边离 i 最近且两者颜色相同的数的下标。那么我们要求的就是:∑i=lr[Lasti>r]\sum_{i=l}^r [Last_i>r]i=l∑r[Lasti>r]如果不加求和,那么我们 LastiLast_iLasti 为权值,建权值线段树,答案就是 r∼nr\sim nr∼n 的区间和。因为是区间和,具有可减性,所以我们可以把时间的递增看为一个序列,建主席树即可。代码#include<b
2022-02-23 14:43:15
86
原创 To_Heart—模板——整体二分
#include<bits/stdc++.h>using namespace std;int n,m;int a[2000005];int ans[2000005];char s[5];struct zz{ int op,l,r,k,id;} q[2000005],q1[2000005],q2[2000005];struct BIT{ int bit[2000005]; int Lowbit(int x){ return x&(-x); } void Insert(
2022-02-16 21:30:34
230
原创 To_Heart—题解—— [BZOJ2244]拦截导弹
题目Link.题解首先我们考虑暴力的dp,设 dpidp_idpi 表示以 iii 结尾的最多的导弹拦截长度,则 dpi=max(dpj+1),hi<hj∧vi<vjdp_i=\max(dp_j+1), h_i<h_j \wedge v_i<v_jdpi=max(dpj+1),hi<hj∧vi<vj,显然复杂度是 O(n2)O(n^2)O(n2) 的。考虑如何优化,发现可以用 CDQ分治。但是CDQ分治有个问题, 在处理 l∼rl \sim rl∼
2022-02-12 20:07:53
222
原创 CDQ分治 模板
例题Link.#include<bits/stdc++.h>using namespace std;#define ll long longint n,k,N;int ans[2000005];struct zz{ int x,y,z,ans,tot;}a[100005],b[100005];bool cmp(zz x,zz y){ return x.x==y.x?(x.y==y.y?x.z<y.z:x.y<y.y):x.x<y.x; }bool sm
2022-02-12 08:53:05
574
原创 直到冬天九年仍未记起镜中的她 题解
题目描述Link.题解首先枚举每一行的 1 的个数为 kkk;有一个基本的性质,就是每一行的1的个数×行数=每一列的1的个数×列数每一行的 1 的个数 \times 行数 = 每一列的1的个数\times 列数每一行的1的个数×行数=每一列的1的个数×列数 ,所以转换后的题目就可以用网络流来做了。边的类型有两种:我们把 Ai,jA_{i,j}Ai,j 看做是第 iii 行 和 第 jjj 列之间的一条边,如果 Ai,jA_{i,j}Ai,j 为 11,那么这条边流量为 1 ,费用为 0;
2022-02-10 21:56:35
77
原创 在重庆的两件衣服的冬天里 题解
题目描述Link.题解这道题肯定被喷,毕竟太版了,不过就当送分吧这道题目是仿造省选题出的,所以可以先看看这道题的题解考虑染色。然后我们发现通过走 红->黄->蓝->绿 就可以走完所有的情况。那么这道题就做完了,把格子按点分成四层。很板吧?肯定被喷的。代码#include<bits/stdc++.h>using namespace std;#define ll long long#define mp make_pair#define pii pair&l
2022-02-10 21:23:55
82
原创 To_Heart—总结——最小费用流 dijkstra+EK
前言因为害怕 SPFA 哪天就死了,所以好好学习天天向上的学习 dijkstra 吧!最小费用流 dijkstra+EK因为费用有可能是负数,但我们 可爱 的 dijkstradijkstradijkstra 并不能处理负的边权,所以我们需要利用 JohnsonJohnsonJohnson 算法中的势函数:我们对于每一个点定义一个势函数 hhh,把每条边权 wiw_iwi 改为 wi+hi−hjw_i+h_i-h_jwi+hi−hj,其中 hih_ihi 和 hjh_jhj 表示这条边的
2022-01-07 14:26:24
392
原创 To_Heart—题解——[COCI2021-2022#1] Volontiranje
前置芝士LIS 的 nlog(n)nlog(n)nlog(n) 算法也就是说您可以去看看这道博客题解长度直接求就好了,现在考虑怎么求方案数。我们把题目所给的序列中的每一个元素按照下标和值表示成一个点对,然后建立平面直角坐标系(xxx 为下标,yyy 为值,这里以样例 333 举例):我们发现,一个上升子序列反应到图上是由 xxx,yyy 均递增的点组成的,且任意组 xxx 递增,yyy 递减的点一定不是上升子序列。我们考虑从 x=1x=1x=1 开始,将这些点划分成多组 xxx 递增,yyy
2021-12-28 14:06:26
632
1
原创 To_Heart—题解——BZOJ1791
Link题解我们先考虑一个无法再增广的残留网络中有什么性质因为残留网络是由正向边和其对应的反向边组成的,那么对于 x,yx,yx,y 之间的某条边满流后,其对应的反向边一定有流量。这时,如果 x,yx,yx,y 间另有一条非满流边,则 x,yx,yx,y 间构成一个强连通块。然后我们考虑如果在一种方案中的一条边非满流,而这条边在其它方案中满流了,那么必会导致原方案中的某一条边由满流变为由非满流(如果它还是满流那么最大流就应该变大了)。那么这两条边有什么性质呢?如果我们沿着增广路,可以发现这两条边
2021-12-18 15:32:44
334
原创 To_Heart—题解——SP18878
这道题要用 Lucas 定理 的思想题解首先题目分析的是 奇偶性 ,那么其实就是相当于求∑k=0n(ni) mod 2 \sum\limits_{k=0}^{n} \dbinom{n}{i} \bmod 2k=0∑n(in)mod2考虑 (nm) mod 2\dbinom{n}{m} \bmod 2(mn)mod2在什么时候为 1 ,我们把 n 和 m 进制转换以后,则问题就转换为判断 mi≤nim_i\leq n_imi≤ni 是否成立,如果成立,那么原式一定是 1 。因为模数为 2
2021-12-14 21:07:33
782
原创 To_Heart—题解——CF1473F
这里提供一种非常简单,而且贼有效的连边方式首先因为靠后的点会被靠前的点限制,所以这是一道 最大闭合子图 的板题。但是出题人卡了空间,当所有的 aia_iai 相同的时候,连边的复杂度是 n2n^2n2 的,会被卡掉。我们考虑优化,因为 ai≤100a_i \leq 100ai≤100 ,所以我们最多只需要连 100 条边就可以了,所以我们当 iii 已经向 jjj 连边了,那么当 ak=aj,k≠ja_k=a_j,k\neq jak=aj,k=j的时候,我们就不需要由 iii 向 kkk
2021-12-11 13:58:32
207
原创 To_Heart—题解——[CQOI2017]老C的方块
这里提供一种更好想,但是点会多一些的做法首先我们很容易就能想到染色染色我们按照以上方法染色,然后发现从 1 出发,沿着 1->2->3->4 的路线,可以把我们所有需要删除情况都涵盖完。所以我们现在就只需要建图了建图因为我们可以沿着 1->2->3->4 的路线走完所有的情况,那么就可以建分层图了:那么图与图之间怎么连边呢?我们就把一个点相邻的点,且染色颜色比它大 1 的点和它之间连一条边,边权为删去当前相邻点的代价。但是我们直接连边会出现问题:就
2021-12-10 18:58:28
287
空空如也
c++关于goto的玄学错误
2021-07-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人