01 2020 档案

摘要:洛谷: P1963 [NOI2009]变换序列 P2516 [HAOI2010]最长公共子序列 当然如果有哪位大佬会并且愿意给蒟蒻讲一讲的我感激不尽。 (QQ:836512090) 阅读全文
posted @ 2020-01-31 23:47 尹昱钦 阅读(101) 评论(0) 推荐(1) 编辑
摘要:传送门 解题思路 我们可以先来到最终状态,第i,i位置都是黑色,然后考虑怎样可以转换过来,我们可以发现,当列与列交换时(a,b)(b,a)两个点可以通过a,b两列的交换得到正确的位置(a,a)(b,b),所以我们现在就是要确定是否每一行都对应着独特的一列。 这就很显然了——二分图。 行为A,列为B, 阅读全文
posted @ 2020-01-31 23:15 尹昱钦 阅读(128) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 其实这道题和上一道题很像[SCOI2010]连续攻击游戏 这道题就是题目和锦囊连边,然后题目从1开始往后枚举,注意也是如果一道答错就结束,输出答案。 然后注意n是锦囊,m是题目,别弄反了。 (ps:弄反了也能得90分!!) (数据真水!) AC代码 1 #include<iostr 阅读全文
posted @ 2020-01-31 19:24 尹昱钦 阅读(144) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 从所有攻击力向武器连边,形成二分图,然后枚举攻击力1...10000,如果匹配成功,就继续,否则输出程序结束。 注意: 对于枚举每一个攻击力如果用memset清空vis数组会超时(TLE四个点),所以我们在标记后退出前单个清空(见代码)。 AC代码 1 #include<iostr 阅读全文
posted @ 2020-01-31 18:45 尹昱钦 阅读(197) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 把人当做A类,把座位当做B类,然后二分图匹配,注意所有的数组从一维变成了a[][2],因为每一排有两个座位。 也可以分开求或者每一条边都分解成两条。 AC代码 1 #include<iostream> 2 #include<cstring> 3 using namespace st 阅读全文
posted @ 2020-01-29 22:22 尹昱钦 阅读(200) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 简化一下题面:在 n 个点 m 条正权边的有向图中,共有 n 个⼈要执⾏任务,第 i 个⼈的路线为 1 → i → 1,求最⼩总路程。 这就很显然了,在原图中跑一遍单源最短路,求出所有1->的最短路,然后建一个反图,再跑一遍最短路,求出i到1的最短路,最后把答案加起来。 看看数据范 阅读全文
posted @ 2020-01-20 23:33 尹昱钦 阅读(240) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 dp[i][j]表示以i为根的子树的最小花费。 其中j表示节点i依靠的是哪里放置保安。 j==0:依靠自己 j==1:依靠儿子 j==2:依靠父亲 因为叶子节点不能依靠儿子,所以把所有的叶子节点i的dp[i][1]赋值为最大值。 因为根节点不能依靠父亲,所以最后取答案时为min(d 阅读全文
posted @ 2020-01-20 23:11 尹昱钦 阅读(221) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 贪心策略:对于每一条边,先删除两个端点中权值大的那个点。 证明(感性): 首先,删点其实就等于删边。对于每一条边,假设它的两个端点为a,b且a的权值>b的权值,那么先删a点对答案的贡献为b,先删b点对答案的贡献为a,因为求的是最小值,所以先删权值大的点。 AC代码 1 #inclu 阅读全文
posted @ 2020-01-20 19:55 尹昱钦 阅读(147) 评论(0) 推荐(0) 编辑
摘要:传送门 题目翻译 解题思路 如果贡献为a[i],大家都会求,而现在变成了乘积的和,怎么求呢? 首先我们观察到n+m为奇数,所以我们可以想到右对角线(左上到右下)。 通过找规律,我们发现,当i+j为奇数时,我们走了偶数步,这时加上乘积(上一步的值*这一步的值); 当i+j为偶数时,我们走了奇数步,这时 阅读全文
posted @ 2020-01-19 20:46 尹昱钦 阅读(167) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 就是一道树形dp的模板。 偷得课件QAQ: 这个题用dp[i][0]表示i不去时以i为根的子树的最大快乐指数, dp[i][1]表示i去时以i为根的子树的最大快乐指数。 然后转移方程就很容易写出来了。见代码。 最后要注意输入的u,v是v是u的上司。 AC代码 1 #include< 阅读全文
posted @ 2020-01-17 20:51 尹昱钦 阅读(160) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 把所有的图读进去后,枚举每一个点,求出从这个点出发所能经过的最远距离,因为只能向低处走,所以其实是一张有向无环图,可以进行记忆话搜索。 AC代码 1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int 阅读全文
posted @ 2020-01-16 20:09 尹昱钦 阅读(135) 评论(0) 推荐(0) 编辑
摘要:传送门 匈牙利算法 匈牙利算法(别名“找对象游戏”),就是给你一个二分图,求最大匹配。 最大匹配就是做多能连多少条边。 我们把这个抽象的概念转化成现实问题——找对象。 男女两组,男生A组,女生B组,每一个男生都有自己喜欢的女生(可能不止一个),作为上帝的你,尽可能的让更多的人成为男女朋友。 怎么做呢 阅读全文
posted @ 2020-01-12 01:33 尹昱钦 阅读(355) 评论(1) 推荐(0) 编辑
摘要:2019.11.16~2019.11.17 ——第一届CSP(值得载入史册) //咕到了2020年才写的,可能有些地方不太准确,请原谅。 Day0 上午在学校上完文化课,下午就跟着一种的dalao们一同坐车去了日照外国语大学(就是夏令营举办的地点)。 当然是一车的游戏QAQ 又回到了熟悉的校园——熟 阅读全文
posted @ 2020-01-03 21:30 尹昱钦 阅读(299) 评论(1) 推荐(0) 编辑
摘要:传送门 解题思路 个人认为这根本不是模板,而这题更倾向于LCS在某种特殊情况下的一种优化时间的方法。 真正的模板:LCS模板 这道题就是在两个字符串都是1~n的全排列时可以把时间复杂度从n2优化到nlogn。 把s2中的每一个元素在s1中的位置用一个数组记录下来,然后对这个数组做一遍最长上升子序列( 阅读全文
posted @ 2020-01-02 23:46 尹昱钦 阅读(233) 评论(0) 推荐(1) 编辑
摘要:传送门 解题思路 很显然的最长公共子序列(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], 阅读全文
posted @ 2020-01-02 23:38 尹昱钦 阅读(204) 评论(0) 推荐(0) 编辑
摘要:传送门 解题思路 很显然,把这个字符串倒过来,再与原来的做一个lcs即可。 最后用长度-lcs长度就是答案。 AC代码 1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int n,dp[1005][1005]; 5 阅读全文
posted @ 2020-01-02 00:06 尹昱钦 阅读(177) 评论(0) 推荐(0) 编辑

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