給出了l,r,w。我們就得知了s[r]-s[l-1]=w.也就是說,點l-1和點r的距離為w。
於是可以使用帶權並查集,定義dis[i]表示點i到根節點的距離。查詢和合併的時候維護一下就ok了。
如果賬本有錯誤,那麼這兩點的距離一定不等於在並查集上面的距離。
# include # includeview code# include
# include
# include
# include
# include
# include
# include
# include
# include
using
namespace
std;
# define lowbit(x) ((x)&(-x))
# define pi acos(-1.0
)# define eps 1e-3
# define mod
100000007
# define inf
1000000000
# define mem(a,b) memset(a,b,
sizeof
(a))
# define for(i,a,n)
for(int i=a; i<=n; ++i)
# define fo(i,a,n)
for(int i=a; ii)
# define bug puts("h
");# define lch p
<<1
,l,mid
# define rch p
<<1|1,mid+1
,r# define mp make_pair
# define pb push_back
typedef pair
pii;
typedef vector
vi;# pragma comment(linker,
"/stack:1024000000,1024000000")
typedef
long
long
ll;int
scan()
void out(int
a)
if(a>=10) out(a/10
); putchar(a%10+'0'
);}const
int n=10005;//
code begin...
int fa[105], dis[105
];int find(int
x)
return
fa[x];
}int
main ()
else
}puts(flag?"
true
":"false");
}return0;
}
bzoj1202 狡猾的商人
如果這個賬本是真的話,那麼對於乙個s,t,在圖上,兩個點之間任意一條路徑的長度都必須相等,不然這個賬本就不是真的。用並查集在維護這個資訊,也就是字首和,字首和就是前i個月收入的錢,那麼對於任意一行資料 s t v 都有 sum s sum t v 然後在並查集的時候,查詢父親節點的時候,將sum值累...
bzoj1202 狡猾的商人
time limit 10 sec memory limit 162 mb submit 3569 solved 1717 submit status discuss 刁奼接到乙個任務,為稅務部門調查一位商人的賬本,看看賬本是不是偽造的。賬本上記錄了n個月以來的收入情況,其中第i 個月的收入額為ai...
BZOJ 1202 狡猾的商人
先處理成字首和關係,然後可以很明顯得看得出這是乙個差分約束。那麼就是最短路問題了。順便複習了一下spfa加slf優化是怎麼寫的,也學習到了另乙個stl deque雙向佇列。include include include include include include include include ...