零线火线 (powerline)

时间限制: 1 Sec 内存限制: 128 MB

题目描述

左手抓零线,右手抓火线,卒不卒? —— 某物理老师激情讲课

花生 一直很喜欢玩零线和火线。然而大家都知道,玩电线是十分危险的,若同时接触零线和火线,电流将直接通过心脏,非常危险。所以 花生 一直都带着橡胶手套玩电线。

但是带着橡胶手套玩起来很没有手感啊!

于是 花生 去学习了超能力 —— 肉体再生,这样就不用怕触电啦。

这个能力具体是这样的:

能力者每受到一次伤害,就会积累一点能量。每次使用能力,就会使用所积累的所有能量,恢复15×能量点数的生命值,并且相邻两次使用的时间至少要有 C D CD CD 秒的间隔, C D CD CD 的值由能力者的能力强度而定,能力越强 C D CD CD 值越小。

花生 的初始生命值为 H P HP HP(生命值无上限),他将要玩 n n n 秒的电线,每秒会受到一次伤害,第i秒的伤害值为 a i a_i ai​。任何时刻,若 H P ≤ 0 HP≤0 HP≤0,则视为死亡。

花生 现在想知道,自己最少要把 C D CD CD 降低到多少,才可以安全地玩电线。

输入

第一行两个整数 n , H P n,HP n,HP,表示 花生 玩电线的时间与初始生命值。

第二行 n n n 个整数,为 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1​,a2​,...,an​。

输出

共一行。

若 C D CD CD 没有上界,则输出 Peanut can play with the wires at will.;若无论如何都无法安全的玩电线,则输出 -1

否则输出这个最大的 C D CD CD 值。

样例输入

【样例1】

7 30
20 5 30 4 10 5 20

【样例2】

5 10
1 4 2 1 1

样例输出

【样例1】

2

【样例2】

Peanut can play with the wires at will.

提示

对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 500 , 0 ≤ a i ≤ 2000 1≤n≤500,0≤ai≤2000 1≤n≤500,0≤ai≤2000

思路

用 d p [ i ] dp[i] dp[i] 表示到 第 i i i 时刻剩下多少生命值,用类似 01 01 01 背包的思路转移
二分 C D CD CD 的值

#pragma GCC optimize(3,"Ofast","inline")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <set>
#include <cmath>
#include <map>
#include <algorithm>
#include <unordered_map>
#include <vector>
using namespace std;
#define ls (rt<<1)
#define rs (rt<<1|1)
typedef long long ll;
template <typename T>
inline void read(T &x) {x = 0;static int p;p = 1;static char c;c = getchar();while (!isdigit(c)) {if (c == '-')p = -1;c = getchar();}while (isdigit(c)) {x = (x << 1) + (x << 3) + (c - 48);c = getchar();}x *= p;
}
template <typename T>
inline void print(T x) {static int cnt;static int a[50];cnt = 0;do {a[++cnt] = x % 10;x /= 10;} while (x);for (int i = cnt; i >= 1; i--)putchar(a[i] + '0');puts("");
}
const int mod = 1e9+7;
const int inf = 0x3f3f3f3f;
const int maxn =5e5+10;
int n,np;
int a[maxn];
int dp[maxn];
inline bool check(int x) {memset(dp, 0, sizeof dp);dp[0] = np;for (int i = 1; i <= n; ++i) {if (a[i] < np) {dp[i] = max(dp[i], np - a[i] + i * 15);}for (int j = i - x; j >= 1; --j) {if (dp[j] > a[i] - a[j])dp[i] = max(dp[i], dp[j] - (a[i] - a[j]) + (i - j) * 15);}}for (int i = 1; i <= n; ++i) {if (dp[i] && dp[i] - (a[n] - a[i]) > 0) {return 1;}}return 0;
}
inline void work() {scanf("%d %d", &n, &np);for (int i = 1; i <= n; ++i) {scanf("%d", &a[i]);a[i] += a[i - 1];}int l = 1, r = n, ans =0;while (l <= r) {int mid = l + r >> 1;if (check(mid)) {ans = mid;l = mid + 1;} else r = mid - 1;}if (ans == n) printf("Peanut can play with the wires at will.\n");else if (ans == 0) printf("-1\n");else printf("%d\n", ans);
}
int main() {int T = 1;//read(T);while (T--) {work();}return 0;
}

