题目传送门

思路

做这道题主要是需要发现一个性质:选择的区间必定是从某一个月的最后一天开始往前连续的一段区间。

考虑如何证明这个结论,设这个月有 \(x\) 天,假设有更优的方案满足到下一个月的第 \(y\) 天,则我们发现下一个月中的拥抱数为 \(\sum_{i=1}^{y} i\),而显然任意一个长度为 \(y\) 的区间的最小拥抱数就是这个值,我们往前移动一定不劣于这个解。

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int const N=1e6+10;
int a[N],sum[N],qsum[N];
inline int check(int l,int r){return qsum[r]-qsum[l-1];}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int n,x;cin>>n>>x;int ans=0;
for (int i=1;i<=n;++i) cin>>a[i],qsum[i]=qsum[i-1]+a[i],sum[i]=sum[i-1]+(1+a[i])*a[i]/2;
for (int i=1;i<=n;++i) a[i+n]=a[i];
n<<=1;
for (int i=1;i<=n;++i) qsum[i]=qsum[i-1]+a[i],sum[i]=sum[i-1]+(1+a[i])*a[i]/2;
for (int i=(n/2);i<=n;++i){
int l=1,r=i;
while (l<r){
if (l+1==r){if (check(r,i)<=x);else l=r;break;}
int mid=(l+r)>>1;
if (check(mid,i)<=x) r=mid-1;
else l=mid;
}
++l;
int q=x-(qsum[i]-qsum[l-1]);
int summ;
if (l>i+1) summ=0;
else summ=sum[i]-sum[l-1]+(a[l-1]+(a[l-1]-q+1))*q/2;
ans=max(ans,summ);
}
cout<<ans<<'\n';
return 0;
}

CF1358D The Best Vacation的更多相关文章

  1. 【BZOJ】【3550】【ONTAK2010】Vacation

    网络流/费用流 Orz太神犇了这题…… 我一开始想成跟Intervals那题一样了……每个数a[i]相当于覆盖了(a[i]-n,a[i]+n)这个区间……但是这样是错的!!随便就找出反例了……我居然还 ...

  2. BZOJ3550: [ONTAK2010]Vacation

    3550: [ONTAK2010]Vacation Time Limit: 10 Sec  Memory Limit: 96 MBSubmit: 91  Solved: 71[Submit][Stat ...

  3. uva 10192 Vacation(最长公共子)

    uva 10192 Vacation The Problem You are planning to take some rest and to go out on vacation, but you ...

  4. 568. Maximum Vacation Days

    Problem statement:  LeetCode wants to give one of its best employees the option to travel among N ci ...

  5. [LeetCode] Maximum Vacation Days 最大化休假日

    LeetCode wants to give one of its best employees the option to travel among N cities to collect algo ...

  6. Atcoder C - Vacation ( DP )

    C - Vacation Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Statement Taro' ...

  7. Holiday、Vacation、Days off、Leave、Break

    http://write.scu.edu.tw/view.php?bd=mistake&no=25 這些字在英文的用法中都有放假.休息的意思,但用法卻不太一樣,接下來就來看看它們的不同吧. 『 ...

  8. bzoj 4097: [Usaco2013 dec]Vacation Planning

    4097: [Usaco2013 dec]Vacation Planning Description Air Bovinia is planning to connect the N farms (1 ...

  9. UVA.10192 Vacation (DP LCS)

    UVA.10192 Vacation (DP LCS) 题意分析 某人要指定旅游路线,父母分别给出了一系列城市的旅游顺序,求满足父母建议的最大的城市数量是多少. 对于父母的建议分别作为2个子串,对其做 ...

  10. BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划

    BZOJ_3550_[ONTAK2010]Vacation&&BZOJ_1283:_序列_网络流解线性规划 Description 给出一个长度为 的正整数序列Ci,求一个子序列,使得 ...

随机推荐

  1. 关于 Windows6.1-KB2999226-x64.msu 此更新不适用你的计算机解决办法

    前言 今天被这个破问题坑了很长时间,网上一大堆扯跳过那个检查,通过提取 cab 文件然后直接用命令安装,我可以明确的告诉你不是那样的解决的,因为我实际用命令装过也装不上(这里我吐槽一下,我猜你最初的问 ...

  2. postman的运用

    链接: https://pan.baidu.com/s/1gfaKoAv 密码: dp7t 最近要测试和其他系统对接,忽然想起了postman这款url测试神器. 现分享如下: 下载完成后解压到文件夹 ...

  3. Springboot整合thymeleaf报错whitelabel page

    1.SpringBootApplication未放在最外层 2.application.properties未配置spring.thymeleaf.check-template-location=tr ...

  4. Flink同步Kafka数据到ClickHouse分布式表

    公众号文章都在个人博客网站:https://www.ikeguang.com/ 同步,欢迎访问. 业务需要一种OLAP引擎,可以做到实时写入存储和查询计算功能,提供高效.稳健的实时数据服务,最终决定C ...

  5. 【重难点】函数式接口、函数式编程、匿名内部类、Lambda表达式、语法糖

    一.函数式接口 1.概念 仅有一个抽象方法的接口 适用于函数式编程(Lambda表达式) 常见:Runnable.Comparator<>.生产型接口Producer的get方法.消费型接 ...

  6. GitHub 开源了多款字体「GitHub 热点速览 v.22.48」

    本期 News 快读有 GitHub 官方大动作一下子开源了两款字体,同样大动作的还有 OpenAI 发布的对话模型 ChatGPT,引燃了一波人机对话. 项目这块,也许会成为新的 Web 开发生产力 ...

  7. K近邻算法(k-nearest neighbor, kNN)

    K近邻算法(K-nearest neighbor, KNN) KNN是一种分类和回归方法. KNN简介 KNN模型3要素 KNN优缺点 KNN应用 参考文献 KNN简介 KNN思想 给定一个训练集 T ...

  8. Gradle 使用maven本地仓库 带来的思考

    Gradle 使用maven本地仓库 带来的思考 本篇主要探究一下 在使用Gradle 的时候一般会配置 maven 的本地仓库的,那是不是Gradle 可以直接使用 maven本地仓库的jar呢 ? ...

  9. [0x12] 132.小组队列

    题意 link(more:UVA540) 简化题意:对 \(n\) 个小组排队,每个小组有至多 \(m\) 个成员(每个成员有唯一编号 \(x\)),当一个人来到队伍时,如果队中有同组成员,直接插入其 ...

  10. 学习.NET MAUI Blazor(三)、创建.NET MAUI Blazor应用并使用AntDesignBlazor

    大致了解了Blazor和MAUI之后,尝试创建一个.NET MAUI Blazor应用. 需要注意的是: 虽然都叫MAUI,但.NET MAUI与.NET MAUI Blazor 并不相同,MAUI还 ...