DescriptionDescriptionDescription

在一个数轴上有nnn个点,一开始在原点,走到每个点上可以获得m−tm-tm−t(ttt为移动的距离)的价值,求最大价值

数据范围:n≤300,m≤106n\leq 300,m\leq 10^6n≤300,m≤106


SolutionSolutionSolution

一开始打了一个34分的O(n2)O(n^2)O(n2)的贪心,跑了nnn次(枚举起点)后变成了O(n3)O(n^3)O(n3)的贪心,愉快水了40

#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
using namespace std;int n,m,wz,Time,x[302],ans,k;
bool v[301];
inline long long read()
{char c;long long d=1,f=0;while(!isdigit(c=getchar())) if(c=='-') d=-1;f=(f<<3)+(f<<1)+c-48;while(isdigit(c=getchar())) f=(f<<3)+(f<<1)+c-48;return d*f;
}
inline int tx(int wz,int m)
{Time=m;int ans=0;for(register int i=1;i<=n;i++){k=301;for(register int j=1;j<=n;j++) if(!v[j]) if(abs(x[j]-x[wz])<abs(x[k]-x[wz])) k=j;if(k==301) break;Time-=abs(x[wz]-x[k]);if(Time<0) return ans;ans+=Time;wz=k;v[k]=true;}return ans;
}
signed main()
{n=read();m=read();for(register int i=1;i<=n;i++) x[i]=read();sort(x+1,x+1+n);x[301]=0x3f3f3f3f;for(register int i=0;i<=n;i++){memset(v,0,sizeof(v));ans=max(ans,tx(i,m-abs(x[i])));}printf("%d",ans);
}

然鹅正解dpdpdp

首先选择的一定是一段连续的区间

所以我们可以利用i,ji,ji,j来确定左右端点

但如何确定价值呢?

设定移动总长度即可,这样价值就可以计算出来了


CodeCodeCode

#include<cstdio>
#include<cctype>
#include<cstring>
#include<algorithm>
using namespace std;int n,m,x[302],ans,st,f[301][301][2];
inline long long read()
{char c;long long d=1,f=0;while(!isdigit(c=getchar())) if(c=='-') d=-1;f=(f<<3)+(f<<1)+c-48;while(isdigit(c=getchar())) f=(f<<3)+(f<<1)+c-48;return d*f;
}
signed main()
{n=read();m=read();for(register int i=1;i<=n;i++) x[i]=read();x[++n]=0;sort(x+1,x+1+n);st=lower_bound(x+1,x+1+n,0)-x;for(register int k=1;k<=n;k++){memset(f,0xcf,sizeof(f));f[st][st][0]=f[st][st][1]=0;for(register int i=st;i>0;i--)for(register int j=st;j<=n;j++){if(i==j) continue;if(j-i+1>k) break;f[i][j][0]=max(f[i+1][j][0]+m-(x[i+1]-x[i])*(k-j+i),f[i+1][j][1]+m-(x[j]-x[i])*(k-j+i));f[i][j][1]=max(f[i][j-1][1]+m-(x[j]-x[j-1])*(k-j+i),f[i][j-1][0]+m-(x[j]-x[i])*(k-j+i));if(j-i+1==k) ans=max(ans,max(f[i][j][0],f[i][j][1]));}}printf("%d",ans);
}

