cf:D. The Enchanted Forest【贪心 + 模拟 + 构造】
分析
找规律然后构造才是王道(分类讨论)
如果k小于等于n,说明不会来回走,所以不会影响增量,只需要找到最大的连续k个即可
可用accumulate操作,注意如果initial = 0的话,最后是会有n + 1 个位置的,注意最后多加一个1
然后就可以求得最大的连续的k个和为maxn
然后这时候增量蘑菇的采集个数为0加到k - 1就是k ( k - 1) // 2
如果k大于n,必定会有重复走的地方
为了使得收割的增量最大,最后一定要停在端点(否则不能享受最贪心的增量)
由于一定会回头走,我们只关注它最后一次从左往右
停在最右边,每个点k分钟长k个果子,最右边有1个收不到,最左边有n个收不到
首先sum(a)必定可以收完,然后总共增量果子有n * k个,收不到的果子有1加到n也就是n(n + 1) // 2
ac code
from itertools import accumulatefor _ in range(int(input())):n, k = list(map(int, input().split()))a = list(map(int, input().split()))if k == n:print(sum(a) + n * (n - 1) // 2)elif k < n:# 不会回头# 增量不影响# 所以找最大的连续k个即可temp1 = k % npreSum = list(accumulate(a, initial=0))maxn = 0for i in range(n - temp1 + 1):maxn = max(maxn, preSum[i + temp1] - preSum[i])# temp1 = k# 增量为0 +... + (k - 1)可以print(maxn + temp1 * (temp1 - 1) // 2)else:# 来回走# 为了增量最大,最后一定挺在端点(否则不能享受最贪心的增量)# 初始的都可以收集# 只关注它最后一次从左往右# 停在最右边,每个点k分钟长k个果子,最右边有1个收不到,最左边有n个收不到print(sum(a) + k * n - n * (n + 1) // 2)
总结
构造 + 找规律
分类讨论 (n和k,原本和增量)
考察了一波数学解题能力
还有accumulate的坑点
cf:D. The Enchanted Forest【贪心 + 模拟 + 构造】相关推荐
- CF - 789A. Anastasia and pebbles - 贪心+模拟
1.题目描述: A. Anastasia and pebbles time limit per test 1 second memory limit per test 256 megabytes in ...
- Codeforces-1687 A: The Enchanted Forest 【贪心、简单数学】
Codeforces-1687 A: The Enchanted Forest 题目 题目截图 样例描述 题目大意 给定一个长度为 n n n 的数组 { a i } \{a_i\} {ai}. ...
- D. The Enchanted Forest
传送门: D. The Enchanted Forest 题意:有一条长为n的线段,每个点上起始有a[i]个蘑菇.你可以选择起始点x.你有k分钟,每分钟以下事件将会发生: 1.从点x走到点y(abs( ...
- uva 10977 Enchanted Forest 魔幻森林
应该是比较冷门的一道题,只搜到了英文题解hhhh,难度不大,所以这次来写一个认真的题解报告. You are Ash, the famous Pokemon trainer. To become th ...
- c++实现贪心法构造最大整数问题
c++实现贪心法构造最大整数问题 问题描述: 问题描述: 求给定非负整数序列中的数字排列成的最大数字. 例如: 输入:{50,2,1,9} 输出:95021 思路: 采用贪心算法,先将所有整数转换成字 ...
- c++ 贪心法构造货币统计问题
c++ 贪心法构造货币统计问题 问题描述: 问题描述: 某单位为每个员工发工资(精确到元),为了保证不要临时兑换零钱, 且取款的张数最少,取工资前要统计出所有职工的工资所需各种币值(100,50,20 ...
- 校内hu测(10.6T2,T3)(乱搞+贪心+模拟)
@liu_runda T2.便(then) [题目描述] 给出一个R*C的棋盘.共有R行C列,R*C个格子.现要在每个格子都填一个非负整数.使得任意一个2*2的正方形区域都满足这样的性质:左上角的数字 ...
- 【NOIP2013】积木大赛(差分数组,贪心模拟)
题目 原题链接 问题描述 分析 直观思路--贪心模拟:每次都处理最长正整数区段. 以[2,3,4,1,2][2,3,4,1,2][2,3,4,1,2]为例: [2,3,4,1,2]⟹[1,2,3,0, ...
- The Enchanted Forest(思维/前缀和)
The Enchanted Forest 传送门 Problem - 1687A - Codeforces 1600 思路 分类,如果k<=n,那很好想,就挑最大的连续子段和就行:当k>n ...
最新文章
- 这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍
- zh-cn 与 zh-hans 是什么关系、有什么区别
- mysqldump 忽略视图_mysqldump的使用--解决不能导出视图的问题
- django实现web分页的三种方法
- 自动驾驶——多传感器融合的学习笔记
- 第三章:什么是组织结构
- windows下利用pybind11生成pyd库
- 最小生成树、二分图问题概述
- 张宇1000题高等数学 第十八章 多元函数积分学(一)
- php5.0 cms安装教程,小浣熊CMS5.0漫画系统安装教程和采集教程
- MT【109】线面角最大时为二面角平面角
- Copy Elision
- Android ScrollView scrollbarStyle 样式详解
- Linux: 硬件时钟, 系统时钟, 网络时钟, 时区修改和同步
- 现如今99%的区块链都是空气项目
- EEPROM(24C64)的IIC通讯调试记录要点,使正点原子例程兼容性更好
- 常见大数据学习网站总结(不定期更新)
- Maven-Archetype Catalog
- icloud无法注销,icloud服务中keyChain钥匙串无法关闭问题的解决。
- 24号准备去北京.Net俱乐部讲课