bryce1010模板

http://codeforces.com/gym/101810/problem/A

大模拟,写崩了,代码借队友的。。。。。。

注意处理段与段的连接问题:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
struct node{
long long l,r,val;
node(){}
node(long long ll,long long rr,long long vval)
{
l=ll;
r=rr;
val=vval;
}
}ar[maxn];
bool cmp(node a,node b)
{
return a.l<b.l;
}
int main(){
int t,m;
long long k;
scanf("%d",&t);
while(t--)
{
scanf("%d%lld",&m,&k);
int u,v,cost;
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&u,&v,&cost);
ar[i]=node(u,v,cost);
}
sort(ar,ar+m,cmp);
long long sum=0,ans=0;
int pre=0;
for(int i=0;i<m;)
{
if(ar[i].r-ar[pre].l+1<=k)
{
sum+=(ar[i].r-ar[i].l+1)*ar[i].val;
ans=max(ans,sum);
i++;
}
else
{
if(ar[i].l-ar[pre].l>=k)
{
if(ar[i].r-ar[pre].r<=k)
{
ans=max(ans,sum+(ar[i].r-ar[i].l+1)*ar[i].val-(ar[i].r-ar[pre].l+1-k)*ar[pre].val);
sum+=(ar[i].r-ar[i].l+1)*ar[i].val;
i++;
}
else
{
sum-=(ar[pre].r-ar[pre].l+1)*ar[pre].val;
pre++;
}
}
else
{
ans=max(ans,sum+(k-ar[i].l+ar[pre].l)*ar[i].val);
if(ar[i].r-ar[pre].r<k)
{
sum+=(ar[i].r-ar[i].l+1)*ar[i].val;
ans=max(ans,sum-(ar[i].r-ar[pre].l+1-k)*ar[pre].val);
i++;
}
else
{
sum-=(ar[pre].r-ar[pre].l+1)*ar[pre].val;
pre++;
}
}
}
}
printf("%lld\n",ans);
}
return 0;
}

最新文章

  1. 支持“ApplicationDbContext”上下文的模型已在数据库创建后发生更改
  2. Objective-C:Foundation框架-常用类-NSDictionary
  3. css3 过渡记
  4. 1.2机器学习基础下--python深度机器学习
  5. 第二节 EAN 8 码 / EAN 13 码
  6. vi 使用教程
  7. redis可视化工具redisClient
  8. 论MyBatis日志
  9. HTTP协议与TCP/IP协议
  10. Helicute FPV App Privacy Policy
  11. log4net可视化查询
  12. 68.jq---tab选项实现网页定点切换
  13. day14 十四、三元运算符,推导式,匿名内置函数
  14. zombodb 数据类型映射
  15. Kotlin入门(3)基本变量类型的用法
  16. 【CSS】元素样式
  17. 第五个神奇的电梯(代码抢先看&lt;1&gt;)
  18. C++第六次作业
  19. System 类的使用
  20. 【转载】Java 9 新特性——模块化

热门文章

  1. CSS Overflow 属性清除浮动
  2. kernel中对文件的读写【学习笔记】【原创】
  3. POJ2115 C Looooops ——模线性方程(扩展gcd)
  4. js正则表达式,密码长度要大于6位,由数字和字母组成
  5. ffmpeg av_interleaved_write_frame Operation not permitted
  6. codeforces B. Marathon 解题报告
  7. Java标准输入
  8. liunx目录/etc下相关配置
  9. 疯狂LCM
  10. Linux 无法登陆172.***.***.***的子网