扶桑号战列舰
时间限制: 1 Sec 内存限制: 128 MB Special Judge
提交: 197 解决: 63
[提交] [状态] [命题人:admin]
题目描述
众所周知,一战过后,在世界列强建造超无畏级战列舰的竞争之中,旧日本海军根据“个舰优越主义”,建造了扶桑级战列舰,完工时为当时世界上武装最为强大的舰只。
同时,扶桑号战列舰也是舰岛最为科幻的战列舰。
当然,要建造这样的舰船,科技水平是必须的。
同样众所周知的是,德意志科学技术天下第一,所以IJN的司令官从德国学来了一种先进的建船方法。
一只战舰横过来可以看做一个长度为n的序列,每个位置有一个数ai表示这个位置设计的高度。这种先进的造船技术可以每次将一个区间[l,r]内的所有位置高度都+1,求到达最终设计状态的最少操作次数。
如果你不能及时完成的话,IJN司令官会奖励你去参加苏里高海战。

输入
第一行包含一个整数n,表示序列的长度。
第二行包含n个非负整数a1,a2,a3,…,an,表示最终的状态。

输出
输出的第一行是一个正整数m,表示最少的操作次数。
接下来m行每行两个正整数li,ri,表示一次操作。
你需要保证1≤li≤ri≤n。
保证最少次数m≤105,输出可以以任意顺序输出。

样例输入
复制样例数据
6
2 3 3 3 3 3
样例输出
3
1 6
1 6
2 6

提示

解题思路:
通过RMQ维护区间最小值,然后在分治即可。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
typedef pair<int,int> p;
p dp[100100][25];
int arr[100100];
pair<int,int> res[100100];
void RMQ(int n) {for(int i=1;i<=n;i++) {dp[i][0].second=arr[i];dp[i][0].first=i;}for(int k=1;k<=(int)log2(n);k++) {for(int i=1;i+(1<<k)-1<=n;i++) {if(dp[i][k-1].second<=dp[i+(1<<(k-1))][k-1].second) {dp[i][k].second=dp[i][k-1].second;dp[i][k].first=dp[i][k-1].first;}else {dp[i][k].second=dp[i+(1<<(k-1))][k-1].second;dp[i][k].first=dp[i+(1<<(k-1))][k-1].first;}}}
}
p find(int l,int r) {int k=(int)log2(r-l+1);if(dp[l][k].second<=dp[r+1-(1<<k)][k].second) return dp[l][k];else return dp[r+1-(1<<k)][k];
}
int cnt;
void fenzhi(int l,int r,int num) {if(l>r) return;p nape=find(l,r);int t=nape.second;int mid=nape.first;for(int k=num+1;k<=t;k++) {cnt++;res[cnt].first=l;res[cnt].second=r;}fenzhi(l,mid-1,t);fenzhi(mid+1,r,t);
}
int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);//ios::sync_with_stdio(0),cin.tie(0);int n;scanf("%d",&n);rep(i,1,n) {scanf("%d",&arr[i]);}RMQ(n);fenzhi(1,n,0);printf("%d\n",cnt);for(int i=1;i<=cnt;i++) {printf("%d %d\n",res[i].first,res[i].second);}return 0;
}

