摘要:
P1802 (日常切水题......) 打人游戏,打不赢获得lose[i],打赢获得win[i],显然win[]>lose[],首先我们肯定可以获得所有的lose,那么打赢每个人就相当于可以获得win-lose,代价为use[i],那么这道题就是一个01背包问题了。 (放张可莉压压惊......) 阅读全文
posted @ 2022-10-10 15:09
YHXo
阅读(40)
评论(0)
推荐(0)
摘要:
P4017 A被B吃,则由A向B连一条有向边,最终得到一个有向图。起点为入度为0的点,终点为出度为0的点,相当于算从起点到终点有多少条不同的路径。 我们设dp[i]表示从起点到i点的路径条数,最终的答案就是所有出度为0的点的dp值相加。dp过程用拓扑排序处理即可。 1 #include <bits/ 阅读全文
posted @ 2022-10-10 14:37
YHXo
阅读(50)
评论(0)
推荐(0)
摘要:
P2572 又是一道颠覆我对线段树认知的题...... 线段树每个节点维护八个信息:0/1个数,从左/右起0/1的个数,最长连续的0/1个数。 我们用线段树维护信息是需要区间合并的,因此为保证能够合并,我们才维护以上的八个信息。 打上两个标记:tg1={-1, 0, 1},-1表示没有,0表示将区间 阅读全文
posted @ 2022-10-10 11:34
YHXo
阅读(49)
评论(0)
推荐(0)
摘要:
P2196 将题目的信息转化为图,相当于我们要在图上找一条最长路径,考虑dfs,dp[i]表示以i结尾的最长路径。则有dp[i] = max(dp[j]) + a[i]) j->i。 题目又要求输出路径,所以用pre[i]记录前驱,最后输出即可。 1 #include <bits/stdc++.h> 阅读全文
posted @ 2022-10-10 10:58
YHXo
阅读(225)
评论(0)
推荐(0)
摘要:
01背包裸题。 不用数组记录每个物品的重量和价值,分别用两个变量记录即可。 1 #include <bits/stdc++.h> 2 using namespace std; 3 int t, m, x, y; 4 int f[1005]; 5 int main() { 6 scanf("%d %d 阅读全文
posted @ 2022-10-10 09:14
YHXo
阅读(182)
评论(0)
推荐(0)

浙公网安备 33010602011771号