S o l u t i o n \mathcal{Solution} Solution

设当前砍到了第 2 2 2 个怪物,
代价 为 ( a i + d ) ( b i + d ) = a i b i + a i d + d b i + d 2 = a i b i + d ( a i + b i ) + d 2 (a_i+d)(b_i+d)=a_i b_i + a_i d + db_i+d^2=a_ib_i+d(a_i+b_i)+d^2 (ai​+d)(bi​+d)=ai​bi​+ai​d+dbi​+d2=ai​bi​+d(ai​+bi​)+d2
发现只有 d ( a i + b i ) d(a_i+b_i) d(ai​+bi​) 是会变的量, 基于 贪心 思路, 使 ( a i + b i ) (a_i+b_i) (ai​+bi​) 在 d d d 比较大时尽量小 .

于是按照 a i + b i a_i+b_i ai​+bi​ 从大到小排序 ( 第 一 步 ) \ \ \ \ \ \ \ (第一步)        (第一步)

光排序还不够, 还需要进行简单的 d p dp dp,
设 d p [ i , j ] 表 示 前 i 个 砍 j 个 所 需 要 的 最 小 代 价 dp[i, j] 表示前 i个砍j个所需要的最小代价 dp[i,j]表示前i个砍j个所需要的最小代价
d p [ i , j ] = d p [ i − 1 , j − 1 ] + [ a i + ( i − 1 ) d ] ∗ [ b i + ( i − 1 ) d ] dp[i,j]=dp[i-1, j-1]+[a_i+(i-1)d]*[b_i+(i-1)d] dp[i,j]=dp[i−1,j−1]+[ai​+(i−1)d]∗[bi​+(i−1)d]
得到 d p [ N , 1... N ] dp[N, 1...N] dp[N,1...N] 后 二分查找 即可


C o d e \mathcal{Code} Code

#include<bits/stdc++.h>
#define reg registertypedef long long ll;int read(){char c;int s = 0, flag = 1;while((c=getchar()) && !isdigit(c))if(c == '-'){ flag = -1, c = getchar(); break ; }while(isdigit(c)) s = s*10 + c-'0', c = getchar();return s * flag;
}ll read_l(){char c;ll s = 0, flag = 1;while((c=getchar()) && !isdigit(c))if(c == '-'){ flag = -1, c = getchar(); break ; }while(isdigit(c)) s = s*10 + c-'0', c = getchar();return s * flag;
}const int maxn = 3005;int N;
int M;
int D;ll dp[maxn][maxn];struct Node{ int a, b; } A[maxn];bool cmp(Node x, Node y){ return x.a+x.b > y.a+y.b; }int main(){freopen("hunter.in", "r", stdin);freopen("hunter.out", "w", stdout);N = read();M = read();D = read();for(reg int i = 1; i <= N; i ++) A[i].a = read();for(reg int i = 1; i <= N; i ++) A[i].b = read();std::sort(A+1, A+N+1, cmp);memset(dp, 0x3f, sizeof dp);for(reg int i = 0; i <= N; i ++) dp[i][0] = 0;for(reg int i = 1; i <= N; i ++)for(reg int j = 1; j <= i; j ++)dp[i][j] = std::min(dp[i-1][j], dp[i-1][j-1] + 1ll*(A[i].a+1ll*D*(j-1))*(A[i].b+1ll*D*(j-1)));for(reg int i = 1; i <= M; i ++)printf("%d ", std::lower_bound(dp[N]+1, dp[N]+N+1, read_l())-dp[N]-1);return 0;
}

