原创 POJ3067--Japan(樹狀數組)

題意就是讓你求交點有多少個。 我們可以先按a從小到大排序,a相等就按b從小到大排序。 代碼如下: #include <stdio.h> #include <iostream> #include <algorithm> #include

原创 HDU3836--Equivalent Sets(強連通+縮點)

題目就是告訴你有m條邊是從u通向v的,問你至少添加多少條邊之後,能形成一個強連通。模版題。 #include <stdio.h> #include <iostream> #include <algorithm> #include <str

原创 HDU4289(最大流)(dinic算法+拆點)

將每個城市拆成兩個點,他們之間的流量就是這個城市的值,不同城市之間的流量是無窮,這樣走一遍最大流就可以了。 #include <stdio.h> #include <iostream> #include <algorithm> #incl

原创 二維樹狀數組模版

int Lowbit(int x) { return x & (-x); } void Update(int x,int y,int d) { int i,j; for(i=x;i<=s;i+=Lowbit(i)) { fo

原创 HDU1595(枚舉+最短路(dijkstra))

題意不多說了。。思路就是先走一遍dijkstra,然後p數組記錄下路徑,然後枚舉路徑上的邊刪去之後走dijkstra得到的最短路(想想爲什麼?我當時做的時候是枚舉了圖每條邊,然後就超時),取最大值。 #include <stdio.h>

原创 HDU3715(二分+2-SAT)

題意就是求滿足題目中給出的遞歸代碼的最大遞歸層數。 由於x[i]只有0和1,所以我們就比較容易想到2-SAT,然後二分遞歸層數,求出滿足要求的最大遞歸層數。建圖的時候,不滿足不等式的就是互相矛盾的,然後建邊。 #include <stdi