随笔分类 -  省选

摘要:传送门 解题思路 单点修改区间查询最大值。 lazy标记都不需要。 总范围为读入的m的范围。 注意有负值。 AC代码 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #in 阅读全文
posted @ 2021-09-15 10:29 尹昱钦 阅读(44) 评论(0) 推荐(0)
摘要:传送门 解题思路 设dp[i][j]表示用前i个数,第一段山脉的高度为j,且j为山峰的方案数。 首先发现,dp[i][j]=dp[i][i-j+1],相当于把每个数取了个相反数,原来的山峰变山谷,山谷变山峰,方案数不变。 然后状态转移: j和j-1不相邻时:dp[i][j]=dp[i][j-1] 因 阅读全文
posted @ 2021-09-11 11:43 尹昱钦 阅读(57) 评论(0) 推荐(0)
摘要:传送门 解题思路 设dp[i][j][k]为到前i行,有j列放了1个炮,k列放了两个炮的方案数。 显然讨论各种情况,从i-1进行转移即可。 可以滚动数组,但没必要。 一个不放:方案数等于dp[i-1][j][k]。 放一个,放在原来一个没有的列上:方案数等于dp[i-1][j-1][k]*(m-(j 阅读全文
posted @ 2021-09-10 20:56 尹昱钦 阅读(53) 评论(0) 推荐(0)
摘要:传送门 解题思路 题意很简单,就是一个有特殊条件的01背包: 物品的体积很大,并且可以写成 \(a\times 2^b\) 的形式。 肯定是从这种特殊限制入手考虑,而且很容易想到按照二进制位分开做。 我们设 \(f[i][j]\) 表示对体积表示为 \(a\times 2^i\) 的物品进行01背包 阅读全文
posted @ 2021-09-05 08:10 尹昱钦 阅读(63) 评论(0) 推荐(0)
摘要:传送门 解题思路 设dp[i][j]为前i天第i天结束时有j张股票的最大收益, 首先令dp[i][j]=dp[i-1][j]。 买入转移方程: \(dp[i][j]=max(dp[i][j],dp[i-w-1][k]-(j-k)*ap)\quad\quad k=[j-as,j]\) 卖出转移方程: 阅读全文
posted @ 2021-08-28 21:29 尹昱钦 阅读(51) 评论(0) 推荐(0)
摘要:洛谷传送门 解题思路 考虑异或性质,发现对于每一二进制位单独来看,两个数相加和异或结果一样,而要想最终结果相等,则要保证加法每一位都不进位。 所以这道题就转化为要求每个二进制位只有一个1。 AC代码 #include<iostream> #include<algorithm> #include<cm 阅读全文
posted @ 2021-08-08 10:14 尹昱钦 阅读(34) 评论(0) 推荐(0)
摘要:传送门 解题思路 简化一下问题,即为给你一个数组a,对于所有的i,将a[i]到fa[a[i+1]]路径上的点加一。 注意端点处理(可以理解为拐弯处只记一次)。 AC代码 #include<iostream> #include<cstring> #include<cstdio> #include<al 阅读全文
posted @ 2021-07-31 23:33 尹昱钦 阅读(37) 评论(0) 推荐(0)
摘要:传送门 解题思路 首先很显然的贪心是 在每个地方放置的士兵一定是某个敌人放置士兵的两倍加一。 这样每个地方就有s种放置方法,每种对应一个数量和一个权值,于是就成了很典型的分组背包。 AC代码 #include<iostream> #include<cstring> #include<algorith 阅读全文
posted @ 2021-07-26 14:09 尹昱钦 阅读(65) 评论(0) 推荐(0)
摘要:##传送门 大难不死,必有后福 自从在空间里大骂后 十分钟过了两道调了两天的题…… ##解题思路 非常经典的一个对序列进行模拟退火的题。 求方差时直接用公式就行(平均数一开始可以预处理出来) 求分组后最小的方差需要用到dp。 dp[i][j]表示前i个数分j组的方差。 直接枚举k转移即可。 ##注意 阅读全文
posted @ 2021-07-18 18:21 尹昱钦 阅读(80) 评论(0) 推荐(0)
摘要:##传送门 ##解题思路 先用Floyd求一遍最短路, 然后对m个点之外的序列模拟退火,取前k个设置城堡,O(N^2)求出当前对小距离,判断并更新ans。 没什么注意的但是我rand()写在while外面了所以调了一个小时把我心态搞崩了草 ##AC代码 #include<cstdio> #inclu 阅读全文
posted @ 2021-07-18 17:44 尹昱钦 阅读(90) 评论(0) 推荐(0)
摘要:##传送门 ##解题思路 仔细阅读题目,发现按照顺序插入每一个节点,且按照二叉搜索树的规则。 于是满足这两个条件其实就是笛卡尔树。 但是注意这里的x是读入的数,y是读入的数的下标。 构建完笛卡尔树后,其先序遍历的x值就是最终的ans。 (按照样例画个图就很显然了) ##AC代码 #include<i 阅读全文
posted @ 2021-07-11 22:52 尹昱钦 阅读(123) 评论(0) 推荐(0)
摘要:##传送门 ##解题思路 其实这个题部分分还是很好想的,但是考场上硬是没拿满………… 直接说正解: 假如没有对元素大小的限制,很显然可以直接设定第n行和第m列的数字为0,一定能构造出一组解。 然后考虑限制。 我们发现,对某一行或者某一列的元素进行$+1 \ -1\ +1 \ -1 \ +1\ -1\ 阅读全文
posted @ 2021-05-19 23:42 尹昱钦 阅读(86) 评论(0) 推荐(0)
摘要:传送门 解题思路 普通的trie貌似会MLE 但是我们可以偷偷数组少开个零,就A了 想知道为什么? 别问,问就是数据水。 其实正解map bitset等等…… 看来以后要学学bitset…… AC代码 1 #include<cstdio> 2 #include<iostream> 3 #includ 阅读全文
posted @ 2021-01-10 16:02 尹昱钦 阅读(124) 评论(0) 推荐(0)
摘要:传送门 解题思路 用dp[i][j][k]表示到了第i行,第i行状态为j,一共放了k个国王的方案数。 枚举行、本层状态、上层状态、国王数,进行转移。 其中用一个函数求出一个数的二进制有几个一(即这一行放了几个国王)。 初始化时要单独第一行。 注意没开longlong只有70pts。 AC代码 1 # 阅读全文
posted @ 2020-11-25 00:19 尹昱钦 阅读(75) 评论(0) 推荐(0)
摘要:传送门 解题思路 反悔贪心。按照结束时间排序,然后枚举结束时间,能修就修,不能修就比较以前修过的耗时最长的建筑和当前这个建筑比较是否更优。 注意这里用大根堆。 AC代码 1 #include<iostream> 2 #include<cmath> 3 #include<cstring> 4 #inc 阅读全文
posted @ 2020-11-04 20:49 尹昱钦 阅读(156) 评论(0) 推荐(0)
摘要:传送门 解题思路 用dp[i][0]表示第i个节点染绿色的以i为根的子树的最大(最小)染绿色总数,dp[i][1]表示染红色,dp[i][2]表示染蓝色。 各种情况转移即可。 写完代码后发现,dp[i][1]和dp[i][2]相等,所以其实可以合并起来,这样能少许多代码量。 AC代码 1 #incl 阅读全文
posted @ 2020-10-23 23:54 尹昱钦 阅读(147) 评论(0) 推荐(0)
摘要:传送门 解题思路 题目很长,实际上就是给你一棵树,然后给你三个点,让你找到一个点,是这个点到三个点的距离和最短。 很显然的是,这个点在这三个点简单路径的上,而这三条简单路径一定有且只有一个交汇点,这个交汇点就是答案。 这就是为什么一定有一个交点,而且这个交点是其中两个点的LCA,且这个LCA是深度最 阅读全文
posted @ 2020-09-21 23:54 尹昱钦 阅读(170) 评论(0) 推荐(0)
摘要:传送门 解题思路 关于两点之间的最短距离的区间操作,很显然是树链剖分。 因为既有区间和还有区间最大值,所以我们建立两个线段树。 然后就是树剖的常规操作了。 AC代码 1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 #inc 阅读全文
posted @ 2020-07-12 00:28 尹昱钦 阅读(185) 评论(0) 推荐(0)
摘要:传送门 解题思路 唔,我才不要上网课呢 很显然对于每个节点i,必须保证叶子节点到这个点的传送距离相等,才能保证最终答案都是相等,而最少的增加次数一定就是使距离全部变成其中最大的距离。 好吧,解释的不清楚。 如果没听懂,重新用贪心来解释一下。 先想一下最终距离。设最终距离为d。 最终的距离一定就等于叶 阅读全文
posted @ 2020-03-08 10:42 尹昱钦 阅读(220) 评论(0) 推荐(0)
摘要:传送门 解题思路 观察队形的组成方式可以得出,最后一名加入区间i...j的人要么是在i位置上,要么是在j位置上,所以我们可以用dp[i][j][0]表示区间i...j最后一个加入的人站在i位置上的方案总数,同理,用dp[i][j][1]表示区间i...j最后一个加入的人站在j位置上的方案总数。 然后 阅读全文
posted @ 2020-02-27 23:13 尹昱钦 阅读(138) 评论(0) 推荐(1)