合集-二进制dp
摘要:原题链接 这真的是橙题吗 题解 读题,每个材料都有用或不用两种选择,然后n的数据范围也很小,所以考虑二进制dp (别管我为什么不叫状态压缩) 遍历 0 到 (十进制下),如果存在互相矛盾的1,代表这个状态不能用 code #include<bits/stdc++.h> usi
阅读全文
摘要:原题链接 题解 二进制表示每包糖果包含的味道,因为有一种拼接的感觉,然后背包dp,注意这里每个材料不止只能取一个 code #include<bits/stdc++.h> using namespace std; int dp[1<<22]={0},candy[105]={0}; const int
阅读全文
摘要:原题链接 题解 请看代码upperbound是为了找出最大的小于等于 code #include<bits/stdc++.h> using namespace std; int a[20]={0},sum[100005]={0},dp[1<<22]={0};//dp代表当前状态能买多少件商品,sum
阅读全文
摘要:原题链接 题解 关键因素: 与 至少有一位都是一 这是我第一份代码 #include<bits/stdc++.h> using namespace std; int a[100005],dp[100005]={0}; int main() { int n; ci
阅读全文
摘要:原题链接 题解 任何数一定可以被二进制表示下最低位的一及以下的二次方数整除 code #include<bits/stdc++.h> #define ll long long #define lowbit(x) ((x)&(-x)) using namespace std; void solve()
阅读全文
摘要:原题链接 题解 看到数据范围,想到二进制表示所有已经上去的人的集合的最小乘坐次数,做法为遍历所有子集再遍历所有子集 时间复杂度 太高了 考虑优化,对于同一个集合、同样最小乘坐次数,总有电梯有空位,而空位越大的乘坐配置越优 依照
阅读全文