[JZOJ]2109 清兵线 题解

FIRST 题目大意
给你一些正整数,这些正整数为数轴上若干个点代表的数。现求:假设从原点出发,走m以内(包括m)的距离最多能够访问多少个点,输出m-每个点到达时已经走过的距离的累加和。


NEXT 前置结论

如图所示,首先我们假设数轴上有x,y两点,杀一个士兵的时间是tit_iti​
∵ti≡0t_i \equiv 0ti​≡0
不存在从远点跳过点yyy直接奔向点xxx存在最优解的可能性


AFTER THAT 解题思路
40分思路
排序+基于前置结论,进行dfs,普通可得40分,再优化一下可能能拿60分
100分思路
排序+动态规划
为了方便取,从小到大排序
既然不可能出现中间为断点的情况
那么我们想要最优解,我们已经死亡的士兵就一定是一个区间
状态易设:
fi,j,0f_{i,j,0}fi,j,0​表示区间iii~jjj全部已经被杀死了,当前状态杀死的是iii(左边)最大值
fi,j,1f_{i,j,1}fi,j,1​表示区间iii~jjj全部已经被杀死了,当前状态杀死的是jjj(右边)最大值

可得一个大概的转移式:
fi,j,0=max(fi+1,j,0+m−X,fi+1,j,1+m−Y)f_{i,j,0} = max(f_{i+1,j,0}+m-X,f_{i+1,j,1}+m-Y)fi,j,0​=max(fi+1,j,0​+m−X,fi+1,j,1​+m−Y)
fi,j,1=max(fi,j−1,0+m−X,fi,j−1,1+m−Y)f_{i,j,1} = max(f_{i,j-1,0}+m-X,f_{i,j-1,1}+m-Y)fi,j,1​=max(fi,j−1,0​+m−X,fi,j−1,1​+m−Y)
现在我们就是要求这个 X,YX,YX,Y分别是多少(即损耗时间)
我们可以尝试转换一个思路:

即假设你要杀kkk个人,已经杀了xxx个,那么你每走111步,另外的生命值都-1.即总可以获得的收益减少了(k−x)(k-x)(k−x)
走ttt步同理t(k−x)t(k-x)t(k−x)
带入原式得
X=(ai+1−ai)⋅(k−j+i)X=(a_{i+1}-a_i) \cdot (k-j+i)X=(ai+1​−ai​)⋅(k−j+i)
Y=(aj−ai)⋅(k−j+i)Y=(a_{j}-a_i) \cdot (k-j+i)Y=(aj​−ai​)⋅(k−j+i)
由于KKK没有,那我们直接枚举就完事了。


In The End

  1. 如果a数组里没有原点我们要补一个原点进去一起排序
  2. 要注意fff数组的特判和初始值
  3. 如果j−i+1>kj-i+1>kj−i+1>k请及时break

[JZOJ]2109 清兵线 题解相关推荐

  1. 洛谷P3647 [APIO2014] 连珠线 题解

    洛谷P3647 [APIO2014] 连珠线 题解 题目链接:P3647 [APIO2014] 连珠线 题意: 在达芬奇时代,有一个流行的儿童游戏称为连珠线.当然,这个游戏是关于珠子和线的.线是红色或 ...

  2. JZOJ 3736. 数学题(math) 题解

    JZOJ 3736. 数学题(math) 题解 题意: 给定 a ⃗ , b ⃗ \vec a , \vec b a ,b , 问 对 于 任 意 x , y ∈ Z , 且 x , y 不 同 时 ...

  3. 【JZOJ2109】清兵线【dp】

    题目大意: 题目链接:https://jzoj.net/junior/#main/show/2109 一条数轴上有nnn个特殊格子x1,x2...xnx_1,x_2...x_nx1​,x2​...xn ...

  4. 【动态规划】SSL_1322 清兵线

    题意 在一个数轴上有一些小兵,每个小兵在一个单位时间会减少一滴血量,清一个兵得到的金币为这个兵剩下的血量,求从原点如何清兵会得到尽量多的金币. 思路 因为清兵要么一直往一个方向走,要么清到一半退回来, ...

  5. 2019.5.11 提高B组 T3 nssl-1322 清兵线

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

  6. SSLOJ 1322.清兵线

    233 题目: 题意: 分析: 代码: 题目: 传送门 题意: 所有小兵都在同一直线上,我们从原点出发,每走一步所有活着的小兵的生命值都会−1-1−1 求如何使收益最大 分析: 假设自己一共杀死kkk ...

  7. 清兵线(准备特长生)

    题目: 思路: 这题我觉得有必要多讲讲,题目是给了我们三个阶段的分数,前四十分还是很好拿的,搜索加点优化就好了,后面就要用到动态了. 因为他说的事向左或向右杀,所以我可以认为他为了更加优化的答案就尽量 ...

  8. [APIO2014]连珠线 题解

    我们设初始的那个点为root.则所有的蓝色链都是形如father−now−sonfather-now-sonfather−now−son. 我们设计两个dp状态: dpi,0dp_{i,0}dpi,0 ...

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

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

最新文章

  1. OC基础-关于构造方法
  2. 飞桨第三课2020.4.2
  3. 已知一个特殊字符的 unicode 编码值,如何在 ABAP 里打印出这个特殊字符?
  4. P4643-[国家集训队]阿狸和桃子的游戏【结论】
  5. e5cc温控仪通讯参数设定_产品介绍||DeltaWiFi通讯型多功能电表DPMC520W
  6. 用python爬虫爬取无水印图片_使用python 爬虫,爬取图片
  7. Coolite Toolkit学习笔记一:AjaxEvent、AjaxMethod和Listeners
  8. python中对两个 list 求交集,并集和差集
  9. eclipse中输入@符号自动提示Annotation
  10. PS 矩形工具的使用
  11. 毫无PS痕迹 你的第一本Photoshop书pdf
  12. CMD中可执行的结束进程命令
  13. JButton与Button的区别
  14. 百度apollo自动驾驶modules\planning\tasks\optimizers\path_time_heuristic\PathTimeHeuristicOptimizer类代码详解
  15. 卸载百度软件修复服务器,快速修复win7系统笔记本卸载百度软件中心助手的解决教程...
  16. 微信小程序列表首字母排序并根据字母定位
  17. 让生活不吃亏的技巧—《谈判》|每周一本书(7)
  18. 北邮智能车仿真培训(七)—— 使用c++编写程序
  19. Scratch 飞机对战
  20. 金融硕士自学python_国际金融硕士跨专业学Python从老男孩教育开始

热门文章

  1. Python文件IO基础,看这篇文章就够了!
  2. git进阶 | 03 -如何彻底删除git中的大文件
  3. FPGA之复数乘法器的设计
  4. 大数据Topic推荐-AMiner
  5. k8s_day03_02
  6. 1.1 极限的概念【极限】
  7. WordPress如何删除页脚的“自豪地由WordPress驱动” 和添加备案信息
  8. 修复 ,Ubuntu无法开机:ACPI:Error:[_SB_.PCIO.PR05.PXSX] …………
  9. Python编程中的常见语句
  10. Win7 X64 SQL SERVER 2000企业管理器无法建立新表