AtCoder Beginner Contest 128 F - Frog Jump
题意
有一只青蛙,有\(0, 1, \cdots, N - 1\)个荷叶。每个荷叶上有权值\(s_i\)。
- 选定\(A\), \(B\),初始分数为\(0\)。
当前位置为\(x\): - 对于\(y = x + A\):
- 如果\(y = N - 1\),游戏结束。
- 如果\(y \neq N - 1\),但是\(y\)这个荷叶存在,那么分数增加\(s_i\),并且这片荷叶消失。
- 如果\(y \neq N - 1\),但是\(y\)这个荷叶不存在,那么分数减去\(10^{100}\),游戏结束。
- 对于\(y = x - B\):
- 如果\(y = N - 1\),游戏结束。
- 如果\(y \neq N - 1\),但是\(y\)这个荷叶存在,那么分数增加\(s_i\),并且这片荷叶消失。
- 如果\(y \neq N - 1\),但是\(y\)这个荷叶不存在,那么分数减去\(10^{100}\),游戏结束。
问选定最优的\(A\)、\(B\)的情况下,得到的最高分数为多少?
思路
我们考虑,选定了\(A\)、\(B\)后,青蛙的行走路线为:
0, A, A - B, A + (A - B), 2(A - B), \cdots, K(A - B), A + K(A - B)
\end{eqnarray*}
\]
我们令\(C = A - B\):
0, A, C, A + C, 2C, \cdots, KC, A + KC
\end{eqnarray*}
\]
显然有:\(A + KC = N - 1\):
0, N - 1 - KC, C, N - 1 - (K - 1)C, 2C, \cdots, KC, N - 1
\end{eqnarray*}
\]
那么当\(K\)、\(C\)确定的时候,行走路线就已经确定。
并且有一个限制条件为\(KC < N\),那么显然枚举\(K\)、\(C\)是\(O(nlogn)\)的。
并且我们发现,当我们固定\(C\),递增\(K\)的时候,行走路线的变化是这样的:
&&0, N - 1\\
&&0, N - 1 - C, C, N - 1\\
&&0, N - 1 - 2C, C, n - 1 - C, 2C, N - 1\\
\end{eqnarray*}
\]
每次增加的是\(N - 1 - KC\)和\(KC\),这两个点,只需要加上就好了,并且要注意判断是否走到重复的点上了。
代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define N 100010
int n;
ll s[N];
int used[N];
int main() {
while (scanf("%d", &n) != EOF) {
for (int i = 0; i < n; ++i) {
scanf("%lld", s + i);
}
memset(used, 0, sizeof used);
ll res = 0;
for (int C = 1; C <= n; ++C) {
ll tmp = 0;
for (int k = 1; 1ll * k * C < n; ++k) {
int a = k * C;
int b = n - 1 - k * C;
int A = b, B = b - C;
if (A <= 0 || B <= 0) break;
if (a < 0 || a >= n || b < 0 || b >= n || a == b) break;
if (used[a] == C || used[b] == C) {
break;
}
used[a] = C;
used[b] = C;
tmp += s[a];
tmp += s[b];
res = max(res, tmp);
}
}
printf("%lld\n", res);
}
return 0;
}
AtCoder Beginner Contest 128 F - Frog Jump的更多相关文章
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- AtCoder Beginner Contest 261 F // 树状数组
题目链接:F - Sorting Color Balls (atcoder.jp) 题意: 有n个球,球有颜色和数字.对相邻的两球进行交换时,若颜色不同,需要花费1的代价.求将球排成数字不降的顺序,所 ...
- AtCoder Beginner Contest 260 F - Find 4-cycle
题目传送门:F - Find 4-cycle (atcoder.jp) 题意: 给定一个无向图,其包含了S.T两个独立点集(即S.T内部间的任意两点之间不存在边),再给出图中的M条边(S中的点与T中的 ...
- AtCoder Beginner Contest 253 F - Operations on a Matrix // 树状数组
题目传送门:F - Operations on a Matrix (atcoder.jp) 题意: 给一个N*M大小的零矩阵,以及Q次操作.操作1(l,r,x):对于 [l,r] 区间内的每列都加上x ...
- AtCoder Beginner Contest 249 F - Ignore Operations // 贪心 + 大根堆
传送门:F - Keep Connect (atcoder.jp) 题意: 给定长度为N的操作(ti,yi). 给定初值为0的x,对其进行操作:当t为1时,将x替换为y:当t为2时,将x加上y. 最多 ...
- AtCoder Beginner Contest 247 F - Cards // dp + 并查集
原题链接:F - Cards (atcoder.jp) 题意: 给定N张牌,每张牌正反面各有一个数,所有牌的正面.反面分别构成大小为N的排列P,Q. 求有多少种摆放方式,使得N张牌朝上的数字构成一个1 ...
- AtCoder Beginner Contest 133 F Colorful Tree
Colorful Tree 思路: 如果强制在线的化可以用树链剖分. 但这道题不强制在线,那么就可以将询问进行差分,最后dfs时再计算每个答案的修改值, 只要维护两个数组就可以了,分别表示根节点到当前 ...
- AtCoder Beginner Contest 171-175 F
171 F - Strivore 直接把初始字符当成隔板,统计的方案数会有重复 为了避免重复情况,规定隔板字母尽可能最后出现,即在隔板字母后面不能插入含隔板字母的字符串 所以在隔板字母后插入的字符只有 ...
- AtCoder Beginner Contest 182 F
F - Valid payments 简化题意:有\(n\)种面值的货币,保证\(a[1]=1,且a[i+1]是a[i]的倍数\). 有一个价格为\(x\)元的商品,付款\(y\)元,找零\(y-x\ ...
随机推荐
- 剑指offer(3)——二维数组中的查找
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 思路: 首先选取数组中右上 ...
- 怎样理解构造函数中的return语句
因为构造函数也是一个函数, 自然也可以有return语句, 不过和一般函数不太一样的是, 在构造函数中如果return的是一个对象, 则会直接返回这个对象, 如果return 的不是一个对象, 那在n ...
- HTML中关于动态创建的标签无法绑定js事件的解决方法:.on()方法的 [.selector]
在前端页面的时候,会经常遇到用JavaScript动态创建出来的Button按钮或其他标签无法使用点击事件的问题.如下代码,使用jquery在body中动态创建一个class为demo的Button按 ...
- Express无法解析POST请求的JSON参数
在用Express和MongoDB搭建后端开发环境时,可能会利用测试工具发送带有JSON格式数据的POST请求,那么这时就要利用request.body获取json数据,但此时可能遇到json无法解析 ...
- mysql5.7解压包安装教程
下载mysql5.7解压包Download MySQL Community Server,解压文件.https://dev.mysql.com/downloads/mysql/ 步骤1:新建my.in ...
- ubuntu打开终端
虚拟终端 Ctrl+Alt+T组合键 实际终端 Ctrl+Alt+F1 ~ F6组合键 可以在登录界面直接切换 退出终端 Ctrl+Alt+F7组合键
- 4.Java集合-ArrayList实现原理及源码分析
一.ArrayList概述: ArrayList 是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存 ArrayList不是线程安全的,只能用在单线程的情况 ...
- html5+css3 background-clip 技巧
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 中国大学MOOC课程信息之数据分析可视化二
版权声明:本文为博主原创文章,转载 请注明出处:https://blog.csdn.net/sc2079/article/details/82318571 - 写在前面 本篇博客继续对中国大学MOOC ...
- 有关PHPstorm的git环境的配置和git密钥的生成总结
phpstorm上配置git环境的配置总感觉很简单,没发现看似简单的东西浪费我好多时间.我在网上查了一下关于phpstorm的git环境的配置没有具体的总结 所以我把自己的配过程简单总结了一下 接下来 ...