博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ARC100D Equal Cut
阅读量:6632 次
发布时间:2019-06-25

本文共 773 字,大约阅读时间需要 2 分钟。

分析

首先我们想到的肯定是n^3暴力枚举,但这显然不行。然后我们想到的就是二分了,但这题没有什么单调性,所以二分也不行。这时候我就想到了先枚举找出p2的位置再在它的左右两边找到p1和p3,但是良心的样例2告诉了我这样是不行的,因为让p2的位置最优并不意味着整体最优。之后我发现可以枚举p2,在这个基础上枚举p1和p3,因为如果之前p1或p3向右移了几位那它在之后一定不会向左移,这样我们有优化了一小点。根据这个思路我们不难再联想到如果p1+1的答案不如现在的p1优,那p1+2也一定不会更优,这个结论易证。所以我们便得到了一个O(n)做法。

代码

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define sp cout<<"---------------------------------------------------"<
>n; for(i=1;i<=n;i++){ scanf("%lld",&x); pre[i]=pre[i-1]+x; } p1=1,p2=2,p3=3; long long ans=inf; for(p2;p2

转载于:https://www.cnblogs.com/yzxverygood/p/9346749.html

你可能感兴趣的文章
c++ qt 组播总结
查看>>
RobotFramework BuiltIn关键字笔记
查看>>
Spring整合JMS(四)——事务管理
查看>>
自己封装的golang 操作数据库方法
查看>>
Spring IOC启动流程学习(一)
查看>>
python tornado
查看>>
Android 自动换行的LinearLayout
查看>>
MacBook Pro电池校正
查看>>
初级python学习记录
查看>>
Scrapy爬虫 -- 02
查看>>
使用Kendo UI Web创建自定义组件(基础篇)
查看>>
GuozhongCrawler git地址
查看>>
我来了
查看>>
前端js正则的一个实例:过滤“rm -rf /”
查看>>
DOS窗口TELNET登陆终端批量执行命令
查看>>
Linux 线程实现机制分析
查看>>
转:Android世界的15款开源的游戏开发引擎
查看>>
多线程访问同一个可变变量,需增加同步机制
查看>>
apdplat 多表查询属性设置
查看>>
Matlab.NET混合编程技巧之——直接调用Matlab内置函数(附源码)
查看>>