链接

成功带wxy掉分、、全程0输出

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;
}

最新文章

  1. PHP常用函数整理
  2. Php:学习笔记(一):版本选择
  3. chrome的常用快捷键和命令
  4. Js 风骚的代码
  5. HTML5 UI框架Kendo UI Web中如何创建自定义组件(二)
  6. JDBC连接sql server数据库及其它
  7. 准备开源一套异形UI控件
  8. Java实现Internet地址获取
  9. Parallel.ForEach() 并行循环
  10. protected internal修饰符
  11. .net发送邮件代码示例
  12. 分析一下FastDFS_java_client中TestClient.java这个文件以及跟它关联的这条线
  13. 初识Android
  14. QReadWriteLock读写锁的一点测试(它是逻辑锁,并没有与实物相联系),只有锁住了读,才允许再次读,否则一概不允许
  15. Visual Studio 2012的新技术特性
  16. Docker学习笔记 - Docker的守护进程
  17. 前两天做项目遇到了sqlserver最大连接数 Max Pool Size 的问题
  18. 第四节:MVC中AOP思想的体现(四种过滤器)并结合项目案例说明过滤器的实际用法
  19. centos7.5搭建cdh5.13.0
  20. 通用 正则表达式 C# (.NET)Regex 总结

热门文章

  1. 使用IDEA创建maven父子工程项目
  2. spring boot EnableAutoConfiguration exclude 无效
  3. maven中pom的继承以及dependencies与dependencyManagement的区别
  4. 【翻译】在TypeScript中,Extends和Implements一个抽象类有什么不同
  5. Nginx配置单项SSL以及双向SSL
  6. 原生JS实现上拉下拉列表
  7. vue前端实战注意事项
  8. jQuery(五): Deferred
  9. Spring Boot加载application.properties配置文件顺序规则
  10. C语言深入学习