扶桑号战列舰【RMQ+分治】相关推荐

  1. 【单调栈】 扶桑号战列舰

    问题 N: 扶桑号战列舰 时间限制: 1 Sec  内存限制: 128 MB  Special Judge 提交: 330  解决: 129 [提交] [状态] [命题人:admin] 题目描述 众所 ...

  2. 扶桑号战列舰(单调栈)

    问题 N: 扶桑号战列舰 时间限制: 1 Sec  内存限制: 128 MB  Special Judge 题目描述 众所周知,一战过后,在世界列强建造超无畏级战列舰的竞争之中,旧日本海军根据&quo ...

  3. 扶桑号战列舰【单调栈+线段树】

    扶桑号战列舰 传送门  来源upc:12800 题目描述 众所周知,一战过后,在世界列强建造超无畏级战列舰的竞争之中,旧日本海军根据"个舰优越主义",建造了扶桑级战列舰,完工时为当 ...

  4. (题目) (思维+栈)扶桑号战列舰

    时间限制: 1 Sec 内存限制: 128 MB 题目描述 众所周知,一战过后,在世界列强建造超无畏级战列舰的竞争之中,旧日本海军根据"个舰优越主义",建造了扶桑级战列舰,完工时为 ...

  5. 扶桑号战列舰(差分/笛卡尔树)

    问题 N: 扶桑号战列舰 时间限制: 1 Sec  内存限制: 128 MB  Special Judge                                               ...

  6. 【upc】扶桑号战列舰 | 笛卡尔树 、 差分数组

    题目描述 众所周知,一战过后,在世界列强建造超无畏级战列舰的竞争之中,旧日本海军根据"个舰优越主义",建造了扶桑级战列舰,完工时为当时世界上武装最为强大的舰只. 同时,扶桑号战列舰 ...

  7. 问题 N: 扶桑号战列舰(笛卡尔树or差分数组)

    问题 N: 扶桑号战列舰 时间限制: 1 Sec  内存限制: 128 MB  Special Judge 提交: 169  解决: 52 [提交] [状态] [命题人:admin] 题目描述 众所周 ...

  8. 扶桑号战列舰 (单调栈+线段树区间更新懒惰标记 or 栈)

    传送门 •题目描述 题目描述 众所周知,一战过后,在世界列强建造超无畏级战列舰的竞争之中,旧日本海军根据"个舰优越主义",建造了扶桑级战列舰,完工时为当时世界上武装最为强大的舰只. ...

  9. 个人训练赛第十八场----问题 N: 扶桑号战列舰(贪心+栈)

    黑色的飞鸟掠过天空,我站在城中,看时间燃成灰烬,哗哗作响...... 题目描述 众所周知,一战过后,在世界列强建造超无畏级战列舰的竞争之中,旧日本海军根据"个舰优越主义",建造了扶 ...

最新文章

  1. 系统计算机大小怎么更改,调整设置电脑图标大小的方法
  2. aws java mysql_AWS Serverless部署java api(RDS for MySQL篇)
  3. 推荐 7 个学习 TypeScript 的宝库,2021 是时候给自己加薪了!
  4. bind9 安装:部署自建dns系统
  5. Serilog 日志框架如何自动删除超过 N 天的日志 ?
  6. 关于零拷贝技术,你了解多少?
  7. PAT乙级1025反转链表 25(分)
  8. [Java]jvm参数选项中文文档
  9. 大数据-实时推荐系统最主流推荐系统itemCF和userCF视频教程下载
  10. 05. 对定制的类型转换函数保持警觉
  11. 数据结构c语言版算法知识点,2020考研计算机《数据结构(C语言版)》复习笔记(3)...
  12. 面试常见问题及回答技巧
  13. win10 nginx设置开机启动 --亲测有效
  14. error C2143: 语法错误 : 缺少“;”(在“template”的前面)
  15. xfs文件系统修复问题
  16. C++游戏---皇后PK
  17. Tableau仪表板搭建
  18. 贷款违约行为的ANOVA分析——关于不同抽样方法得到不同结论的分析
  19. excel制作跨职能流程图_轻松做Visio跨职能流程图(泳道图)
  20. Reso | Noise 网易云音乐插件

热门文章

  1. 随想011:关于编程
  2. linux加入win7开机引导,windows下添加ubuntu系统引导
  3. Web网页调用BIMFACE模型方法
  4. [LiteratureReview]CubeSLAM Monocular 3-D Object SLAM
  5. FreeModbus 移植(从机实现)
  6. python性能分析(一)——使用timeit给你的程序打个表吧
  7. 《有毒的逻辑:为何有说服力的话反而不可信》PDF扫描版电子书下载
  8. xwiki的搭建及jetty升级
  9. halo 开源项目源码学习
  10. Frame::Frame(1)