当前位置: 首页 > wzjs >正文

宁波网络建站模板广州网页设计html

宁波网络建站模板,广州网页设计html,网站建设 资讯,登录页面的html代码原题:link,点击这里喵。 题意:P1484 种树。 将军今天在种树,他在一条直线上挖了 nnn 个坑。这 nnn 个坑都可以种树,但为了保证每一棵树都有充足的养料,将军不会在相邻的两个坑中种树。而且由于将军的树种…
原题:link,点击这里喵。
题意:P1484 种树。

将军今天在种树,他在一条直线上挖了 nnn 个坑。这 nnn 个坑都可以种树,但为了保证每一棵树都有充足的养料,将军不会在相邻的两个坑中种树。而且由于将军的树种不够,他至多会种 kkk 棵树。将军有某种神能力,能预知自己在某个坑种树的获利会是多少(可能为负),请你帮助他计算出他的最大获利。

对于 100%100\%100% 的数据,1≤n≤3000001 \le n\leq 3000001n3000001≤k≤n21 \le k\leq \dfrac{n}{2}1k2n,在一个地方种树获利的绝对值在 10610^6106 以内。

解法:WQS 二分。

首先,如果没有 kkk 的限制,我们可以很轻松的推出 dpdpdp 方程式,设 dpidp_idpi 为种到第 iii 个坑的最大收益,我们有:dpi=max⁡(dpi−2+vi,dpi−1)dp_i=\max(dp_{i-2}+v_i,dp_{i-1}) dpi=max(dpi2+vi,dpi1)
注意自行判断边界条件即可。

运用套路二分惩罚(斜率)ccc,把每一个坑的收益减去 ccc,了解此时所选的数量。不过有一点很特别,不同于以往的恰好,题目中是至多

这该怎么办?

我们定义一次惩罚为 ccc 的操作为 solve⁡(c)\operatorname{solve}(c)solve(c)

在程序开始时,我们先执行一次 solve⁡(0)\operatorname{solve}(0)solve(0),如果其返回值告诉我们它选择了 cntcntcnt 个树坑:

  • cnt<=kcnt<=kcnt<=k,函数极值的横坐标小于等于 kkk,意味着可以直接输出答案,因为右侧的斜率 c<=0c<=0c<=0
  • cnt>kcnt>kcnt>k,归约到正常的 WQS 二分问题,此时函数在 kkk 限制下的极值的横坐标为 kkk,所以套用恰好模型。

可以参照下面的图片参照理解。
在这里插入图片描述
在这里插入图片描述
为了防止有相同的斜率产生,我们还需要统计 solve⁡(0)\operatorname{solve}(0)solve(0) 中,v−c=0v-c=0vc=0vvv 个数(这个是在 dpdpdp 过程中计入的 000 的个数),记为 _cnt\_cnt_cnt,因为 000 不对 dpdpdp 的值产生变化,所以我们直接在统计答案时加上其个数并与 kkkmin⁡\minmin 即可。

代码 time。
#include <bits/stdc++.h>#define inf 0x3f3f3f3f
typedef long long lnt;using namespace std;const int N = 2e6 + 10;struct DATA { // 这样写方便也省事int cnt, _cnt;lnt v;DATA() = default;DATA(int cntp, int _cntp, lnt _v) : cnt(cntp), _cnt(_cntp) , v(_v){}bool operator<(const DATA &a) const { return v < a.v; }DATA operator+(const DATA &a) const {return DATA(cnt + a.cnt, _cnt + a._cnt, v + a.v);}
};
vector<DATA> dp, d, v;int n, k;DATA solve(int c) {v = d;for (int i = 0; i < n; ++i) {v[i].v -= c;if (v[i].v < 0) v[i].cnt = 0, v[i].v = 0;else if(v[i].v == 0) v[i]._cnt = 1, v[i].cnt = 0;dp[i] = {0, 0, 0};}DATA ans = DATA(0, 0, 0);for (int i = 0; i < n; ++i) {dp[i] = (i - 2 >= 0 ? dp[i - 2] : DATA(0, 0, 0)) + v[i];if (i) dp[i] = max(max(dp[i], dp[i - 1]), DATA(0, 0, 0));ans = max(ans, dp[i]);}return ans;
}int main() { //scanf("%d%d", &n, &k);dp.resize(n), d.resize(n);for (int i = 0; i < n; ++i) {scanf("%lld", &d[i].v);d[i].cnt = 1;}DATA g = solve(0);if (g.cnt <= k) {printf("%lld\n", g.v);return 0;}int l = -1, r = 1e6 + 10;lnt ans = 0;while (l < r - 1) {int mid = (l + r) >> 1;DATA g = solve(mid);if (g.cnt <= k) {ans = max(ans, (lnt)min(g.cnt + g._cnt, k) * mid + g.v); // 注意这里 !r = mid;} else if (g.cnt > k) {l = mid;}}printf("%lld\n", ans);return 0;
}

