随笔分类 - 省选
摘要:传送门 解题思路 dp[i][j]表示把区间[i...j]涂成目标颜色的最少步骤。 当s[i]==s[j]时,我们可以发现,在涂第i个格子时,我们可以多涂上一格,将第j格涂上;同理,可以在涂第j个格子时,多图一个格子,把第i格涂上。所以就可以从dp[i+1][j]和dp[i][j-1]转移而来。 对
阅读全文
摘要:传送门 解题思路 我们可以先来到最终状态,第i,i位置都是黑色,然后考虑怎样可以转换过来,我们可以发现,当列与列交换时(a,b)(b,a)两个点可以通过a,b两列的交换得到正确的位置(a,a)(b,b),所以我们现在就是要确定是否每一行都对应着独特的一列。 这就很显然了——二分图。 行为A,列为B,
阅读全文
摘要:传送门 解题思路 其实这道题和上一道题很像[SCOI2010]连续攻击游戏 这道题就是题目和锦囊连边,然后题目从1开始往后枚举,注意也是如果一道答错就结束,输出答案。 然后注意n是锦囊,m是题目,别弄反了。 (ps:弄反了也能得90分!!) (数据真水!) AC代码 1 #include<iostr
阅读全文
摘要:传送门 解题思路 从所有攻击力向武器连边,形成二分图,然后枚举攻击力1...10000,如果匹配成功,就继续,否则输出程序结束。 注意: 对于枚举每一个攻击力如果用memset清空vis数组会超时(TLE四个点),所以我们在标记后退出前单个清空(见代码)。 AC代码 1 #include<iostr
阅读全文
摘要:传送门 解题思路 dp[i][j]表示以i为根的子树的最小花费。 其中j表示节点i依靠的是哪里放置保安。 j==0:依靠自己 j==1:依靠儿子 j==2:依靠父亲 因为叶子节点不能依靠儿子,所以把所有的叶子节点i的dp[i][1]赋值为最大值。 因为根节点不能依靠父亲,所以最后取答案时为min(d
阅读全文
摘要:传送门 解题思路 把所有的图读进去后,枚举每一个点,求出从这个点出发所能经过的最远距离,因为只能向低处走,所以其实是一张有向无环图,可以进行记忆话搜索。 AC代码 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int
阅读全文
摘要:传送门 解题思路 很显然的最长公共子序列(LCS)的板子。 定义:用dp[i][j]表示S1前i位和S2前j位的最长公共子序列。 状态转移: 当s1[i]==s2[j]时,dp[i][j]=dp[i-1][j-1]+1; 当s1[i]!=s2[j]时,dp[i][j]=max(dp[i-1][j],
阅读全文
摘要:传送门 解题思路 首先是暴力做法: 从1开始枚举时间,每一次加一,判断有没有新的任务到达,然后挑出优先队列中的优先值最大的,执行一秒钟,在放回队列中。 显然是TLE的! 接着想一下优化: 找一找那里可以优化,发现只有时间!所以我们每一次取出队首(任务a)有两种情况——第一种是现在的时间+a的剩余完成
阅读全文
摘要:传送门 解题思路 不会错排问题的请移步——错排问题 && 洛谷 P1595 信封问题 这一道题其实就是求对于每一行的每一个棋子都放在没有障碍的地方的方案数。 因为障碍是每行、每列只有一个,所以答案不受障碍的影响。 这里障碍就等于是信封,棋子就等于是信,也是求所有的信都放错信封的方案数。 显然是错排问
阅读全文
摘要:传送门 解题思路 因为是求区间的不同种类数,所以我们用树状数组(貌似并没有什么直接联系) (...表示到) 还是和原来一样,用s[i]来表示a[i-lowbit(i)]...a[i]的种类数。 因为有一个类似于去重的操作,所以就有一个数组记录一下is[i]表示编号为i的贝壳上一次出现的地方,每一次更
阅读全文
摘要:题目链接 https://www.luogu.org/problemnew/show/P2330 题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条道
阅读全文

浙公网安备 33010602011771号