Luogu P4105 [HEOI2014]南园满地堆轻絮
最小化最大值,一眼就能看出来要二分。
我们先通过题目中花里胡哨的方法构造出数据,然后因为题目中修改次数无限,随意修改,我们只要求修改差值的最大值,也就是说我们只需要维护最大值即可。我们只要找到差值最大的逆序对,答案就是最大的逆序对的一半。因为作为逆序对,前面的大于后面,差值最大的两个最终必须都要相等(因为要求最后的序列非严格单调递增,可以相等),那么我们不论是高的降低,还是低的增加,需要改的都是这个差值,肯定是一半最优(就是不管怎么说那个最高的也就是需要修改幅度最大的最后一定要高度等于它后面最低的才能满足整个序列非严格单调递增)。
这样我们就可以O(n)O(n)O(n)解决。
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>using namespace std;
typedef long long ll;
const int N=5e6+10;
int n;
ll a[N];
ll maxx;
int sa, sb, sc, sd;
ll mod;
ll res;
ll f(ll x){return (sa * x % mod * x % mod * x % mod + sb * x % mod * x % mod + sc * x % mod + sd) % mod;
}
int main(){cin >> n>> sa >> sb >> sc >> sd >> a[1] >> mod;maxx = a[1];for(int i = 2;i <= n;i ++){a[i] = (f(a[i-1]) + f(a[i-2])) % mod;res = max(res, maxx - a[i]);maxx = max(maxx, a[i]);}cout << (res + 1) / 2;return 0;
}
当然我们也可以用二分解答:
求一个最小的x,使得对于所有的i,有
∣Ai−Bi∣≤x|A_i-B_i|\le x∣Ai−Bi∣≤x
Ai−Bi≤x,Bi−Ai≤xA_i-B_i\le x,B_i-A_i\le xAi−Bi≤x,Bi−Ai≤x
Ai−x≤Bi,Bi≤Ai+xA_i-x\le B_i,B_i\le A_i+xAi−x≤Bi,Bi≤Ai+x
Ai−x≤Bi≤Ai+xA_i-x\le B_i\le A_i+xAi−x≤Bi≤Ai+x
来源
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cstdio>using namespace std;
typedef long long ll;
const int N=5e6+10;
int n;
ll a[N], b[N];
ll maxx;
int sa, sb, sc, sd;
ll mod;
ll res;
ll f(ll x){return (sa * x % mod * x % mod * x % mod + sb * x % mod * x % mod + sc * x % mod + sd) % mod;
}
//数组b是修改后的非严格单调递增的数列
bool check(int x)
{b[1] = a[1] - x;//第一个数取最小才会使得答案尽可能的小for(int i = 2; i <= n; ++ i){if(a[i] >= b[i - 1]){//要保证非严格单调递增b[i] = max(a[i] - x, b[i - 1]);}else {if(a[i] + x < b[i - 1])return false;b[i] = b[i - 1];}}return true;
}int main(){cin >> n>> sa >> sb >> sc >> sd >> a[1] >> mod;maxx = a[1];for(int i = 2;i <= n;i ++){a[i] = (f(a[i-1]) + f(a[i-2])) % mod;}ll ans;ll l = 0, r = mod;while(l <= r){ll mid = (l + r) >> 1;if(check(mid))ans = mid, r = mid - 1;else l = mid + 1;}printf("%lld\n", ans);return 0;
}
Luogu P4105 [HEOI2014]南园满地堆轻絮相关推荐
- 唐诗辑注 —— 辛夷坞、南园十三首、问六十九
致我们终将逝去的青春,一书的作者的笔名,便是王维的这首,<辛夷坞>. 1. 辛夷坞 辛夷坞(四声) 木末芙蓉花,山中发红萼. 涧户寂无人,纷纷开且落. <辛夷坞>是唐代诗人王维 ...
- 南园茶社——动画展示网站
南园茶社 网址:http://www.tongli.net/china/nanyuanchashe/ 一幅好的作品与它的文化是离不开的,陈旧的茶壶.桌子.茶柜,加上剥落的墙,以及苏州评弹的背景音乐,一 ...
- Luogu P4101 [HEOI2014]人人尽说江南好(博弈论)
题目链接:https://www.luogu.com.cn/problem/P4101 题意:输入T,表示T组样例,然后每组输入n,m,每堆最初使为1,每次能合并两堆,但是不能每堆不能超过m.' 题解 ...
- 7-16 南园十三首·其五
男儿何不带吴钩,收取灯塔五十州. 沙场秋点兵: 刘成将军正在排兵布阵,他要将若干个士兵拍成一排,每个士兵都有一个战斗值x,不同士兵的战斗值可能相同. 假设初始时,队伍为空,但是队伍的正方向朝东(若队伍 ...
- BZOJ刷题记录---提高组难度
BZOJ刷题记录---提高组难度 总目录详见https://blog.csdn.net/mrcrack/article/details/90228694 序号 题号 算法 思想难度 实现难度 总难度 ...
- 退役前的最后的做题记录upd:2019.04.04
考试考到自闭,每天被吊打. 还有几天可能就要AFO了呢... Luogu3602:Koishi Loves Segments 从左向右,每次删除右端点最大的即可. [HEOI2014]南园满地堆轻絮 ...
- 语法入门*算法入门题单
作者:王清楚 链接:https://ac.nowcoder.com/discuss/817596?type=101&order=0&pos=1&page=4&chann ...
- 【新手上路】语法入门算法入门题单
作者:王清楚 链接:[新手上路]语法入门&算法入门题单_ACM竞赛_ACM/CSP/ICPC/CCPC/比赛经验/题解/资讯_牛客竞赛OJ_牛客网 来源:牛客网 介绍:本题单分为语法入门和算法 ...
- 牛客算法課 (算法入門班) 二分, 三分, 01分數規劃
目录 NC19916[CQOI2010] 撲克牌 NC116564 [NOIP2012]借教室 K-th Number 三分思路 圆覆盖问题 传送带 01分数规划 小咪买东西 [USACO 2009 ...
最新文章
- 56. Netty源代码分析-服务器初始化 NioEventLoopGroup实例化
- SpringBoot自定义转换器(Convert)
- 关于 SAP 电商云 Spartacus UI 路由 routes 配置的数据源问题
- Windows中安装MongoDB以及studio3t
- (转载)lepaiwed网站代码【全】
- 2.用户画像:方法论与工程化解决方案 --- 数据指标体系
- Java常用算法手册-01算法概述
- 上市公司环境污染数据大全 2000-2020年上市公司(区分行业、重污染)环境污染数据 环境信息披露EDI 环保投资环境绩效环境排放数据
- 第9节 本地文件安全权限-以NTFS文件系统为例
- 商科能读计算机专业吗,我本科读的计算机 想去新西兰留学可以换专业吗? 没分了跪求啊,...
- thinkphp 实现汉字转换成拼音
- C4.5(决策树预测)算法
- 关于微信公众号文章抓取
- Long类型数据比较
- 如何配置springboot (2)-如何打jar包 ---彻骨寒风的博客
- word中目录右边页码对不齐解决方法
- moxa串口服务器 串口总是被占用,IT外包运维:moxa串口服务器通讯设置参数
- 2020-10-22.c和.h文件的区别
- matlab实现excel信息匹配填写
- Unable to get VFS File object for filename 'file:///': Unknown scheme sftp in URI {1}.
热门文章
- 【实战】OpenCV钢管计数分析与方法比较
- 台3岁女童疑把玩风枪致死案疑点多 警方将调查厘清
- javascript控件(二):一个好用的表格(分页实例)
- ​防火墙(一)主机型防火墙
- 利用Bash给Linux服务器增添色彩
- Oracle SQL Developer 的一个Bug
- Atitit. 查找linux 项目源码位置
- spring2.5 mvc使用注解upload上传文件
- C# 获得系统AppData路径
- 操作无法完成.键入的打印机名不正确,或者指定的打印机没有连接到服务器上.有关详细信息,请单帮助...