当前位置: 首页 > news >正文

【RQNOJ】460 诺诺的队列

【题目大意】
求全部数对(i,j)满足随意a[k]<=a[i]且a[k]<=a[j]。
形象地说,就是有一群人站成一列。每一个人有一定的身高,然后问有多少对人能够互相看得到。
把数对(i,j)简单地称之为看得到的数对。

【解析】单调栈
先借用一下曾经做的题:[Vijos]1926 紫色的手链。求随意区间最大值异或次大值的最大值。
回想一下单调栈,就是存储从高到低递减的单调数据的栈。


借用曾经的做法,求出来的东西相对于全部看得到的数对,对于全部a[i]相等的看得见的数对,仅仅算了一次。

于是事实上每次高过别人的时候操作仅仅要加上s(a[i]),第一次比别人矮的时候加上1而不是s(a[i])。


把栈内的东西给扩充,不仅存元素。还存个数,这样就攻克了。

单调栈代码:

#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;

const int N=500001;

struct Stack
{
	int w,c;
}stk[N];
int size;
int n,w[N],cnt;

inline int read(void)
{
	int s=0,f=1; char c=getchar();
	for (;c<'0'||c>'9';c=getchar()) if (c=='-') f=-1;
	for (;'0'<=c&&c<='9';c=getchar()) s=(s<<1)+(s<<3)+c-'0';
	return s*f;
}

int main(void)
{	
	n=read();
	for (int i=1;i<=n;i++) w[i]=read();
	
	for (int i=1;i<=n;i++)
	{
		for (;size&&stk[size].w<w[i];size--)
		{
			cnt+=stk[size].c;
			stk[size].w=stk[size].c=0;
		}
		if (size&&stk[size].w==w[i])
		{
			cnt+=stk[size].c;
			stk[size].c++;
			if (size-1) cnt++;
		}
		else
		{
			if (size) cnt++;
			stk[++size].w=w[i];
			stk[size].c=1;
		}
	}
	printf("%d\n",cnt);
	
	return 0;
}


转载于:https://www.cnblogs.com/liguangsunls/p/7146746.html

相关文章:

  • JS的join方法
  • java selenium (十四) 处理Iframe 中的元素
  • 日志架构
  • 各种定位方式
  • JAVA个人小程序GUI篇-收银(标签、按钮、复选框、下拉标、文本域、表格······)...
  • [bzoj2957]楼房重建
  • 杨辉三角的几种方法
  • 标题四
  • 3种上传图片并实现预览的方法
  • 暑假小集训
  • [无线路由] “免费”斐讯K2路由器刷OpenWRT(实战MWAN多宽带网速叠加)
  • 静态变量
  • Java字节数组和16进制字符串的互相转化
  • 多进程与多线程的区别
  • java线程详细介绍
  • [nginx文档翻译系列] 控制nginx
  • [笔记] php常见简单功能及函数
  • 【node学习】协程
  • 【RocksDB】TransactionDB源码分析
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • conda常用的命令
  • create-react-app做的留言板
  • If…else
  • JavaScript DOM 10 - 滚动
  • PHP CLI应用的调试原理
  • Python 基础起步 (十) 什么叫函数?
  • text-decoration与color属性
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 大快搜索数据爬虫技术实例安装教学篇
  • 关于Flux,Vuex,Redux的思考
  • 前端
  • 学习Vue.js的五个小例子
  • 学习笔记TF060:图像语音结合,看图说话
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 【云吞铺子】性能抖动剖析(二)
  • Semaphore
  • #NOIP 2014# day.2 T2 寻找道路
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (9)STL算法之逆转旋转
  • (a /b)*c的值
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (小白学Java)Java简介和基本配置
  • (一)VirtualBox安装增强功能
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)Oracle存储过程编写经验和优化措施
  • ***详解账号泄露:全球约1亿用户已泄露
  • *2 echo、printf、mkdir命令的应用
  • .NET DataGridView数据绑定说明
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .NET委托:一个关于C#的睡前故事