最大数
来源:互联网 发布:云计算体系结构 编辑:程序博客网 时间:2024/06/06 04:14
QAQ
鹅鹅鹅饿鹅鹅鹅
虽说这个题啊,可以用线段树做,可是老师说不太好23333。
单调栈的作法,维护一个单调递减的栈(因为要找的是最大值啊,后面的比前面的大了前面的就没意义了不是么)
#include <cstdio>#include <iostream>using namespace std;int p;int a[999999],b[9999999];//a代表编号所代表的数,b为栈,其实是编号,编号所指向的数是单调的,为了便于查找。int find(int x,int y,int k){ int m=(x+y)>>1; while(x!=y) { if (b[m]<k) x=m+1; if (b[m]==k) return m; if (b[m]>k) y=m; m=(x+y)>>1; } return m;}int main(){ int n; scanf("%d%d",&n,&p); int cnt=0; int sum=0; int num=0; for(int i=1;i<=n;i++) { int x; char c[3]; scanf("%s%d",c,&x); if(c[0]=='A') { x=(x+sum)%p;//之前查询的数与输入的数和modp a[++cnt]=x;//数的编号++,值为x while(num>0&&a[b[num]]<=x) num--;//当这个元素比栈顶元素大的时候栈顶出栈 b[++num]=cnt;//元素入栈 } else { sum=a[b[find(1,num,cnt-x+1)]];//二分查找 printf("%d\n",sum); } } return 0; }
1 0
- 最大数
- 最大数
- 最大数
- 三个数求最大数
- 最小数和最大数
- 最小数和最大数
- Sybase最大连接数
- 查找最大数
- 求最大数
- 数组最大数
- 最大连续数
- 最大进程 线程数
- Chessboard------最大独立数
- 求最大数
- 求最大数
- Tomcat最大并发数
- 最大数 回文
- ios 最大线程数
- Ubuntu下重新挂载一个硬盘
- 一流用户体验设计师的6个共同点
- gridview中使用CheckBox,解决CheckBox数据加载错乱问题
- Json格式文件读写
- 在 Ubuntu 14.04 Server 上安装 Ganglia
- 最大数
- service中方法 涉及到数据库增删改方法时 都应该抛运行时异常
- 点击UITableViewCell的相关设置
- UDP协议与IP协议浅析
- string简洁版本
- Mac OS 终端起动、关闭、重启apache的方法
- 翻硬币
- node.js服务器安装
- 虚拟机 Ubuntu 联网设置