日常扯废话:

话说题解里的思路都写得真的是很奈斯啊

但是

代码看不懂确实让人头疼(可能是我太弱了)

就像题解里的第一篇题解代码简洁但是属实看不明白

趁着学姐刚给我讲了知识还热乎赶紧给泥萌说说哈

正文:

题面

思路就是贪心,使劲贪。

其实我主要是来补充一下具体的代码解释

for (int i = n; i >= ; i--)
maxsum[i] = max (maxsum[i + ], * e[i].s + e[i].v);

这个maxsum数组存储了v由大到小, 注意是要倒着存储的。关于为什么V要从大到小因为我们有一个前缀和啊, 嗯?前缀和?对的!看 后边就懂啦!

for (int i = ; i <= n; i++)
sumv[i] = sumv[i - ] + e[i].v;

这就是我们的前缀和数组, 这个数组是存储了我们从起点走到i这个位置的时候所有的经过过的人家推销所需要的疲劳值

for (int i = ; i <= n; i++)
maxs[i] = max (maxs[i - ], e[i].s);

而这个数组则存储了当前走到的最远距离

for (int i = ; i <= n; i++)
printf ("%d\n", max (sumv[i - ] + maxsum[i], sumv[i] + * maxs [i]));

这两行可以说是我最难理解的地方了

考虑两种情况, 第一种情况前i - 1个位置所有拜访过的疲劳值再加上最大的V, 第二种情况则为所有的v再加上最远的距离的两倍

为什么会是这两种情况, 因为最大的v可能与最远的距离不同(我的语文常年垫底), 自己举一个例子可能会更直观。

干净一点的代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = ;
int n, maxsum[N], maxs[N], sumv[N];
struct node {
int s, v;
}e[N];
bool cmp (node x, node y) {
return x.v > y.v;
}
int main () {
scanf ("%d", &n);
for (int i = ; i <= n; i++)
scanf ("%d", &e[i].s);
for (int i = ; i <= n; i++)
scanf ("%d", &e[i].v);
sort (e + , e + + n, cmp);
for (int i = n; i >= ; i--)
maxsum[i] = max (maxsum[i + ], * e[i].s + e[i].v);
for (int i = ; i <= n; i++)
maxs[i] = max (maxs[i - ], e[i].s);
for (int i = ; i <= n; i++)
sumv[i] = sumv[i - ] + e[i].v;
for (int i = ; i <= n; i++)
printf ("%d\n", max (sumv[i - ] + maxsum[i], sumv[i] + * maxs [i]));
return ;
}

谢谢收看, 祝身体健康!

最新文章

  1. 基于tiny4412的Linux内核移植 ---- 調試方法
  2. STM32固件库3.5+uCOS2.86移植(转自暴走的工程师)
  3. Xposed Module开发教程1
  4. Ubuntu 下安装Mysql 需要注意的地方.
  5. LAMP一键安装脚本 from:秋水逸冰
  6. 《Invert》开发日志03:一些想法
  7. Python入门1
  8. 有用的shell命令
  9. ZYKeyboardUtil 全自动处理键盘遮挡事件
  10. Lottie 动画里有图片怎么办?设计师小姐姐也能帮你减少开发量!
  11. mac 10.12 sierra 机械键盘+ratm可编程鼠标记录
  12. CMUSphinx Learn - Basic concepts of speech
  13. setTimeout原来有这种用途
  14. C语言——第四次作业(2)
  15. SyntaxError: Non-ASCII character &#39;\xe5&#39; in file index.py on line 6, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
  16. NSUserDefaults数据存储
  17. ubuntu应用商店打不开怎么办
  18. Win10开发笔记(一):一些VS2015中可能遇到的问题
  19. ffmpeg第三方库编译记录
  20. python爬虫25 | 爬取下来的数据怎么保存? CSV 了解一下

热门文章

  1. c#读取数据库bool值
  2. Linux下通过md5sum生成MD5文件&amp;校验MD5
  3. django中navie时间和aware时间详解
  4. Jmeter websocket插件安装与使用
  5. Mysql关键字Explain 性能优化神器
  6. 浅谈Object.prototype.toString.call()方法
  7. 如何显示IntelliJ IDEA工具的Run Dashboard功能(转)
  8. Beego 学习笔记二:第一个项目
  9. APS系统如何让企业实现“多赢”?看高博通信是怎么做的
  10. mybatis + oracle,出现ORA-01461:仅能绑定要插入LONG列的LONG值