[Agc030B]Tree Burning_贪心
2024-09-05 04:41:28
Tree Burning
题目链接:https://atcoder.jp/contests/agc030/tasks/agc030_b
数据范围:略。
题解:
开始以为是左右左右这样,发现过不去样例。
看了样例之后,觉得是:看左边右边哪个比较长,走长的那个。
发现过了第一个样例,过不去第二个了....
看了看第二个样例,又画了画第三个样例,加上枫哥在给我这道题之前的提示:你要大胆猜啊...
发现:一定是先往一个方向连续走几个,然后左右横跳。
这个就对了,用数学归纳法容易证明。
所以我们只需要开始逆时针连续走了多少个,然后用什么前缀和啥的随便求一求就好了。
求完了之后,把序列反转再来一次即可。
代码:
#include <bits/stdc++.h> #define N 1000010 using namespace std; typedef long long ll; char *p1, *p2, buf[100000]; #define nc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2) ? EOF : *p1 ++ ) int rd() {
int x = 0, f = 1;
char c = nc();
while (c < 48) {
if (c == '-')
f = -1;
c = nc();
}
while (c > 47) {
x = (((x << 2) + x) << 1) + (c ^ 48), c = nc();
}
return x * f;
} ll m; int n; ll a[N]; ll bfr[N], ans; void solve() {
bfr[0] = 0;
for (int i = 1; i <= n; i ++ ) {
bfr[i] = bfr[i - 1] + a[i];
}
for (int i = 1; i <= n; i ++ ) {
ll mdl;
if (i & 1) {
int x = (i - 1) >> 1;
mdl = ((ll)m * x - (bfr[n] - bfr[n - x])) * 2 + a[n - x] + (bfr[n - x - 1] - bfr[n - x - x - 1]) * 2;
}
else {
int x = i >> 1;
mdl = (m * (x - 1) - (bfr[n] - bfr[n - x + 1])) * 2 + ((ll)m - a[n - x + 1]) + (bfr[n - x] - bfr[n - x - x]) * 2;
}
ans = max(ans, mdl);
}
} int main() {
m = rd(), n = rd();
for (int i = 1; i <= n; i ++ ) {
a[i] = rd();
}
solve();
for (int i = 1; i <= n; i ++ ) {
a[i] = m - a[i];
}
reverse(a + 1, a + n + 1);
solve();
cout << ans << endl ;
return 0;
}
最新文章
- Redis 哨兵模式实现主从故障互切换
- 根据UIColor对象,获取对应的RGBA值
- iOS--APP 登录界面图(xuer)
- hdu 4794 FIb求循环节
- ORACLE 11g R2数据库安装硬件环境要求
- SAP-MM:发票、贷方凭证、事后借记、后续贷记
- Linux高性能server规划——多进程编程
- CF #April Fools Day Contest 2016 E Out of Controls
- Oracle DECODE函数的用法详解
- Django学习之十三:提高页面开发效率减少冗余的模板系统
- win10下安装Cygwin配置gcc编译环境
- 微信小程序wx.uploadFile 上传文件 的两个坑
- 分布式事务(二)Java事务API(JTA)规范
- Javascript中函数提升和变量提升
- s3存储桶:s3可扩展的云存储
- Echarts饼图显示模板
- vue-cli初始化一个项目
- Java(20~24)
- css长度
- Python爬虫之Cookie和Session
热门文章
- JAVA类的无参方法
- 【线性代数】6-2:对角化(Diagonalizing a Matrix)
- IDEA算法导包后 import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey;报错
- Jmeter Web 性能测试入门 (三):Jmeter 常用组件说明
- 使用iptables为docker容器动态添加端口映射
- 解决 Windows启动时要求验证
- Druid Monitor监控Java Web和Java SE项目
- REPLACE 语法
- PHPCMS get SQL 返回单条的办法
- centos 7设置limit,不生效问题