题目链接

https://atcoder.jp/contests/agc030/tasks/agc030_b

题解

细节好题。。
首先假设第一步往右走,那么可以发现当拐弯的次数一定时路径是唯一的
于是可以枚举这个值
然后很烦的是枚举之后要分奇偶讨论。。
最后再翻过来做一遍处理第一步往左走就行了
时间复杂度\(O(n)\)

代码

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define llong long long
using namespace std;void read(int &x)
{int f=1;x=0;char s=getchar();while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}x*=f;
}const int N = 2e5;
llong a[N+3];
llong s[N+3];
int n; llong m,ans;void solve()
{s[0] = 0ll; for(int i=1; i<=n; i++) s[i] = s[i-1]+a[i];for(int i=1; i<=n; i++){llong tmp;if(i&1){int x = (i-1)>>1;tmp = (m*x-(s[n]-s[n-x]))*2+a[n-x]+(s[n-x-1]-s[n-x-x-1])*2;}else{int x = i>>1;tmp = (m*(x-1)-(s[n]-s[n-x+1]))*2+(m-a[n-x+1])+(s[n-x]-s[n-x-x])*2;}ans = max(ans,tmp);}
}int main()
{scanf("%lld%d",&m,&n);for(int i=1; i<=n; i++) scanf("%lld",&a[i]);solve();for(int i=1; i<=n; i++) a[i] = m-a[i];reverse(a+1,a+n+1);solve();printf("%lld\n",ans);return 0;
}

AtCoder AGC030B Tree Burning相关推荐

  1. AGC 030 B - Tree Burning

    B - Tree Burning 链接 题意: 一个长度为L的环,有n个位置上有树,从0出发,每次选择一个方向(顺时针或者逆时针),一直走,直到走到一棵树的位置,烧掉这棵树,重复这个过程,直到没有树. ...

  2. AtCoder AGC029F Construction of a Tree (二分图匹配)

    题目链接 https://atcoder.jp/contests/agc029/tasks/agc029_f 题解 考虑如何才能构成一棵树:显然有一个必要条件是对于每个点\(u\)来说,整张图所有的边 ...

  3. AtCoder AGC014E Blue and Red Tree (启发式合并)

    题目链接 https://atcoder.jp/contests/agc014/tasks/agc014_e 题解 完了考场上树剖做法都没想到是不是可以退役了... 首先有一个巨难写的据说是\(O(n ...

  4. AtCoder Regular Contest 063 E - Integers on a Tree 构造 + 二分图染色

    传送门 题意: 给你一颗nnn个点的树,初始的时候某些点有权值pip_ipi​,现在你需要给没给定的点赋一个权值,使得任意相邻点权值之差的绝对值等于111,若无解输出NoNoNo. 1≤n≤1e5,1 ...

  5. 2018.09.22 atcoder Integers on a Tree(构造)

    传送门 先考虑什么时候不合法. 第一是考虑任意两个特殊点的权值的奇偶性是否满足条件. 第二是考虑每个点的取值范围是否合法. 如果上述条件都满足的话就可以随便构造出一组解. 代码: #include&l ...

  6. Atcoder ARC101 Ribbons on Tree

    题解: 前面牛客网的那个比赛也有一道容斥+dp 两道感觉都挺不错的 比较容易想到的是 f[i][j]表示枚举到了i点,子树中有j个未匹配 这样的话我们需要枚举儿子中匹配状态 这样是n^2的(这是个经典 ...

  7. 【做题记录】AtCoder AGC做题记录

    做一下AtCoder的AGC锻炼一下思维吧 目前已做题数: 127 总共题数: 269 每一场比赛后面的字母是做完的题,括号里是写完题解的题 AGC001: ABCDEF (DEF) AGC002: ...

  8. NOMURA Programming Contest 2021(AtCoder Regular Contest 121)

    文章目录 A - 2nd Greatest Distance B - RGB Matching C - Odd Even Sort D - 1 or 2 E - Directed Tree F - L ...

  9. Atcoder Contest069F:Flag

    题目:https://arc069.contest.atcoder.jp/tasks/arc069_d 题意就是让你在n对数字每一对都选一个数使得任意两个数做差的绝对值最小值最大. 关系显然是一个2- ...

最新文章

  1. linux特殊符号大全
  2. mysql tcp ip_通过TCP/IP连接Mysql数据库
  3. 软件项目管理0628:出差面临的问题
  4. openjdk-7支持版本_长期支持对OpenJDK意味着什么?
  5. 浅析Nginx 正向代理与反向代理
  6. 【转载】Weka入门教程
  7. 部署可道云_可道云-快速搭建个人用云网盘
  8. Spring源码学习笔记:起源发展和核心模块主要职能
  9. vitualbox更改安装的位置不放在系统盘
  10. OpenCV系统学习(基本了解完)
  11. PTA 7-18(查找) 新浪微博热门话题(30 分) 30分代码 (已更新)
  12. UIKit的简单入门介绍
  13. 如何获取天猫/淘宝商品历史价格信息
  14. 【canvas画图】画一个彩虹
  15. 无氧铜的网线跟纯铜的网线有什么区别?
  16. c语言求n个数最大最小值,c语言 如何求n个数的最大值 最小值
  17. 【OMNET+Veins+SUMO】【视频】车联网仿真框架搭建指南
  18. JMeter逻辑控制器 详解
  19. 畅言普通话软件测试准确率高吗,畅言普通话测试准确吗?畅言普通话准确度介绍...
  20. vue路由跳转清空数据

热门文章

  1. 吴恩达《构建机器学习项目》精炼笔记(1)-- 机器学习策略(上)
  2. 台湾大学林轩田机器学习基石课程学习笔记1 -- The Learning Problem
  3. 动态服务器值 回放报错 没有关联到_性能测试每天两个知识点-web性能脚本回放不成功的解决方法...
  4. dcmtk程序包综述(1)
  5. 一个基于xml的超级orm框架-世界是由懒人创造的。
  6. Delphi 105错误
  7. wireshark相关协议详解和nc命令建立对话
  8. 25匹马,找出最快的3匹,但是只有5个赛道,每次比赛只能得到5匹马的速度排序,那么最少需要多少次比赛
  9. 代码段间转移控制时的特权级检查(JMP/CALL)——《x86汇编语言:从实模式到保护模式》读书笔记28
  10. int指令---汇编学习笔记