Make Them Equal

题解:
首先得到 d[i]d[i]d[i],意思为从 111 到 iii 所需要花费的最小的步骤,这个可以使用 bfsbfsbfs 的思想来解决,或者直接两重循环结束。
其次就是解决一个 010101 背包问题,但是由于体积过大会爆?仔细分析,可以打出如上最大的 ddd 才发现只有 121212,那么体积其实是 min(12∗n,k)min(12 * n, k)min(12∗n,k),如此问题得到解决

要点:

  1. 如何在时限内得到 ddd 值,是单独去求值,还是怎么做
  2. 是否真的不能使用 010101 背包,考虑体积是否真的这么大

code:

#include <bits/stdc++.h>
using namespace std;
#define db double
#define ll long long
#define pii pair<int,int>
#define mm(a,b) memset(a,b,sizeof(a))
#define rush() int T; cin >> T; while (T--)
#define ACCELERATE (ios::sync_with_stdio(false),cin.tie(0))
const int N = 1e3 + 5;
const int M = (N << 2);
const int P = 1e9 + 7;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
int n, k, d[N], b[N], c[N];
void bfs()
{for (int i = 2; i < N; i++) d[i] = P;for (int i = 1; i < N; i++) {for (int j = 1; j <= i; j++) {int k = i + i / j;if (k < N) d[k] = min(d[k], d[i] + 1);}}
}
int main()
{ACCELERATE;bfs();int mx = 0;rush() {cin >> n >> k;for (int i = 1; i <= n; i++) cin >> b[i];for (int i = 1; i <= n; i++) cin >> c[i];k = min(k, 12 * n);vector<int> dp(k + 1, 0);for (int i = 1; i <= n; i++) {for (int j = k; j >= d[b[i]]; j--) dp[j] = max(dp[j], dp[j - d[b[i]]] + c[i]);}cout << dp[k] << endl;}return 0;
}

CF1633D Make Them Equal(bfs + 01背包)相关推荐

  1. 杭电1171(01背包求解)

    题目: Problem Description Nowadays, we all know that Computer College is the biggest department in HDU ...

  2. 【ZOJ - 3703】Happy Programming Contest(带优先级的01背包,贪心背包)

    题干: In Zhejiang University Programming Contest, a team is called "couple team" if it consi ...

  3. 【 FZU - 2214 】Knapsack problem(逆向0-1背包)

    题干: Given a set of n items, each with a weight w[i] and a value v[i], determine a way to choose the ...

  4. 【Codeforces 741 B. Arpa's weak amphitheater and Mehrdad's 】+ 并查集 + 01背包

    B. Arpa's weak amphitheater and Mehrdad's valuable Hoses time limit per test 1 second memory limit p ...

  5. hdu 2955 01背包

    http://acm.hdu.edu.cn/showproblem.php?pid=2955 如果认为:1-P是背包的容量,n是物品的个数,sum是所有物品的总价值,条件就是装入背包的物品的体积和不能 ...

  6. 计蒜客 7.22 K. Mario Kart(01背包+最短路)

    题意:在一个一维的坐标轴上,给定n个点的位置,还给定m种硬币,每个硬币都有一个C和V,C代表这种硬币的花费,V代表这种硬币可以传送的距离.题目还给定一个L,如果两个点之间的最小花费超过L那么两个点之间 ...

  7. Codeforces Round #383 (Div. 2) D. Arpa's weak amphitheater and Mehrdad's valuable Hoses —— DP(01背包)

    题目链接:http://codeforces.com/contest/742/problem/D D. Arpa's weak amphitheater and Mehrdad's valuable ...

  8. 01背包输出路径、完全背包、多重背包

    背包问题 一.01 Knapsack(输出路径- >选的物品) 二.完全背包 1.三重循环,极可能TLE,滚动数组优化后j逆向枚举 2.二重,优化消去变量k(没有特别厘清,但可以直接从完全背包角 ...

  9. 算法模板:动态规划之01背包【沈七】

    算法模板:动态规划之01背包 前言 动态规划 01背包 二维背包 一维优化 经典习题 小A点菜 5 倍经验日 买干草 完结散花 参考文献 前言 唤我沈七就好啦. 动态规划 核心作用:优化 当数据范围& ...

  10. 浅说——九讲背包之01背包

    所谓九讲,也就是: 0/1背包 0/1背包降维 完全背包 多重背包(二进制优化) 混合背包 二维费用背包 分组背包 有依赖的背包 背包的方案总数\背包的具体方案路径 0/1背包: [问题描述](经典) ...

最新文章

  1. linux里引号注意点
  2. React的生命周期
  3. android 外部存储列表,如何获取Android设备的已安装外部存储列表
  4. Nginx详解一(理论)
  5. [bzoj3531][Sdoi2014]旅行
  6. SecureCRT zmodem
  7. 一次对天翼安全网关的渗透
  8. Android Adb 连接海马玩模拟器
  9. Express框架、Webstorm中创建Express项目
  10. 水质环境监测系统解决方案
  11. ACM第四站————最小生成树(普里姆算法)
  12. html文本框的文字间距,word文本框中2行文字的间距为什么那么大
  13. 好玩游戏不上学去学计算机,如果你这样学习,不如去玩游戏!
  14. 信号与系统 傅里叶变换 拉普拉斯变换 z变换所有公式和性质 三个变换的联系 整理
  15. excel怎么按颜色统计单元格个数
  16. C语言每日一练(5月2号)——水仙花数
  17. 分部积分法解决二重积分问题
  18. FutureTask
  19. pandas的apply方法基础使用
  20. mysql导入excel表异常_mysql导入excel表格数据时出错的解决

热门文章

  1. 【Excel】设置数据有效性以及COUNTIF用法
  2. MATLAB滑动T检验
  3. mysql实战22 | MySQL有哪些“饮鸩止渴”提高性能的方法?
  4. 直播间人气怎么样提高
  5. asyncawait的前世今生
  6. 为了保护您的视力,请对电脑作如下设置
  7. 脾气暴躁的 Linus 不大可能开喷修改 master
  8. 方舟官方服务器怎么不显示伤害,方舟生存进化官服怎么显示伤害
  9. Java学习路线-20:正则表达式
  10. 设备屏幕亮度调节代码实现