摘要:
# 二进制拆分 做法:把每一个物品根据2的多少次方拆分,因为任何数都可以转化为二进制数 核心思想:把每一个物品拆成很多个,分别计算价值和所需时间,再转化为01背包求解 最后一点:完全背包可以把他的空间记为999999,不要太大,一般百万就足够了 还有一点:cin和scanf**不可以混用** # 代 阅读全文
# 二进制拆分 做法:把每一个物品根据2的多少次方拆分,因为任何数都可以转化为二进制数 核心思想:把每一个物品拆成很多个,分别计算价值和所需时间,再转化为01背包求解 最后一点:完全背包可以把他的空间记为999999,不要太大,一般百万就足够了 还有一点:cin和scanf**不可以混用** # 代 阅读全文
posted @ 2023-07-22 19:28
扶桃o
阅读(38)
评论(0)
推荐(0)
摘要:
## 思路 分组背包模版题,不多说。 # 代码 ```cpp #include #define ll long long #define ld long double using namespace std; inline void read(int &x) { x=0; short flag=1; 阅读全文
posted @ 2023-07-22 19:18
扶桃o
阅读(18)
评论(0)
推荐(0)
摘要:
## 思路 先枚举出 $n$以内的4次方数 然后dp. # 代码 ```cpp #include #define ll long long #define ld long double #define min(x,y) (x'9') { if(c=='-')flag=-1; c=getchar(); 阅读全文
posted @ 2023-07-22 19:16
扶桃o
阅读(62)
评论(0)
推荐(0)
摘要:
## 思路 这道题和 [NOIP2005 普及组] 采药的思路差不多 不同的是,这道题是完全背包,采药则是01背包。 转移方程为:```dp[j]=max(dp[j],dp[j-w[i]]+v[i]);//滚动数组优化``` # 代码 ```cpp #include #define ll long 阅读全文
posted @ 2023-07-22 19:11
扶桃o
阅读(34)
评论(0)
推荐(0)
摘要:
## 思路 01背包模版题 转移方程为:```dp[j]=max(dp[j],dp[j-ti]+wi);//滚动数组优化``` # 代码 ```cpp #include #define ll long long #define ld long double using namespace std; 阅读全文
posted @ 2023-07-22 14:00
扶桃o
阅读(23)
评论(0)
推荐(0)
摘要:
## 思路 ### 01背包模版题,唯一不同的是加了一个条件就是价格与重要度的乘积。 转移方程为:```dp[j]=max(dp[j],dp[j-w[i]]+w[i]*v[i]);``` 这里加了滚动数组优化。 ## 代码 ```cpp #include #define ll long long # 阅读全文
posted @ 2023-07-22 13:55
扶桃o
阅读(64)
评论(0)
推荐(0)

浙公网安备 33010602011771号