2019.5.11 提高B组 T3 nssl-1322 清兵线相关推荐

  1. 2019.5.11 提高B组 T4 nssl-1323 交流

    D e s c r i p t i o n Description Description 给定 m m m个串,求同时刚好满足 k k k个串的方案数 数据范围: k , m ≤ 15 k,m\le ...

  2. 2019.5.25 提高A组 总结

    T1不会,打了一个暴力,不过至少也体现了自己的真实水平,T2推一推就推出来了,T3看出是差分贪心,但不会处理modmodmod的情况 最后得分:40+100+0=140 T1 JZOJ 4786 小a ...

  3. 2019.3.9 提高B组 T1 JZOJ 4742 单峰

    DescriptionDescriptionDescription 求长度为nnn的全排列的单峰数组个数 数据范围:n≤1018n\leq 10^{18}n≤1018 SolutionSolution ...

  4. 2019.3.8 提高B组 T2 JZOJ 3055 比赛

    DescirptionDescirptionDescirption 有两个队伍A和B,每个队伍都有n个人.这两支队伍之间进行n场1对1比赛,每一场都是由A中的一个选手与B中的一个选手对抗.同一个人不会 ...

  5. JZOJ2020年8月11日提高组T3 页

    JZOJ2020年8月11日提高组T3 页 题目 Description 战神阿瑞斯听说2008年在中华大地上,将举行一届规模盛大的奥林匹克运动会,心中顿觉异常兴奋,他想让天马在广阔的天空上,举行一场 ...

  6. 【GDKOI2014】JZOJ2020年8月13日提高组T3 壕壕的寒假作业

    [GDKOI2014]JZOJ2020年8月13日提高组T3 壕壕的寒假作业 题目 Description Input Output 输出n行.第i行输出两个整数,分别表示第i份作业最早完成的时刻以及 ...

  7. JZOJ2020年8月10日提高组T3 玩诈欺的小杉

    JZOJ2020年8月10日提高组T3 玩诈欺的小杉 题目 Description 是这样的,在小杉的面前有一个N行M列的棋盘,棋盘上有N∗MN*MN∗M个有黑白棋的棋子(一面为黑,一面为白),一开始 ...

  8. JZOJ7月24日提高组T3 终章-剑之魂

    JZOJ7月24日提高组T3 终章-剑之魂 题目 题解 题意 分析 Code 题目 [背景介绍] 古堡,暗鸦,斜阳,和深渊-- 等了三年,我独自一人,终于来到了这里-- "终焉的试炼吗?就在 ...

  9. 欢乐SSL初二组周六赛【2019.5.11】

    前言 难度差异极大 成绩 只放前101010,JJJ表示初中,HHH表示高中 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC D ...

最新文章

  1. 【sparkStreaming】将DStream保存在MySQL
  2. TypeError: ‘BasePermissionMetaclass‘ object is not iterable
  3. java内存系列:测试JDK最大内存
  4. 关于 ADB 实现的说明
  5. Flask 报错 RuntimeError: No application found. Either work inside a view function or push an applicati
  6. 自行车也能做智能升级?AliOS以想象力为智慧出行带来新体验
  7. 罐中研讨会:设置JBoss BPM Suite全天研讨会
  8. 内部类及静态内部类的实例化
  9. 分享一份 sublime 的个人配置文件
  10. php 获取文件扩展名
  11. 一次搞定this和闭包
  12. ubuntu 20.04安装RTL8821CE无线网卡驱动
  13. rangecoder
  14. 视频教程-java淘宝优惠券系统二-Java
  15. 太励志!考研哈工大高数39分,但逆袭成为院士,做出诺奖级发现
  16. oracle官文查看参数介绍的路径
  17. 信客 lt;文gt; 余秋雨
  18. AWS强烈反击Elastic,欲打造自己的Elasticsearch开源产品OpenSearch
  19. 1100亿行代码!华为是如何管理的?
  20. 利用OpenXml生成Word2007文档

热门文章

  1. 网站内容采集工具介绍
  2. Unity基本认识——走进Unity
  3. 服务器显示doorstall,杀戮空间2服务器插件AdminCmdsV2.0.6设置说明
  4. 安卓软件定做-华为Mate7手机高配版和标准版的区别
  5. 【python游戏】新的一年快来变身兔兔战士打败獾守护兔兔吧~
  6. RedHat(RHEL)6.2 X64 Oracle11g X64 安装参考文档
  7. TeXstudio-粗体斜体无法显示
  8. 手把手教你使用stata制作临床决策曲线
  9. 利用FME计算椭球面积
  10. winsxs探索之组件的本质:文件与注册表