樓蘭圖騰(權值線段樹)

在完成了分配任務之后,西部314來到了樓蘭古城的西部。

相傳很久以前這片土地上(比樓蘭古城還早)生活著兩個部落,一個部落崇拜尖刀(‘V’),一個部落崇拜鐵鍬(‘∧’),他們分別用V和∧的形狀來代表各自部落的圖騰。

西部314在樓蘭古城的下面發現了一幅巨大的壁畫,壁畫上被標記出了N個點,經測量發現這N個點的水平位置和豎直位置是兩兩不同的。

西部314認為這幅壁畫所包含的信息與這N個點的相對位置有關,因此不妨設坐標分別為(1,y1),(2,y2),,(n,yn)(1,y1),(2,y2),…,(n,yn),其中y1y1~ynyn是1到n的一個排列。

西部314打算研究這幅壁畫中包含著多少個圖騰。

如果三個點(i,yi),(j,yj),(k,yk)(i,yi),(j,yj),(k,yk)滿足1i<j<knyi>yj,yj<yk1≤i<j<k≤n且yi>yj,yj<yk,則稱這三個點構成V圖騰;

如果三個點(i,yi),(j,yj),(k,yk)(i,yi),(j,yj),(k,yk)滿足1i<j<knyi<yj,yj>yk1≤i<j<k≤n且yi<yj,yj>yk,則稱這三個點構成∧圖騰;

西部314想知道,這n個點中兩個部落圖騰的數目。

因此,你需要編寫一個程序來求出V的個數和∧的個數。

輸入格式

第一行一個數n。

第二行是n個數,分別代表y1y2,,yny1,y2,…,yn。

輸出格式

兩個數,中間用空格隔開,依次為V的個數和∧的個數。

數據范圍

對于所有數據,n200000n≤200000,且輸出答案不會超過int64。

輸入樣例:

5
1 5 3 2 4

輸出樣例:

3 4
不明白為什么不需要離散化
代碼:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<vector>
#include<cmath>

const int maxn=2e5+5;
typedef long long ll;
using namespace std;
struct node
{
int l,r;
int num;
}tree[maxn<<2];
vector<int>v;
int a[maxn];

void pushup(int m)
{
tree[m].num=(tree[m<<1].num+tree[m<<1|1].num);
}

void build(int m,int l,int r)
{
tree[m].l=l;
tree[m].r=r;
tree[m].num=0;
if(l==r)
{
return ;
}
int mid=(tree[m].l+tree[m].r)>>1;
build(m<<1,l,mid);
build(m<<1|1,mid+1,r);
}
void update(int m,int pos,int val)
{
if(tree[m].l==tree[m].r)
{
tree[m].num+=val;
return;
}
int mid=(tree[m].l+tree[m].r)>>1;
if(pos<=mid)
{
update(m<<1,pos,val);
}
else
{
update(m<<1|1,pos,val);
}
pushup(m);
}
int query(int m,int l,int r)
{
if(tree[m].l==l&&tree[m].r==r)
{
return tree[m].num;
}
int mid=(tree[m].l+tree[m].r)>>1;
if(r<=mid)
{
return query(m<<1,l,r);
}
else if(l>mid)
{
return query(m<<1|1,l,r);
}
else
{
return query(m<<1,l,mid)+query(m<<1|1,mid+1,r);
}
}
ll minl[maxn],minr[maxn],maxl[maxn],maxr[maxn];
int main()
{

int n;
cin>>n;
for(int t=1;t<=n;t++)
{
scanf("%d",&a[t]);
}
build(1,0,n+1);
for(int t=1;t<=n;t++)
{
minl[t]=query(1,0,a[t]-1);
maxl[t]=query(1,a[t]+1,n+1);
update(1,a[t],1);
}
build(1,0,n+1);
for(int t=n;t>=1;t--)
{
minr[t]=query(1,0,a[t]-1);
maxr[t]=query(1,a[t]+1,n+1);
update(1,a[t],1);
}
ll ans1=0,ans2=0;
for(int t=1;t<=n;t++)
{
ans1+=maxl[t]*maxr[t];
ans2+=minl[t]*minr[t];
}
printf("%lld %lld\n",ans1,ans2);

system("pause");
return 0;
}