怪物猎人[贪心+dp]相关推荐

  1. URAL 1203 Scientific Conference(贪心 || DP)

    Scientific Conference 之前一直在刷计算几何,邀请赛连计算几何的毛都买见着,暑假这一段时间就做多校,补多校的题目,刷一下一直薄弱的DP.多校如果有计算几何一定要干掉-.- 题意:给 ...

  2. Codeforces Round #699 (Div. 2) E.Sorting Books(贪心+DP / 线段树)超高质量题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 E - Sorting Books 一排书架上有 nnn 本书排成一排,每本书上有一个颜色 aia_i ...

  3. 【bzoj3174】[Tjoi2013]拯救小矮人 贪心+dp

    题目描述 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀上,知道最顶端的小矮人伸直胳膊可以碰到陷阱口.对于每一个小矮人,我们知道他从脚 ...

  4. HDU 4001 To Miss Our Children Time(2011年大连网络赛 A 贪心+dp)

    开始还觉得是贪心呢...  给你三类积木叫你叠楼房,给你的每个积木包括四个值:长 宽(可以互换) 高 类型d  d=0:你只能把它放在地上或者放在 长 宽 小于等于 自己的积木上面  d=1:你只能把 ...

  5. 【BZOJ4069】【APIO2015】巴厘岛的雕塑 [贪心][DP]

    巴厘岛的雕塑 Time Limit: 10 Sec  Memory Limit: 64 MB [Submit][Status][Discuss] Description 印尼巴厘岛的公路上有许多的雕塑 ...

  6. 杭电oj1257最少拦截系统—贪心/dp最大递增子序列

    附上题目链接:杭电oj1257 这个题目有动态规划和贪心两种解决方式. 贪心法1: 对于导弹我们知道只可以从大到小的反导,一个系统必须从大到小排列.那么我们就可以选择从最高的那个导弹入手,往右找仅次于 ...

  7. CF1155D Beautiful Array 贪心,dp

    CF115DBeautiful Array 题目大意:给一个有n个元素的a数组,可以选择其中一个区间的所有数都乘上x,也可以不选,求最大子序列和. 如果没有前面的操作,就是只求最大子序列和,我们都知道 ...

  8. CodeForces - 1481E Sorting Books(贪心+dp)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,每次操作可以将任意一本书放到序列的末尾,问最少需要操作多少次,才能使得相同的数字挨在一起 题目分析:不难看出,对每个位置的数都操作一次,是 ...

  9. 2020ICPC(小米邀请赛2) - Knapsack(贪心+dp)

    题目链接:点击查看 题目大意:给出 n 个物品,每个物品都有体积和价值,现在问容量为 m 的背包最多可以装下多少价值的物品 题目分析:本题正解应该是斜率优化dp,然鹅看了大佬们的博客讲解后,感觉不是自 ...

最新文章

  1. FJUT OJ 2466 T^T的叛乱计划(组合数学)
  2. 程序的加载和执行(五)——《x86汇编语言:从实模式到保护模式》读书笔记25
  3. LeetCode 239. Sliding Window Maximum
  4. Python入门基础之迭代和列表生成式
  5. Git和GitHub快速入门
  6. Java 线程详解(一)线程的基础
  7. 打开Android Studio报错“Error running ***: Please select Android SDK”
  8. vSphere 5.5 使用Web Client打开控制台窗口显示连接超时
  9. 在html css中加粗显示,css字体怎么加粗?
  10. 第11章 UART串口通信 练习题
  11. App接入微信登录 步骤
  12. 蓝桥杯摔手机测试次数
  13. [cv]郑哲东 Deep-ReID——Learn pedestrian representations from
  14. android闪光灯测心率,手指放在手机摄像头和闪光灯前检测心率的应用是什么原理?...
  15. [C#] C#深入浅出4th Edition [2]
  16. 无法启动此程序,因为计算机中丢失vcruntime140.dll”的解决方法
  17. 对当下很火的两大短视频平台 抖音 和 微视进行竞品分析
  18. nodejs+vue旅游网站设计
  19. 大量的if!=null_获得大量精彩游戏,并支持伟大事业!
  20. ecshop文件结构

热门文章

  1. 智能智推名片,给你不一样的营销体验!
  2. vue框架是ui框架么_Vue是2020年一个了不起的框架,为什么
  3. 查询数据库中存在的回车换行符
  4. 用 pyfolio 进行量化交易回测
  5. 代理加盟共享充电宝的理由
  6. 组态中怎么使用mysql数据库_组态王中PLC数据连接MySQL数据库教程
  7. Hi nova9系列手机发布:5000万像素超感光四摄影像新品2999元起
  8. No.046<软考>《(高项)备考大全》【专项2】《案例分析 - 计算题(中)》
  9. 【工业智能】传统工业如何实现工业智能?工业发展的痛点体现在哪里?
  10. 非对称加密BTC算法面试题