一开始看到题目感觉很难

然后看到题解感觉这题贼简单,我好像想复杂了

就算出每一行最少的资源(完全背包+二分)然后就枚举就好了。

#include<cstdio>
#include<algorithm>
#include<cstring>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std; const int MAXN = 212345;
const int MAXM = 112;
int n, m, k;
int w[MAXM], p[MAXM], q[MAXN];
int f[MAXN], list[MAXN]; int main()
{
scanf("%d%d%d", &m, &n, &k);
REP(i, 0, m) scanf("%d", &w[i]);
REP(i, 0, m) scanf("%d", &p[i]);
REP(i, 0, n) scanf("%d", &q[i]); REP(i, 0, m)
REP(j, w[i], k + 1)
f[j] = max(f[j], f[j-w[i]]+p[i]); int head = 0, sum = 0, ans = 0;
REP(i, 0, n)
{
int t = lower_bound(f, f + k + 1, q[i]) - f;//不是二分答案都用stl二分,简单又不会错
sum += t; list[i] = t;
while(sum > k) sum -= list[head++]; //注意这里是while
ans = max(ans, i - head + 1);
}
printf("%d\n", ans); return 0;
}

caioj 1086 动态规划入门(非常规DP10:进攻策略)的更多相关文章

  1. caioj 1080 动态规划入门(非常规DP4:乘电梯)(dp数组更新其他量)

    我一开始是这么想的 注意这道题数组下标是从大到小推,不是一般的从小到大推 f[i]表示从最高层h到第i层所花的最短时间,答案为f[1] 那么显然 f[i] = f[j] + wait(j) + (j ...

  2. caioj 1087 动态规划入门(非常规DP11:潜水员)(二维背包)

    这道题的难点在于价值可以多. 这道题我一开始用的是前面的状态推现在的状态 实现比较麻烦,因为价值可以多,所以就设最大价值 为题目给的最大价值乘以10 #include<cstdio> #i ...

  3. 洛谷P1280 && caioj 1085 动态规划入门(非常规DP9:尼克的任务)

    这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...

  4. caioj 1084 动态规划入门(非常规DP8:任务安排)(取消后效性)

    这道题的难点在于,前面分组的时间会影响到后面的结果 也就是有后效性,这样是不能用dp的 所以我们要想办法取消后效性 那么,我们就可以把影响加上去,也就是当前这一组加上了s 那么就把s对后面的影响全部加 ...

  5. caioj 1083 动态规划入门(非常规DP7:零件分组)(LIS)

    这道题题目给的顺序不是固定的 所以一开始要自己排序,按照w来排序 后来只要看l就可以了 然后求最长下降子序列即可(根据那个神奇的定理,LIS模板里有提到) #include<cstdio> ...

  6. caioj 1082 动态规划入门(非常规DP6:火车票)

    f[i]表示从起点到第i个车站的最小费用 f[i] = min(f[j] + dist(i, j)), j < i 动规中设置起点为0,其他为正无穷 (貌似不用开long long也可以) #i ...

  7. caioj 1081 动态规划入门(非常规DP5:观光游览)

    这道题和前面的分组的题有点像 就是枚举最后一组的长度. 然后组数可以在第一层循环也可以在第二层循环 我自己的话就统一一下在第一层循环吧 然后这道题题意我一直没理解清楚,浪费了很多时间,写复杂了 同时初 ...

  8. caioj 1079 动态规划入门(非常规DP3:钓鱼)(动规中的坑)

    这道题写了我好久, 交上去90分,就是死活AC不了 后来发现我写的程序有根本性的错误,90分只是数据弱 #include<cstdio> #include<algorithm> ...

  9. caioj 1078 动态规划入门(非常规DP2:不重叠线段)(状态定义问题)

    我一开始想的是前i个区间的最大值 显然对于当前的区间,有不选和选两种情况 如果不选的话,就继承f[i-1] 如果选的话,找离当前区间最近的区间取最优 f[i] = max(f[i-1, f[j] + ...

随机推荐

  1. sql server Delete误操作后如何恢复数据

    声明:本文是根据别人的经验https://blog.csdn.net/dba_huangzj/article/details/8491327写的总结 说明:update和delete时没有加where ...

  2. JS基本功 | JavaScript专题之数组 - 方法总结

    Array.map() 1.   map() 遍历数组 语法: let new_array = arr.map(function callback(currentValue, index, array ...

  3. hiho 1613 - 墨水滴 - bfs+优先队列 *

    题目链接 小Ho有一张白纸,上面有NxN个格子.小Ho可以选择一个格子(X, Y),在上面滴一滴墨水.如果这滴墨水的颜色深度是G,那么这个格子也会被染成深度为G的格子.同时周围的格子也会被这滴墨水浸染 ...

  4. STM8S103之中断优先级设置

    STM8S的中断由中断控制器(ITC)控制.STM8所有IO都支持中断,分为PA~PE 5个组,每组IO对应一个中断服务函数(也就是每组IO只有一个向量).STM8没有专门的中断状态寄存器,所以只能通 ...

  5. HDU 4190 Distributing Ballot Boxes【二分答案】

    题意:给出n个城市,n个城市分别的居民,m个盒子,为了让每个人都投上票,问每个盒子应该装多少张票 二分盒子装的票数, 如果mid<=m,说明偏大了,r应该向下逼近 ,r=mid 如果mid> ...

  6. 一个php处理图片裁剪,压缩,水印的小代码

    插件地址:https://github.com/cigua/imagefilter

  7. selenium自动化(二).........................................Demo篇

    二 编写简单代码 简单代码一:   demo1.py 1.from selenium import webdriver driver = webdriver.Chrome() driver.get(& ...

  8. fastJson 解析

    String object = JSON.toJSONString(obj);               ------------------obj必须序列化 JSONObject jso=JSON ...

  9. PHP 变量作用域

    以下为 PHP 中的各种变量在底层实现中是如何存储的. 变量: $temp = 'temp'; $temp2 = $temp; // key p *executor_globals.symbol_ta ...

  10. hdfs的HA集群搭建的相关配置

    前期准备就不详细说了 .修改Linux主机名 .修改IP .修改主机名和IP的映射关系 ######注意######如果你们公司是租用的服务器或是使用的云主机(如华为用主机.阿里云主机等) /etc/ ...