摘要:
原题链接 题解 请看代码upperbound是为了找出最大的小于等于 code #include<bits/stdc++.h> using namespace std; int a[20]={0},sum[100005]={0},dp[1<<22]={0};//dp代表当前状态能买多少件商品,sum 阅读全文
posted @ 2024-04-05 23:18
纯粹的
阅读(10)
评论(0)
推荐(0)
摘要:
原题链接 题解 二进制dp etc: 令 \(dp[00110]\) 代表前两个任务选23两个人出战的最大成功率 则 \(dp[00110]=max(dp[00010]+a[3][2],dp[00100]+a[2][3])\) code #include<bits/stdc++.h> using n 阅读全文
posted @ 2024-04-05 15:25
纯粹的
阅读(11)
评论(0)
推荐(0)
摘要:
原题链接 题解 模拟,遍历n个物品,一开始一个箱子不给,遍历到某个物品时,先把所有已经给了的箱子放进去试试,再创一个新箱子放进去试试 code #include<bits/stdc++.h> using namespace std; int n,w; int cnt,ans; int chongdi 阅读全文
posted @ 2024-04-05 14:49
纯粹的
阅读(22)
评论(0)
推荐(0)
摘要:
原题链接 题解 二进制表示每包糖果包含的味道,因为有一种拼接的感觉,然后背包dp,注意这里每个材料不止只能取一个 code #include<bits/stdc++.h> using namespace std; int dp[1<<22]={0},candy[105]={0}; const int 阅读全文
posted @ 2024-04-05 14:13
纯粹的
阅读(61)
评论(0)
推荐(0)
摘要:
原题链接 这真的是橙题吗 题解 读题,每个材料都有用或不用两种选择,然后n的数据范围也很小,所以考虑二进制dp (别管我为什么不叫状态压缩) 遍历 0 到 \(2^{20}-1\)(十进制下),如果存在互相矛盾的1,代表这个状态不能用 code #include<bits/stdc++.h> usi 阅读全文
posted @ 2024-04-05 13:29
纯粹的
阅读(59)
评论(0)
推荐(0)
摘要:
原题链接 题解 1.一眼数位dp, 康托是谁?不认识,在每一位确保小于的时候可以任意取 2.阶乘一开始就要放好 3.在遍历到后面几位的时候,可能前面几位用过了比x小的树,所以我们要知道小于x且没被用过的个数,这就是区间查询加单点修改,树状数组比较方便 4.树状数组的空间复杂度比较小,每个点就对应且只 阅读全文
posted @ 2024-04-05 00:48
纯粹的
阅读(16)
评论(0)
推荐(0)
摘要:
原题链接 题解 1.搜索路径不等于欧拉路径,优先搜索字典序小的点,是为了找出终点,一个终点找到后,找下一个终点,所以不能边找边输出,要把遍历完的再放到栈里 code #include<bits/stdc++.h> using namespace std; int vis[100005]={0}; v 阅读全文
posted @ 2024-04-05 00:20
纯粹的
阅读(45)
评论(0)
推荐(0)

浙公网安备 33010602011771号