cf1175 D\E
链接
D 题意
把序列分成连续k段,f(i)表示i这个在第几段
\(\sum\limits_{i=1}^{n}a_i*f(i)\)最大
思路
想象成从k层积木依次递减
先把积木搭满,也就是\(sum_n*k\)
然后考虑删除积木,删除k-1个最小的前缀和就行。
sum[n]不能加进去
代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=3e5+7;
int n,k;
ll sum[N];
int main() {
scanf("%d%d",&n,&k);
for(int i=1,val;i<=n;++i) {
scanf("%d",&val);
sum[i]=sum[i-1]+val;
}
ll ans=k*sum[n];
sort(sum+1,sum+n);
for(int i=1;i<k;++i) ans-=sum[i];
cout<<ans<<"\n";
return 0;
}
E 题意
多次询问求一条线段最少被多少线段覆盖
思路
倍增
f[i][j]表示从第i个点出发,用\(2^j\)条线段最多到哪里,
注意从0开始
代码
#include <bits/stdc++.h>
using namespace std;
const int N=5e5+7;
int n,m,f[N][21],bj;
int main() {
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i) {
int x,y;
scanf("%d%d",&x,&y);
f[x][0]=max(f[x][0],y);
bj=max(bj,y);
}
for(int i=1;i<=bj;++i) f[i][0]=max(f[i-1][0],f[i][0]);
for(int j=1;j<=20;++j)
for(int i=0;i<=bj;++i)
f[i][j]=f[f[i][j-1]][j-1];
for(int j=1;j<=m;++j) {
int ans=0,x,y;
scanf("%d%d",&x,&y);
for(int i=20;i>=0;--i)
if(f[x][i]<y)
ans+=1<<i,x=f[x][i];
printf("%d\n",f[x][0]>=y?ans+1:-1);
}
return 0;
}
cf1175 D\E的更多相关文章
- CF-1175 B.Catch Overflow!
题目大意:有一个初始变量,值为0,三种操作 for x 一个循环的开始,循环x次 end 一个循环的结束 add 将变量值加一 问最后变量的值是否超过2^32-1,若超过,输出一串字符,不超过则输出变 ...
随机推荐
- asp.net core MVC 过滤器之ExceptionFilter过滤器(一)
简介 异常过滤器,顾名思义,就是当程序发生异常时所使用的过滤器.用于在系统出现未捕获异常时的处理. 实现一个自定义异常过滤器 自定义一个异常过滤器需要实现IExceptionFilter接口 publ ...
- Linux环境下:vmware安装Windows报错误-无人参与应答文件包含的产品密钥无效
最近在安装window server 2012 R2的时候,输入好密钥可以继续安装,但在后面又提示我“无人参与应答文件包含的产品密钥无效.删除无效的密钥或在无人参与应答文件中提供有效的产品密钥继续进行 ...
- Java自学-异常处理 Exception
Java 异常 Exception 异常定义: 导致程序的正常流程被中断的事件,叫做异常 步骤 1 : 文件不存在异常 比如要打开d盘的LOL.exe文件,这个文件是有可能不存在的 Java中通过 n ...
- php批量检查https证书有效期
function get_cert_info($domain){ $context = stream_context_create(['ssl' => [ 'capture_peer_cert' ...
- javascript中的vavigator对象
appCodeName javaScript 1.0 介绍:与浏览器相关的内部代码名 appMinorVersion IE4及其后续的版本 介绍:辅版本号(通常应用于浏览器的补丁或服务包) appNa ...
- FreePascal - CodeTyphon 如何调整代码编辑器背景色?
当前版本的CodeTyphon默认背景色是黑色,看起来很不习惯,通过下面操作,修改了它的代码编辑器的背景色: 1,打开CodeTyphon的菜单“工具”->“选项”. 2,选择左侧列表项目“颜色 ...
- Android编译系统中的Android.bp
https://www.cnblogs.com/bluestorm/p/10895005.html Android.bp,是用来替换Android.mk的配置文件. 它使用Blueprint框架来解析 ...
- 将exe和dll打包为一个exe文件
通过Nuget安装Costura.Fody 公司项目需要支持.NET 4.0(使用VS2017),Costura.Fody库从3.2.1开始支持4.0,但是不能装最新的Fody,否则会提示: Fody ...
- Centos7无法使用ssh登陆及解决方案
查看状态: systemctl status sshd.service 启动服务: systemctl start sshd.service 重启服务: systemctl restart sshd. ...
- 微信小程序 子组件调用父组件方法
原文连接 ---> https://blog.csdn.net/qq_40190624/article/details/87972265 组件 js: var value = 123; ...