零线火线 (powerline)相关推荐

  1. 零线火线地线知识扫盲

    目录 1.零线火线地线以及相线概念 2.零线无电压?为什么会有零线电流? 3.什么是零序电流? 4.交流电的有效值 5.交流电到单片机直流电源供电的转化 6.正向/反向 有功/无功 1.零线火线地线以 ...

  2. ln火线零线_ln线哪个是火线零线

    我们在接线的时候,首先需要区分零线和火线以及地线,而不同的电线会与不同的接口相连接.在连接插座的时候,上面会有不同的接线柱子,分别有不同的字母表示,比如有l还有n,那么l和n哪个是火线?哪个又是零线? ...

  3. 火线 地线 零线 漫谈

    交流电不分正负,那为什么又要分火线和零线呢? 零线的对地电位不一定为零(接近0).零线的最近接地点是在变电所或者供电的变压器处. 交流电正半周火线电压为220v,零线接近0v.....正 负半周时火线 ...

  4. 漏电开关跳闸,把火线和零线对换就不跳了,这是什么原因?

    漏电开关跳闸,把火线和零线对换就不跳了,这是什么原因? 有时候漏电开关跳闸,有些"聪明"的电工师傅把火线和零线对换一下就不跳了.在某些情况下,这种方法确实有一定的效果,但同时也会带 ...

  5. ln火线零线_LN哪个代表零线哪个代表火线

    展开全部 L是火线    N 零线 零线 火线 [读音]líng xiàn huǒ xiàn[释义]专指:民e68a8462616964757a686964616f31333365643662用电的供 ...

  6. ln火线零线_LN哪个代表零线哪个代表火线?

    展开全部 L是火线    N 零线 零线 火线 [读音]líng xiàn huǒ xiàn[释义]专指:民用电的供电线路,市电e5a48de588b662616964757a686964616f31 ...

  7. 布线基础:火线、零线和地线

    对强电一直不甚了解,也对信号地和机壳地的区别一直很纠结,看了这篇文章后豁然开朗了. 为了使交流电有很方便的动力转换功能, 通常工业用电,三根正弦交流电.电流相位(反映电流的方向大小)相互相差120度. ...

  8. 零线和地线的区别,示波器如何测量市电?

    一.零线和地线区别 零线是在供电端(发电厂.变电站.变压器)接地,或在入户前重复接地,是工作接地线,是输电线路的一部分,电流经电厂→火线→负载→零线反回电厂.地线在用户端接地,和用电电器的金属外壳或人 ...

  9. C#通过继电器接收PD132地感设备信号

    场景模拟,为了捕捉到叉车是进门还是出门的动作,我们安装了两个地感设备,门前门后,进行接收两个地感信号的值,通过值接收的先后顺序可以知道是进门还是出门 设备:两个PD132加上地感线圈,一个网口的六路继 ...

最新文章

  1. 去除浏览器ip检测_浏览器怎么多开换ip,每个窗口不同的独立IP-VMLogin中文版指纹浏览器...
  2. 计算机加电后操作系统启动过程
  3. 最快捷的Linux命令查询工具来了:「我该怎么做XX」,一句话自动返回操作指南...
  4. Navicat连接mysql数据库
  5. 想学python看什么书-我以前从没学过编程,学Python看什么书?
  6. 调用函数,输出Fibonacci数列的m项至n项
  7. vue 数组长度_深入理解Vue的数据响应式
  8. oracle数据库物理结构包含,Oracle - 数据库物理结构
  9. 《面向数据科学的概率论》翻译活动期待大家的参与 | ApacheCN
  10. mysql多线程导出_MySQL多线程导入导出工具Mydumper
  11. Mycat 设置全局序列号
  12. 算法:分离链表为两部分,小于某个值都在左边,大于等于某个值在右边 Partition List
  13. opencv-python版本问题
  14. CVE-2020-10148: SolarWinds 远程代码执行漏洞通告
  15. 基于avr atmega16单片机定时器的 pwm调宽调占空比以及调频率
  16. 世界著名半导体公司及其官网
  17. (免费配音软件)[配音助手 更新] (1.3版本) 阿里云配音软件
  18. 网易邮箱与GMAIL
  19. 三星手机如何通过Exchange账户同步联系人到手机中?
  20. html5学生dw网页设计大作业,hbuilder华谊网页设计成品模板,静态网页设计定制

热门文章

  1. 2017小学奥数培训机构排名
  2. 论程序员成长:如何像游戏一样打怪?
  3. 打怪小游戏(C++实现)
  4. Ormlite 学习
  5. 我的android应用(提供源码)
  6. Java如何定位死锁?
  7. QWT QwtMarker中Label的文本对齐
  8. python_21_线程+进程+协程
  9. 嵌入式Linux(二十二)Linux内核分析及移植
  10. mysql的datetime使用_​MySQL日期数据类型datetime的使用方法