枚举,二分,$RMQ$。

肯定是将连续一段中最大值免去花费,枚举起点之后,二分终点即可。可以证明单调性。

  1. #include<map>
  2. #include<set>
  3. #include<ctime>
  4. #include<cmath>
  5. #include<queue>
  6. #include<string>
  7. #include<stack>
  8. #include<vector>
  9. #include<cstdio>
  10. #include<cstring>
  11. #include<iostream>
  12. #include<algorithm>
  13. #include<functional>
  14. using namespace std;
  15.  
  16. int T;
  17. int n;
  18. long long k,a[],b[],suma[],sumb[],dp[][];
  19.  
  20. void RMQ_init()
  21. {
  22. for(int i=;i<n;i++) dp[i][]=a[i+];
  23. for(int j=;(<<j)<=n;j++)
  24. for(int i=;i+(<<j)-<n;i++)
  25. dp[i][j]=max(dp[i][j-],dp[i+(<<(j-))][j-]);
  26. }
  27.  
  28. long long Max(int L,int R)
  29. {
  30. L--,R--;
  31. int k=;
  32. while((<<(k+))<=R-L+) k++;
  33. return max(dp[L][k],dp[R-(<<k)+][k]);
  34. }
  35.  
  36. int main()
  37. {
  38. scanf("%d",&T);
  39. while(T--)
  40. {
  41. scanf("%d%lld",&n,&k);
  42. for(int i=;i<=n;i++)
  43. {
  44. scanf("%lld",&a[i]);
  45. suma[i]=a[i]+suma[i-];
  46. }
  47. for(int i=;i<=n;i++)
  48. {
  49. scanf("%lld",&b[i]);
  50. sumb[i]=sumb[i-]+b[i];
  51. }
  52.  
  53. RMQ_init();
  54.  
  55. long long ans=;
  56. for(int i=;i<=n;i++)
  57. {
  58. int L=i,R=n,pos=-;
  59.  
  60. while(L<=R)
  61. {
  62. int mid= (L+R)/;
  63. if(suma[mid]-suma[i-]-Max(i,mid)<=k) pos=mid,L=mid+;
  64. else R=mid-;
  65. }
  66. ans=max(ans,sumb[pos]-sumb[i-]);
  67. }
  68.  
  69. printf("%lld\n",ans);
  70. }
  71. return ;
  72. }

ZSTU OJ 4273 玩具的更多相关文章

  1. ZSTU OJ 3999 零基础学算法---邻接表

    题目:Click here 题意:我就喜欢中文题! 分析:这个题虽然是中文题,但是还是有一点费解的.其实就是给你一棵树,是用图的形式给你的,只知道a,b之间有一条边,并不知道谁是父,谁是子.思路就是先 ...

  2. ZSTU OJ 3770: 黑帽子 归纳总结

    Description 一群非常聪明的人开舞会,每人头上都戴着一顶帽子.帽子只有黑白两种,黑的至少有一顶.每个人都能看到其它人帽子的颜色,却看不到自己的.主持人先让大家 看看别人头上戴的是什幺帽子,然 ...

  3. ZSTU OJ 4272 最佳淘汰算法

    线段树. 处理出每个位置下一个位置是哪里.然后搞个线段树找一下最大值就可以了. #include<map> #include<set> #include<ctime> ...

  4. zstu4273 玩具 2017-03-22 14:18 49人阅读 评论(0) 收藏

    4273: 玩具 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 700  Solved: 129 Description 商店有n个玩具,第i个玩具有 ...

  5. 树形dp的进阶 (一)

    ①树的重心的性质的运用 ②缩点以后寻找规律  树的直径! ③树形dp上的公式转换 ④和期望有关的树形dp + 一点排列组合的知识 ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 一:Codeforces Round #364 ...

  6. oj.zstu 4421交税(合数分解成素数)

    题目 题意:T组,每一组输入一个数X,  求X最少能分成几个素数的和,输出. 思路: 对于一个大于2的偶数,由哥德巴赫猜想,一定能分成2个素数. 对于一个奇数来说,一定能分成2个或者3个素数之和.如果 ...

  7. [C#] 逆袭——自制日刷千题的AC自动机攻克HDU OJ

    前言 做过杭电.浙大或是北大等ACM题库的人一定对“刷题”不陌生,以杭电OJ为例:首先打开首页(http://acm.hdu.edu.cn/),然后登陆,接着找到“Online Exercise”下的 ...

  8. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  9. zstu 4237 马里奥的求救——(单调队列DP)

    题目链接:http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4237 这题可以转化为每次可以走g~d+x步,求最大分数,且最大分数的步数最少. ...

随机推荐

  1. MongoDB入门(4)- MongoDB日常操作

    MongoDB客户端 MongoDB有很多客户端 MongoVue Robomongo MongoDB命令行 启动mongo shell 在windows下,双击mongo.exe可以启动mongo ...

  2. java主线程捕获子线程中的异常

    本文主要参考:<think in java> 好,下面上货. 正常情况下,如果不做特殊的处理,在主线程中是不能够捕获到子线程中的异常的. 例如下面的情况. package com.xuey ...

  3. Zyan 一个通信框架

    原文地址 本文示例 Zyan是一个简单直观的分布式应用程序开发框架. 以下是Zyan项目的简要概述. 架构图: Zyan一般由客户端和服务端组成.服务端(以组件的形式)提供服务,客户端远程调用服务端的 ...

  4. 获取数据源数据的实现---Architecting Android

    UserRepository,这个接口,描述了Repository提供给用户的功能就是getUsers,getUser(ID).用户只管使用,其它细节无需理会. /** * Interface tha ...

  5. 多种方法过Codeforces Round #270的A题(奇偶法、打表法和Miller_Rabin(这个方法才是重点))

    题目链接:http://codeforces.com/contest/472/problem/A 题目: 题意:哥德巴赫猜想是:一个大于2的素数一定可以表示为两个素数的和.此题则是将其修改为:一个大于 ...

  6. 如何彻底关闭退出vmware虚拟机

    如何彻底关闭退出vmware虚拟机 每次使用虚拟机之后退出时,它都会在系统托盘区留下一个虚拟机图标,该如何彻底关闭退出vmware虚拟机呢? 首先我们需要运行一下虚拟机程序 1:我们如果要对虚拟机进行 ...

  7. 在使用ubuntu16.04+python3.5 下使用pip3出现pip3 error - '_NamespacePath' object has no attribute 'sort'

    使用pip3安装tensorflow以及gensim等时,出现如下错误: Traceback (most recent call last): File "/usr/local/bin/pi ...

  8. peewee在flask中的配置

    # 原文:https://blog.csdn.net/mouday/article/details/85332510 Flask的钩子函数与peewee.InterfaceError: (0, '') ...

  9. C++之容器(关联容器)

    关联容器和顺序容器的本质区别:关联容器是通过键存取和读取元素.顺序容器通过元素在容器中的位置顺序存储和访问元素.因此,关联容器不提供front.push_front.pop_front.back.pu ...

  10. node.js2

    同步是指:同步阻塞操作,异步是指:异步非阻塞操作. 第一部分:fs模块 1.引入fs模块 require('fs'); 2.写文件 01.异步写:writeFile fs.writeFile(path ...