The Enchanted Forest

传送门 Problem - 1687A - Codeforces 1600

思路

分类,如果k<=n,那很好想,就挑最大的连续子段和就行;当k>n时,显然就要全部选择数组中的元素,这时候问题就变成了怎么走才能最大化蘑菇数量。

然后发现在中间位置开始向左边或者右边移动能最大化取到的蘑菇。设周期为T,我一开始先推出了T=1,T=2,T>=3的情况下的最大采蘑菇数量。但觉得很繁琐,处理起来非常麻烦,感觉正常思路应该不是这样,于是看了Tutorial的思路。

题解思路在于怎么丢下最少的蘑菇,而我是推出怎么找到最多的蘑菇。事实上推出的答案没有经过严谨论证,为什么要从中间开始找,我是猜的。

感觉题解思路清爽简洁。我的理解是把它想象成环形的,无论怎么一直走,停在那里,必然会有(n+1)*n/2个蘑菇不能被收割。总共的蘑菇数目是k*n。最终答案就是k*n-(1+n)*n/2+sum[n]。

这个题目告诉我,处理起来特别复杂基本上有问题或者虽然对但是没到点子上;换个角度看问题。

#include <bits/stdc++.h>
typedef long double ld;
typedef long long ll;
#define pb push_back
#define mk make_pair
#define mt make_tuple
#define eb emplace_back
#define pob pop_back
#define rz resize
#define mem(a,b) memset(a,b,sizeof(a))
#define all(a) (a).begin(),(a).end()
#define rall(a) (a).rbegin(),(a).rend()
#define debug(a) cout<<#a<<"="<<a<<endl;
#define qwe(i,a,b) for(int i=a;i<=b;i++)
#define ewq(i,a,b) for(int i=a;i>=b;i--)
inline ll rr(){ll f=1,x=0;char ch;do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');return f*x;}
using namespace std;
const ll INF=0x3f3f3f3f,inf=0x3f3f3f3f3f3f3f;
const ll mod[2]={int(1e9 + 7), 10007};
const int base[2]={29,31};
const int maxn=2e5+6;
ll qpow(ll x,ll n){ll ans=1;while(n>0){if(n&1)ans=ans*x%mod[1];x=x*x%mod[1];n>>=1;}return ans;}ll n,k;
ll a[maxn],sum[maxn];
void init(/* arguments */) {n=rr(),k=rr();for(int i=1;i<=n;i++) {a[i]=rr();sum[i]=a[i]+sum[i-1];}
}
ll maxi_sum() {ll ans=0;for(int i=1;i+k-1<=n;i++) {ans=max(1ll*sum[i+k-1]-sum[i-1],ans);}return ans;
}
int main(int argc, char const *argv[]) {int t=rr();while (t--) {init();if(k<=n) {ll ans=maxi_sum();ans+=((k*(k-1))>>1);std::cout << ans << '\n';continue;}std::cout << k*n-(1+n)*n/2+sum[n] << '\n';}return 0;}

The Enchanted Forest(思维/前缀和)相关推荐

  1. uva 10977 Enchanted Forest 魔幻森林

    应该是比较冷门的一道题,只搜到了英文题解hhhh,难度不大,所以这次来写一个认真的题解报告. You are Ash, the famous Pokemon trainer. To become th ...

  2. D. The Enchanted Forest

    传送门: D. The Enchanted Forest 题意:有一条长为n的线段,每个点上起始有a[i]个蘑菇.你可以选择起始点x.你有k分钟,每分钟以下事件将会发生: 1.从点x走到点y(abs( ...

  3. Codeforces-1687 A: The Enchanted Forest 【贪心、简单数学】

    Codeforces-1687 A: The Enchanted Forest 题目 题目截图 样例描述 题目大意   给定一个长度为 n n n 的数组 { a i } \{a_i\} {ai​}. ...

  4. CodeForces-1016C Vasya And The Mushrooms(模拟+思维+前缀和的前缀和) 解题报告 Apare_xzc

    CodeForces-1016C Vasya And The Mushrooms(模拟+思维+二重前缀和 ) 解题报告 xzc 2019/4/7 这周周赛的C题:wyt学姐的恶意   这道题周赛的时候 ...

  5. 2019牛客网暑期多校赛第七场C题Governing sand --思维+前缀和

    链接:https://ac.nowcoder.com/acm/contest/887/C 来源:牛客网 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 65536K,其他语言13107 ...

  6. 126. 最大的和【思维 前缀和】

    很容易的想到,用二维前缀和,暴力的4层for枚举左上角和右下角的下标. 这样肯定会超时. 我们不妨先考虑一维的情况,一个数组,如何求最大的矩形. 这是一个很简单的DP f[i]=max(f[i-1], ...

  7. Codeforces Round #632 (Div. 2) C. Eugene and an array 思维 + 前缀和

    传送门 文章目录 题意: 思路: 题意: 给定一个长度为nnn的序列aaa,定义一段区间为好区间是这段区间的所有连续子区间的和都不为000,求好区间的个数. 思路: 套路题,定义aia_iai​的前缀 ...

  8. C. k-Amazing Numbers(思维前缀最小值+枚举相同数距离)

    https://codeforces.com/contest/1417/problem/C 大晚上的想岔了.. a1,a2,-,an (1≤ai≤n)这个范围其实就在暗示要枚举出现的数.但是我不知道怎 ...

  9. Balanced Substring CodeForces - 873B (思维+前缀和)

    Balanced Substring CodeForces - 873B You are given a string s consisting only of characters 0 and 1. ...

最新文章

  1. Xcode 创建.a和framework静态库(转)
  2. pytorch比较Tensor
  3. java note项目_note(java)
  4. OpenGL toon shading卡通着色的实例
  5. Java虚拟机JVM简单理解
  6. C++ STL string迭代器的使用
  7. pillow api
  8. gui界面设计心得体会 python_关于GUI的一点心得体会
  9. 在内核中如何获得系统的日期和时间
  10. PHP学习笔记--函数
  11. ApacheCon Asia 2022 正式启动,数据流专题 Call For Speaker
  12. Join的实现步骤 以及连接的概念
  13. 动态规划之马拉车算法(Python解法)
  14. cad修改快捷键_CAD快捷键,提高绘图速度
  15. 邮件群发系统 php,QQ邮箱群发PHP源码
  16. i春秋:日益增多的企业重要资料外泄
  17. QT 如何计算中英文字符串的长度
  18. php nbb,NBB增大膏管用吗有副作用吗?
  19. It's a test
  20. foobar2000 1.4.4 正式版发布

热门文章

  1. 执行链java_java 方法调用链
  2. 进销存管理系统源码|ERP源码开发
  3. nanovna使用说明_陌筱镜头附件其他 适用于NanoVNA 矢量网络分析仪 天线分析仪 短波 MF HF VHF UHF 天分【价格 图片 品牌 报价】-苏宁易购东运数码专营店...
  4. D2Admin 7月份更新内容: cli3以及更方便的全局控制等
  5. 装载问题 | 分支限界法(限上界)
  6. json to csv java_在Java中将JSON转换为XLS / CSV
  7. iOS 16 新 API 和功能
  8. <p>标签内容超出显示三个点
  9. 5G资费其实已经大幅下降,消费者不愿用5G在于信号太差了
  10. Hive LAG函数分析