題目大意:
中文題意,不解釋。
題目思路:
裸的費用流。
羊進洞所需的時間為費用。
建圖:每只羊對應每個洞的建立一條容量為1的邊。
設乙個源點,連向每只羊,容量為1。
設乙個匯點,每個洞連向匯點,容量為1。
建完圖後發現,還是乙個二分圖,所以我們還可用km演算法,高效又好寫~。
**:
#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define ll long long
#define ls rt<<1
#define rs ls|1
#define lson l,mid,ls
#define rson mid+1,r,rs
#define middle (l+r)>>1
#define eps (1e-8)
#define clr_all(x,c) memset(x,c,sizeof(x))
#define clr(x,c,n) memset(x,c,sizeof(x[0])*(n+1))
#define mod 1000000009
#define inf 0x3f3f3f3f
#define pi acos(-1.0)
#define _max(x,y) (((x)>(y))? (x):(y))
#define _min(x,y) (((x)<(y))? (x):(y))
#define _abs(x) ((x)<0? (-(x)):(x))
#define getmin(x,y) (x= ((x)<0 || (y)<(x))? (y):(x))
#define getmax(x,y) (x= ((y)>(x))? (y):(x))
template void _swap(t &x,t &y)
int ts,cas=1;
const int m=1000+5;
int n,m;
char maze[m][m];
map,int>mp;
int vis[m][m],dir[4][2]=,,,};
struct node
};vectors,h;
struct km{
typedef int type;
int n,m,match[m];
type lx[m],ly[m],w[m][m],d;
bool vx[m],vy[m];
void init(int _n,int _m){
n=_n,m=_m,clr(match,-1,m);
for(int i=0;i
題目243 交換輸出
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 輸入n n 100 個數,找出其中最小的數,將它與最前面的數交換後輸出這些數。如果這個第乙個數就是最小的數,則保持原樣輸出,如果最小的數有相同的按照前面的交換 輸入 輸入資料有多組,每組佔一行,每行的開始是乙個整數n,表示這個測...
nyoj 243交換輸出
描述 輸入n n 100 個數,找出其中最小的數,將它與最前面的數交換後輸出這些數。如果這個第乙個數就是最小的數,則保持原樣輸出,如果最小的數有相同的按照前面的交換 輸入 輸入資料有多組,每組佔一行,每行的開始是乙個整數n,表示這個測試例項的數值的個數,跟著就是n個整數。n 0表示輸入的結束,不做處...
NYOJ 243 交換輸出
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 輸入n n 100 個數,找出其中最小的數,將它與最前面的數交換後輸出這些數。如果這個第乙個數就是最小的數,則保持原樣輸出,如果最小的數有相同的按照前面的交換 輸入 輸入資料有多組,每組佔一行,每行的開始是乙個整數n,表示這個測...