考慮每次新放乙個棋子會產生多少新的矩形,以及減掉多少舊的矩形。
用第$i$個點的座標把座標軸分成4個象限。
顯然第一問的答案用四個單調棧就能解決。
而且第二問每個矩形的兩個端點一定在1,3或2,4象限的單調棧裡。
列舉第一象限裡的乙個點,剩下三個象限裡維護3個指標,就能找出來第3象限裡能和當前點組成矩形的點。
二四象限同理。
#include#define n 5005#define ll long long
using namespace std;
int n;
struct node
a[n];
ll ans1,ans2,now;
int p[n];
bool cmp(int x,int y)
if(op==4)if(!top[4]||a[t].y>a[q4[top[4]]].y)q4[++top[4]]=t;}}
int ans=top[1]+top[2]+top[3]+top[4];
int p1=top[2],p2=0,p3=top[3]+1,p4=top[3];
for(int i=1;i<=top[1];i++)
p1=top[1]+1,p2=0,p3=top[4]+1,p4=top[4];
for(int i=1;i<=top[2];i++)
return ans;
}int main()
printf("%lld %lld\n",ans1,ans2);
return 0;
}
小店購物 JSOI2008 BZOJ 2260
grant是乙個個體戶老闆,他經營的小店因為其豐富的優惠方案深受附近居民的青睞,生意紅火。小店的優惠方案十分簡單有趣。grant規定 在一次消費過程中,如果您在本店購買了精製油的話,您購買香皂時就可以享受2.00元 塊的 如果您在本店購買了香皂的話,您購買可樂時就可以享受1.50元 聽的 諸如此類的...
BZOJ 4327 JSOI2012 玄武密碼
字尾自動機裸題。藉著這道裸題總結一下字尾自動機的查詢問題。1.查字首 查詢時不跳parent,遇到空節點就跳出。2.查子串 查詢時跳parent,記錄最大ans.3.查次數 lct維護right陣列 4.查不同的串的數目 在建樹時維護,乙個點對答案的貢獻為this max len this pare...
JSOI2009 bzoj1449 球隊收益
description input output 乙個整數表示聯盟裡所有球隊收益之和的最小值。首先假設全輸,然後給每場比賽分配乙個贏家,每個隊伍每多贏一場多獲得的收益作為費用。但是有乙個問題,如何保證每次走的是對應的邊?也就是,如何保證贏第一場的時候增加的收益是贏一場減贏零場,而不是贏兩場減贏一場?...