随笔分类 -  NOI

摘要:传送门 解题思路 平衡树板子题。 每次所有的数加或减可以O(1)加或减限制,然后删除掉小于当前限制的点,统计答案。 加点时把原权值减去sum然后扔到Splay中,询问第k大时也要把查询的答案加上一个sum。 AC代码 #include<iostream> #include<cstdio> #incl 阅读全文
posted @ 2021-11-15 11:20 尹昱钦 阅读(39) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 考虑尺取法。 将所有区间按照长度从小到大排序,然后tow-pointers在保证区间最大值>=m的情况下不断维护区间+1/-1。 用线段树维护。 AC代码 #include<iostream> #include<cstdio> #include<cstring> #include< 阅读全文
posted @ 2021-10-18 19:23 尹昱钦 阅读(38) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 m:菜数 n:原料数 当 m=n-1 时:最小的跟最大的两两结合。 当 m>=n 时:最大的单独做,最后就变成了 m=n-1 的情况。 当 m=n-2 时:将每个物品减去k后做01可行性背包,可以使用 bitset 优化。 具体证明可以看这里:题解 P6775 【[NOI2020] 阅读全文
posted @ 2021-10-15 15:15 尹昱钦 阅读(42) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 被细节卡了一上午wwww 很好地一道题,考察了AC自动机的本质。 先考虑如何暴力做:枚举y中的每一位,并不断跳fail,若跳到了x,则ans++。 如何优化这个过程呢? 先离线根据y从小到大排序。 当我们以0为根节点,fail[now]向now连边时,AC自动机就变成了一颗树。这时 阅读全文
posted @ 2021-10-12 14:56 尹昱钦 阅读(44) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 哈夫曼树(Huffman Tree),就是一棵树满足叶子节点的权值*到根节点的距离的和最小的树。 一开始假设整个图没有任何连边。 然后贪心思想,每次新建一个节点,取k个权值最小的节点作为这个节点的儿子(相当于把节点合并)。 这样每次少k-1个节点,会导致最后一次合并不满k个节点。 阅读全文
posted @ 2021-10-08 20:07 尹昱钦 阅读(90) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 概括一下题意: 求所有点两两之间最短路的条数和经过k点的最短路的条数。 可以用Floyd边求边维护。 和Floyd本身一样不是很好感性理解,越深想越感觉可能落下或者多算。 要注意最短路条数f[i][i]不能初始化为1.否则当k==i松弛时会多算。 AC代码 #include<ios 阅读全文
posted @ 2021-09-27 19:08 尹昱钦 阅读(49) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 重要思想:求 ai2 相当于是取两遍球,取出来的序列相同的方案数。 于是设dp[i][j][l][r]表示第一次取上下分别取i/j个,第二次取上下分别取l/r个,两次取出相同序列的方案数。 转移就判断s1[i]/s2[j]和s1[l]/s2[r]之间的相等关 阅读全文
posted @ 2021-09-12 07:54 尹昱钦 阅读(40) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 对每一段时间进行操作,dp[i][j][k]表示在第k次操作结束时在位置(i,j)上的最大收益。 首先k这一维可以滚动数组优化掉。 然后对每个方向进行分类讨论,再对每一行/列加上一个单调队列优化即可。 注意碰到障碍就把队列清空,单调队列里的权值是dp值加(或者减)行数(或者列数)。 阅读全文
posted @ 2021-09-02 20:27 尹昱钦 阅读(40) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 很简单的一道并查集,但是我自己却没做出来,关键点没想到,害,还是太菜了…… 直接放重点: 先构建相等关系,然后判断不相等关系成不成立,所以分开操作。 离散化。 AC代码 #include<iostream> #include<algorithm> #include<cmath> # 阅读全文
posted @ 2021-08-01 01:07 尹昱钦 阅读(41) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 用dp[h][i][j]表示处理到第h行,这一行状态是i,上一行状态是j的最大数量。 枚举第几行、这一行的状态、上一行的状态、上上行的状态,判断转移即可。 注意要用滚动数组(只会用到上一行、上上行)。 AC代码 1 #include<iostream> 2 #include<alg 阅读全文
posted @ 2020-11-26 00:19 尹昱钦 阅读(87) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 区间dp:一般dp[i][j]表示区间i...j的答案,这个答案可以从某个或某些小区间转移而来。 大部分题的解法就是先枚举做外层循环len,表示区间长度,然后枚举区间左端点i,然后计算出右端点j,然后枚举i到j中的所有断点,根据dp[i][k],dp[k+1][j]计算出dp[i] 阅读全文
posted @ 2020-02-22 18:35 尹昱钦 阅读(185) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 加权并查集: 什么是加权并查集? 就是记录着每个节点到它的父亲的信息(权值等)。 难点:在路径压缩和合并节点时把本节点到父亲的权值转化为到根节点的权值 怎么转化呢? 每道题都不一样QAQ 看一看这道题我们用r[x]=0表示是x和f[x]是同种生物,等于1表示x吃f[x],等于2表示 阅读全文
posted @ 2019-10-31 23:34 尹昱钦 阅读(313) 评论(0) 推荐(0) 编辑
摘要:题目链接 https://www.luogu.org/problemnew/show/P1731 解题思路 既然看不出什么特殊的算法,显然是搜索。。。 dfs(u,v,s,r0,h0)分别表示: u为已经搜完的层数,v是现在的体积(不包括这一层),s是现在的表面积(所求的)(不包括这一层),r0是当 阅读全文
posted @ 2019-05-14 22:54 尹昱钦 阅读(621) 评论(0) 推荐(0) 编辑

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