轉載于:https://www.cnblogs.com/Staceyacm/p/11333463.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248260.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248260.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248260.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js(Dom+Bom)第一天(1)

JavaScript-DOM&#xff08;BOM&#xff09;操作 核心知識 獲取頁面元素事件設置樣式 學習目標 能夠使用id名,標簽名等方式獲取頁面中元素能夠給標簽注冊點擊事件,并實現對應效果能夠給標簽通過js方式設置樣式 JavaScript組成 ECMASCRIPT (基礎語法) DOM&#xff08;文檔對…

[HZNOI #koishi] Magic

[HZNOI #514] Magic 題意 給定一個 \(n\) 個點 \(m\) 條邊的有向圖, 每個點有兩個權值 \(a_i\) 和 \(b_i\), 可以以 \(b_i\) 的花費把第 \(i\) 個點的 \(a_i\) 變成 \(0\). 最后每個點 \(i\) 產生的花費為所有從 \(i\) 出發能通過一條有向邊直接到達的點 \(j\) 的 \(a_j\) 的 \…

同步與異步

同步&#xff1a; 做完一件事&#xff0c;再做另一件 煮好水&#xff0c;再拆泡面包裝 異步&#xff1a; 可以同時做好幾個任務 燒水&#xff0c;打開火之后&#xff0c;先去拆泡面包裝&#xff0c;等水開了&#xff0c;再停下拆包裝&#xff0c;去關掉火。。。。。 轉載于:htt…

js(Dom+Bom)第一天(2)

webAPI 00-復習 內置對象中的方法 01-JavaScript組成 知識點-ECMASCRIPT 重點回顧 存儲容器 變量數組對象 邏輯語法 分支語句循環語句switch語句 知識點-BOM 概念 Browser Object Model (瀏覽器器對象模型) 操作瀏覽器將瀏覽器看做是一個對象.作用 通過js操作瀏覽器中相…

mysql 主主復制的配置流程

1、先關閉B&#xff0c;把A的數據導出來&#xff0c;mysqldump -hlocalhost -uroot -p123456 --database ibprpu >ibprpu.sql2、關閉A&#xff0c;啟動B&#xff0c;進入mysql建立一個新的數據庫 create database ibprpu3、導入數據庫 mysql -hlocalhost -uroot -p123456 &l…

華為架構師8年經驗談:從單體架構到微服務的服務化演進之路

本次分享的技術大綱如下&#xff1a; 傳統應用開發面臨的挑戰服務化實踐服務化不是銀彈服務化架構的演進方向一 、傳統應用開發面臨的挑戰 挑戰1-- 研發成本高 主要體現在如下幾個方面&#xff1a; 代碼重復率高在實際項目分工時&#xff0c;開發都是各自負責幾個功能&#xff…

輪播圖制作(1)

輪播圖制作 <body><div><img src"img/1.jpg" class"imgs" alt""><a href"#" class"left"><</a> //此處的箭頭也可以用圖標做出來<a href"#" class"right">>…

StringUtils工具類的常用方法

StringUtils 方法的操作對象是 java.lang.String 類型的對象&#xff0c;是 JDK 提供的 String 類型操作方法的補充&#xff0c;并且是 null 安全的(即如果輸入參數 String 為 null 則不會拋出 NullPointerException &#xff0c;而是做了相應處理&#xff0c;例如&#xff0c…

struts2+extjs文件上傳完整實現(攻克了上傳中的各種問題)

版權聲明&#xff1a;本文為博主原創文章。未經博主同意不得轉載。 https://blog.csdn.net/shanhuhau/article/details/28617999 首先須要引入上傳控件 <script type"text/javascript" src"<%basePath%>/js/ext/examples/ux/fileuploadfield/FileUploa…

放大鏡制作(1)

放大鏡制作 <div class"box" id"box"><!--左側的盒子--><div class"small"><!--圖片--><img src"images/big.jpg" width"350" class"aaa" alt""/><!--黃色小盒子--&…

.NET Framework 2.0 組件和非托管代碼與交互操作詳解(轉)

.NET Framework 將促進與 COM 組件、COM 服務、外部類型庫和許多操作系統服務的交互操作。在托管和非托管對象模型之間&#xff0c;數據類型、方法簽名和錯誤處理機制都存在差異。為了簡化 .NET Framework 組件和非托管代碼之間的互用并便于進行移植&#xff0c;公共語言運行時…

git 刪除遠程分支和本地分支

刪除遠程分支和本地分支 https://www.cnblogs.com/luosongchao/p/3408365.html 將遠程git倉庫里的指定分支拉取到本地&#xff08;本地不存在的分支&#xff09; https://www.cnblogs.com/hamsterPP/p/6810831.html 轉載于:https://www.cnblogs.com/mafeng/p/10619419.html

從零開始實現ASP.NET Core MVC的插件式開發(四) - 插件安裝

標題&#xff1a;從零開始實現ASP.NET Core MVC的插件式開發(四) - 插件安裝 作者&#xff1a;Lamond Lu 地址&#xff1a;https://www.cnblogs.com/lwqlun/p/11343141.html 源代碼&#xff1a;https://github.com/lamondlu/Mystique 前情回顧 從零開始實現ASP.NET Core MVC的插…

立體導航翻轉案例

<div class"box"><!-- 立方體 --><ul><li><img src"img1/1.jpg" alt""></li><li><img src"img1/2.jpg" alt""></li><li><img src"img1/3.jpg" a…

Uncontrolled memory mapping in camera driver (CVE-2013-2595)

版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主同意不得轉載。https://blog.csdn.net/hu3167343/article/details/34434235 /* 本文章由 莫灰灰 編寫&#xff0c;轉載請注明出處。 作者&#xff1a;莫灰灰 郵箱&#xff1a; minzhenfei163.com */ 1漏洞描寫…

表格隔行變色

<body><table border"0" align"center" cellspacing"1" cellpadding"0"><caption>恭喜發財</caption><thead><tr><th>代碼</th><th>名稱</th><th>最新公布凈值<…

啟動Cognos時報0106錯誤

1. 問題描述 啟動Cognos失敗&#xff0c;報錯代碼為0106。 2. 問題分析 是jdk版本不兼容。 3. 解決方案 方案一&#xff1a;更換jdk1.6&#xff0c;可以使用免安裝版&#xff0c;不需要卸載原有的jdk將java_home的路徑替換成jdk1.6的路徑。 方案二&#xff1a;使用Cognos自帶jd…

項目管理的測試版發布

最近有時間將以前沒有寫完的項目管理程序進一步完善&#xff0c;加入了項目任務之間的關連。功能&#xff1a;1、任務的關連Start to finishStart to startFinish to startFinish to finish2、任務關連表環路檢測3、采用MVC模式進行開發4、自動導出XML5、雙擊連接線可以設置、刪…

劍指offer.機器人的運動范圍

地上有一個 m 行和 n 列的方格&#xff0c;橫縱坐標范圍分別是 0~m?1 和 0~~n?1。一個機器人從坐標0,0的格子開始移動&#xff0c;每一次只能向左&#xff0c;右&#xff0c;上&#xff0c;下四個方向移動一格。但是不能進入行坐標和列坐標的數位之和大于 kk 的格子。請問…

Tab欄切換布局分析

<body><div class"tab"><div class"tab_list"><ul><li class"current">商品介紹</li><li>規格與包裝</li><li>售后包裝</li><li>商品評價(50000)</li><li>手機社…