文章转载自:

http://y0nkDZ5M.pqbkk.cn
http://VMahy2SC.pqbkk.cn
http://BLsLmVnD.pqbkk.cn
http://FbFDiLg6.pqbkk.cn
http://rEa1n1VA.pqbkk.cn
http://WukGfcfz.pqbkk.cn
http://Nq8C2wzO.pqbkk.cn
http://qnrbohnP.pqbkk.cn
http://f3tWo26j.pqbkk.cn
http://2sUP1ZDp.pqbkk.cn
http://7fpr0gQx.pqbkk.cn
http://WH9f92HG.pqbkk.cn
http://UOcbnhOV.pqbkk.cn
http://aN5c7fxF.pqbkk.cn
http://Ij7Tu0lz.pqbkk.cn
http://4efMuhAy.pqbkk.cn
http://JglTxzFk.pqbkk.cn
http://Uy2syKSk.pqbkk.cn
http://f7Txv5QE.pqbkk.cn
http://lBu0hZR8.pqbkk.cn
http://5GxeB8PZ.pqbkk.cn
http://wvwvxT4G.pqbkk.cn
http://Hhs241En.pqbkk.cn
http://Z21M5CQl.pqbkk.cn
http://rnvB4t75.pqbkk.cn
http://69VSu4vF.pqbkk.cn
http://GXCcmXpp.pqbkk.cn
http://qiuZJ5Kw.pqbkk.cn
http://4sVmIhpj.pqbkk.cn
http://fogdnzHK.pqbkk.cn
http://www.dtcms.com/wzjs/628907.html

相关文章:

  • 免费网站优化软件莱芜最好的网站建设公司
  • 深圳给企业做网站营销机构代码怎么填
  • 怎么建设网站平台网站怎么发邮件
  • 做自媒体一般都注册几个网站郑州企业网站排名
  • dw做的个人网站wordpress密码忘记
  • 南通做网站价格广州制片公司网站
  • 网站建设公司保定市手机建设中网站首页
  • 长沙建站模板平台合肥最新通知今天
  • 网站模板源码下载网数字营销证书
  • 网站代码的重点内容是什么万能应用商店下载
  • 东湖南昌网站建设公司东莞如何建设网站制作平台
  • 设计师配色网站成都住建局官网智慧工地
  • 网站建设公司包括哪些内容我想花钱做网站
  • 中山台州网站建设推广烟台哪儿有可以做淘宝网站的
  • 金华住房与城乡建设部网站数据分析师需要学哪些课程
  • nodejs做后端的网站请人做网站得多少钱
  • 关于建设网站的会议纪要网站建设前景怎么样
  • 企业网站开发文献综述成都房地产交易中心官网
  • 做响应式网站一般都用哪些框架社团网站建设的功能定位
  • 昆明制作手机网站千锋教育招聘
  • 网站数据中心的建设wordpress 升级失败
  • 企业网站建设试题萍乡做网站的公司有哪些
  • 赣州网站制作公司建设兼职网站目的
  • 做一个在线支付网站搜索关键词技巧
  • 自己做网站转发新闻违法么下载官方正版app
  • 济源网站优化wordpress图片轮播插件
  • 网站文章伪原创如何做宝塔安装wordpress教程
  • ppt的网站导航栏怎么做安徽建新建设工程有限公司网站
  • 提供网站制作公司报价wordpress模板下载失败
  • 贵阳微网站意见反馈的网站怎么做