Description

宅邸迅速的燃烧着,必须带贝蒂走出禁书库!凭着感觉,又一次直接找到禁书库的门。
“你,是那个人嘛?”400年了,当初圣域建立结界时没有进入圣域,被伤了心的人工精灵贝蒂,与强欲魔女签订契约,守护宅邸的禁书库,直至“那个人”的到来,那个人会解开贝蒂的心结。
“我不是那个什么人,但我会成为你唯一的人。我会给你幸福!”
精灵与人签订契约,从此相依为命。这便是,永恒的契约。

宅邸里,罗兹瓦尔的房间图书柜后,有一条链接宅邸和圣域的秘密通道,其中有一个神奇的大回环,由n块石头组成。
第i块石头有一个高度ai,两块不同的石头i,j能够互相看到,则它们在环上的两条路径中有至少一条路径上除了两个端点(即i,j)路径上石头高度都不大于min(ai,aj)。
被罗兹瓦尔雇佣的猎肠者躲在这秘密的通道中,为了能够更好的观察通道中的情况,她想知道有多少对石头能够互相看到。

Input

第一行一个正整数T,表示数据组数。
接下来T组数据,每组数据第一行读入正整数n,接下来一行按顺时针顺序读入序列a表示石块的高度。

Output

T行表示每组数据的答案。

Sample Input

1
5
1 2 4 5 3

Sample Output

7

Data Constraint

40%,n<=200
60%,n<=2000
70%,n<=100000
80%,n<=1000000,1<=ai<=1000000
100%,n<=1000000,T<=5,1<=ai<=1000000000
这题目脑洞是真的大,只会60分,然而还写错了文件名。。。。。。神TM多了个空格。题解:

如果i、j可以互相看到,那么分情况考虑。
ai!=aj,假设ai>aj,那么从j出发一直走ai是第一个大于aj的,因此可以预处理left和right表示往左/右第一个碰到的权值大于自己的,就可以检验i和j是否能互相看到。
ai=aj,同上,只不过是一个碰到的权值大于自己的位置在i之后。
枚举任意两块石头,用上述方法快速检验是否可以互相看到。
left和right可以用n^2的时间预处理。
因此总复杂度是n^2的。

然而会爆。
100%的做法:
首先,我们注意到可以先删除环上最大值(多个任取一个),将环转化为链,而且删去后只会影响这个最大值和其他石头产生的答案,不会影响其余任意两块石头间的可看见关系。
ai

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#define fo(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll;
const int N=1e7+10;
int i,j,k,p,n,m,cas,t,w,x4,x3,x1,x2;
int a[N],b[N],size[N],bo[N],head[N],id[N];
ll ans;
int main()
{freopen("forever.in","r",stdin);freopen("forever.out","w",stdout);int cas;scanf("%d",&cas);while (cas--) {memset(bo,0,sizeof(bo));scanf("%d",&n);fo(i,1,n)scanf("%d",&a[i]);t=1;w=0;ans=0;fo(i,1,n){while (t<=w&&b[w]<a[i]){bo[id[w]]=0;w--;}w++;b[w]=a[i];id[w]=i;size[w]=1;bo[i]=1;if (t<w)if (b[w-1]==a[i]){head[w]=head[w-1];size[w]+=size[w-1];}else head[w]=w-1;}fo(i,1,n){while (t<=w&&b[w]<a[i]){ans++;bo[id[w]]=0;w--;}w++;b[w]=a[i];id[w]=i;size[w]=1;if (bo[i])ans--,size[w]--;if (t<=w)if (b[w-1]==a[i]){if (head[w-1]>=t&&head[w-1]<=w)ans++;ans+=size[w-1];size[w]+=size[w-1];head[w]=head[w-1];}else{head[w]=w-1;if (t<=w)ans++;}}x1=0;x4=0;x2=0;x3=0;fo(i,1,n)if (a[i]>x1){x2=x1;x3=x4;x1=a[i];x4=1;}else if (a[i]==x1)x4++;else if (a[i]>x2)x2=a[i],x3=1;else if (a[i]==x2)x3++;if (x4>1) ans-=(ll)x4*(x4-1)/2;else ans-=x3;printf("%lld\n",ans);}
}

