摘要: 传送门 解题思路 先说我的思路:枚举中间的那个人,然后在左边序列、右边序列分别做一次LIS,时间复杂度为n^3。 看题解后才发现有更优的做法,我们可以先预处理出正向和反向的LIS,然后枚举i统计答案即可,时间复杂度为n^2。 AC代码 1 #include<iostream> 2 #include< 阅读全文
posted @ 2020-10-16 23:33 尹昱钦 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 先按照l为第一关键字,w为第二关键字从大到小排序,保证前面的l一定比后面的大于等于,这样就能排除一维影响。 然后问题就变成了在排好序的序列中找最长不上升子序列的个数,根据狄尔沃斯定理(导弹拦截定理),我们得知最长不上升子序列的个数就等于最长上升子序列的长度。 所以这里O(n^2)求 阅读全文
posted @ 2020-10-16 23:17 尹昱钦 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 因为正序不好推,所以我们倒序: dp[i]表示从时间i到最终时刻n的最大休息时间,所以我们可以推出以下的状态转移方程: 若i时刻无任务,则dp[i]=dp[i+1]+1; 若i时刻有至少一个任务,则枚举这些任务k,dp[i]=dp[a[k]+b[k]];(a,b为题目中读入的每个任 阅读全文
posted @ 2020-10-16 22:46 尹昱钦 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 传送门 解题思路 很显然的LIS板子题,找一个最长不上升子序列和最长上升子序列即可。 关于LIS(O(n^2)和O(nlogn)) AC代码 1 #include<iostream> 2 #include<algorithm> 3 #include<cmath> 4 #include<cstdio> 阅读全文
posted @ 2020-10-16 00:02 尹昱钦 阅读(230) 评论(0) 推荐(0) 编辑