BZOJ1202 HNOI2005 狡猾的商人

2022-05-19 22:02:32 字數 606 閱讀 4950

給出t組資料,每組資料有n個點,每個點都有值,給出m個區間和,判斷是否所有區間和都合法

乍一眼,就是字首和的處理,但並沒有想到做法,後來發現並查集維護字首和好像行得通,而且網上的神犇們都用並查集,而且似乎叫做帶權並查集

注意當求i點祖先時,要記得對v陣列進行處理

v[i]表示i到i的祖先的和,當x和y為相同祖先時,只要判斷v[y]-v[x]是否等於k就能判斷是否合法了,如果不是相同祖先就合併,並且對v陣列進行處理

其實這道題還可以用差分約束過掉,甚至有神犇用玄學貪心過了,在此收我一膜

#include#include

#include

#include

#include

using

namespace

std;

int fa[110],v[110

];int findfa(int

x)int

main()

}else

}if(bk==false) printf("

false\n");

else printf("

true\n");

}return0;

}

狡猾的商人 bzoj1202,HNOI2005

ac通道 分析 因為每月的總收入可以為正,也可以為負,所以要比較兩個區間是否相符,當且僅當它們邊界都相同時才能比較。我們設w i 表示第1 i個月的總收入與第1 fa i 1 個月的總收入之差,及第fa i i個月的總收入。如圖。若i 1,j在同乙個集合中,則第i j個月的總收入為w j w i 1...

BZOJ1202 HNOI2005 狡猾的商人

把輸出的false打成flase了 一直沒注意到 先將區間和轉成字首和 那麼就知道了若干條形如sr sl 1 c 的資訊 能判斷出賬本是假的當且僅當通過已知的資訊得到的sr sl 1 c 於是維護乙個帶權並查集,當 r 和l 1在同乙個集合裡的時候,利用維護的和根的差算出sr sl 1 判斷是否和 ...

BZOJ1202 HNOI2005 狡猾的商人

time limit 10 sec memory limit 162 mb submit 4198 solved 2026 submit status discuss 刁奼接到乙個任務,為稅務部門調查一位商人的賬本,看看賬本是不是偽造的。賬本上記錄了n個月以來的收入情況,其中第i 個月的收入額為ai...