JZOJ4848 永恒的契约相关推荐

  1. 【GDOI2017模拟11.3】永恒的契约

    Description 宅邸迅速的燃烧着,必须带贝蒂走出禁书库!凭着感觉,又一次直接找到禁书库的门. "你,是那个人嘛?"400年了,当初圣域建立结界时没有进入圣域,被伤了心的人工 ...

  2. 20ZR暑期集训 简单数据结构

    方差 令 DDD 为方差,SSS 为区间和,S2S_2S2​ 为区间平方和. D=1r−l+1∑i=1r(ai−Sr−l+1)2=1r−l+1∑i=1r(ai2−2Sair−l+1+S2(r−l+1) ...

  3. 《兰岛物语:少女的约定》全后宫攻略补遗还有永恒的礼物简介和秘籍

    先废话几句 这个游戏该怎么说呢,人设偶是非常喜欢的,原来在吧里看到这款游戏的第一眼就非常喜欢了,玩过后的感觉是:剧情安排很到位,音乐非常出色,唯一不足的话应该是部分人物的CAST不是很好了,应该说中国 ...

  4. Charterstone for Mac 契约石 中文版 好玩的桌游棋盘战略游戏

    契约石 Charterstone for Mac 是一款桌游改编的游戏,游戏完美继承了桌游的特性,并且玩家在家也可以体验多团体游戏的爽感,玩家可以在契约之地上假造一座永恒之城,管理工人解锁和建造新设施 ...

  5. WCF中服务继承多个契约的使用

    服务继承多个契约其实也就是服务类实现了多个接口,主要是在配置中需要添加多个endpoint,各个endpoint之间的address不同.contract不同 契约: [html] view plai ...

  6. ASP.NET2.0 永恒密码之戒【月儿原创】

    ASP.NET2.0 永恒密码之戒 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.4.8 1.我们经常有这样的情形: 就是用户 ...

  7. WCF 第二章 契约

    在原子和金钱世界中,契约是两个或多个组织以一个已知的价格提供商品和服务的合同.在比特和服务的世界中,契约有类似的功能:它是两个或多个组织之间确定消息交换和消息条款及条件的合同. 契约是由服务终结点发送 ...

  8. 开源的 6 条社会契约

    作者 | Brett Cannon 译者 | 弯月   责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 以下为译文: 本文探讨一下关于开源用户权利的问题.我想指出一点,开源维护者不欠 ...

  9. [WebService]之代码优先方法与契约优先方法

    什么是 web 服务? web 服务是对应用程序功能的网络访问接口,它是使用标准 Internet 技术构建的. 我们目前看到的部署在 Internet 上的 web 服务都是 HTML 网站.其中, ...

最新文章

  1. Mac下安装SVN for Eclipse插件
  2. windows 7 睡眠和休眠的区别
  3. angular 首屏加载优化_[转]Angular4首页加载慢优化之路
  4. JAVA基础——toString()方法,java基础面试笔试题
  5. SAP License:关联方跨公司交易的自动清帐与实现
  6. Cisco路由重分发配置(引入路由)
  7. Leetcode207---课程表(逆拓扑排序)
  8. python中正确的赋值语句_在Python中使用赋值表达式时,如何完成赋值语句“x=y:=f(x)”?...
  9. C#电子病历管理系统源码 医院电子病历源码
  10. 服务器上显示公式,Markdown中实时显示数学公式的方法
  11. 2020-12-30
  12. Flink 系例 之 Fold
  13. 洛谷blog传送门qwq
  14. 拯救电脑族的营养美食
  15. Python 智能项目:1~5
  16. Intel TBB的学习动态并行
  17. Java 大写转小写
  18. vue部署到内网和外网配置简要说明
  19. iOS 内购项目的App Store推广
  20. 原生Js导出Excel文件

热门文章

  1. 类图多重度_阅读下列说明以及UML类图,回答问题1、 - 希赛网
  2. mustache java 性能_mustache模板技术
  3. 洛谷刷题:明明的随机数、质因数分解、不高兴的津津、津津对的储存计划和车厢重组
  4. 风头一度碾压李子柒、papi酱,办公室小野凭什么成为爆款制造机?
  5. html5游戏开发box2djs,基于HTML5的WebGL结合Box2DJS物理应用
  6. SuperMap iClient3D for WebGL教程(特效)- 扫描线
  7. 2023年天津美术学院专升本专业课线上考试安排准备及设备操作说明
  8. 一分钟教程:利用cloudflare worker搭建在线代理—-jsproxy
  9. Android设计模式详解之观察者模式
  10. 2020 shodan 配置详解