2020牛客多校第一場 I 1 or 2

2021-10-08 23:58:09 字數 2018 閱讀 8071

鏈結

給定n個點m條邊的圖,和n個di值,對於1<=i<=n,問能否刪除某些邊使得,第i個點所連邊數都為di

當時這題旁邊有人用最大流過了,但是真演算法是一般圖最大匹配

需要把所有點進行以下處理。

大佬部落格

這個拆度和拆邊思路可以記一下

雖然的確不知道原理。

要注意本題d的範圍為1或2。

拆邊拆度之後所有的d都為1,即一般圖匹配。

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define lowbit(x) ( x&(-x) )

#define pi 3.141592653589793

#define e 2.718281828459045

#define inf 0x3f3f3f3f3f3f3f3f

#define half (l + r)>>1

#define lsn rt<<1

#define rsn rt<<1|1

#define lson lsn, l, mid

#define rson rsn, mid+1, r

#define ql lson, ql, qr

#define qr rson, ql, qr

#define myself rt, l, r

using namespace std;

typedef unsigned long long ull;

typedef unsigned int uit;

typedef long long ll;

const int maxn = 310, maxm = 4e3+ 7;

int n, m, head[maxn], cnt, l, id[55][2], d[maxn];

struct eddge

} edge[maxm];

inline void addeddge(int u, int v)

inline void _add(int u, int v)

struct dhs

inline int lca(int x, int y)}}

}void blossom(int x, int y, int p)

if (fid(x) == x) fa[x] = p;

if (fid(y) == y) fa[y] = p;

x = pre[y];}}

int aug(int s)

while (!q.empty()) q.pop();

q.push(s);vis[s]=1;

while (!q.empty())

return 1;

}vis[match[v]] = 1;

q.push(match[v]);

}else}}

return 0;

}inline int solve()

return ans;

}} dhs;

inline void init()

}int main()

init();

for(int i=1, u, v; i<=m; i++)

dhs.node++;

dhs.match[dhs.node] = dhs.tim[dhs.node] = 0;

head[dhs.node] = -1;

for(int i=0;i_add(dhs.node,dhs.node-1);

/* if(d[u] == 2 && d[v] == 2)

else

}}*/

}printf(dhs.solve() *2 == dhs.node ? "yes\n" : "no\n");

// cout<}

return 0;

}

2020 牛客多校第一場

a b suffix array f infinite string comparision jzk開場提出了兩倍最大的長度,然後 dh 說直接比較a b和b a即可,由於是訓練賽,不想寫太長的 然後交了一發直接比較的 就過了 includeusing namespace std string s1...

2020牛客多校第一場 A題

題意 給乙個字串,求出按函式的方法得到的b,b的所有以pi為起點的字尾按字典序排序。得到pi的序列。思路 找字尾陣列c 找到第i個後面與它相同字元的距離 可以證明b陣列與c陣列對應的字尾字典序是相反的。求c陣列的時候有些操作也在下面位址裡。上面兩個的位址 大佬位址 找出每個字尾陣列後,排序就可以了,...

2020牛客暑假多校 第一場 E,J

本題相當於比較 a b 與 b a 這裡簡要證明一下,以樣例的第三組資料為例子。a aba b abaa a b abaabaa b a abaaaba 很清楚地發現,a b b a,這樣怎麼推出a b呢,我們一步步看,首先a 0 b 0 a 1 b 1 a 2 b 2 說明a的所有元素與b的前三個...