摘要: 人生第一道树套树的题,看着bin巨的代码才学会,太累了,文字明天补 #include<bits/stdc++.h> using namespace std; const int maxn=60010; int n,q,m,tot; int a[maxn]; int t[maxn]; int T[ma 阅读全文
posted @ 2020-05-16 23:36 zlc0405 阅读(164) 评论(0) 推荐(0) 编辑
摘要: /* * K-periodic Garland * 题意: * 给定长度为n的01字符串,每次操作可以改变一个字符的状态,问使得字符串中相邻1的距离为k的最小操作次数 * 题解: * DP。 * pre[i]记录前i项中1的个数。 * dp[i][0]为使得前i项都合法,第i位为0时的最小操作次数。 阅读全文
posted @ 2020-05-16 16:05 zlc0405 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一串初始值全为0的序列,每次操作找到最长的连续为0的子区间,如果有并列则取靠左的那个,修改区间的中间值为对应操作的编号,询问最后的序列状态。 题解: 枚举最大子区间,一开始想到的是双指针法,结果TLE了,看了网上的题解才知道可以利用题目的性质用优先队列做,太神奇了。。。 #include 阅读全文
posted @ 2020-05-16 16:04 zlc0405 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题解: /* * hdu2069 * 题意:给出五种面值的银币,分别是1,5,10,25,50 * 对于给定数字x,求解有多少种银币组合的方法。 */ #include<cstdio> #include<iostream> #include<cstring> using namespace std; 阅读全文
posted @ 2020-05-16 13:50 zlc0405 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一些事件的开始时间和持续时间,你必须在开始时间前做这件事,做完才能做别的,每件事有固定的报酬,询问怎么安排报酬最大。 题解: 可以写出DP方程: 这里的mmax表示这个事件开始时间之前所能达到的最大报酬。 dp[ed]=max(dp[ed],mmax+Node[i].w); 然后从1到N 阅读全文
posted @ 2020-05-16 00:36 zlc0405 阅读(236) 评论(0) 推荐(0) 编辑