即使摸爬滾打,滿身泥濘,我也要前進
大致題意:給出一個DAG,問能否用n+1條可重複路徑覆蓋整個圖。
最小有重複路徑覆蓋問題,先傳遞閉包,轉化成無重複路徑覆蓋問題。 然後把原圖每個點拆成兩個點建立二分圖,然後用原圖點數最大匹配數就是答案。 如果可以覆蓋就輸出,否則二分一個最大可行權值,大於的點連一個的邊,表示忽略這個點,然後照常建圖即可。
#define others
#ifdef poj
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>
#endif // poj
#ifdef others
#include <bits/stdc++.h>
#include <ext/rope>
#include <ext/pb_ds/priority_queue.hpp>
#endif // others
//#define file
#define all(x) x.begin(), x.end()
using namespace std;
using namespace __gnu_pbds;
using namespace __gnu_cxx;
#define eps 1e-8
const double pi = acos(-1.0);
typedef long long LL;
typedef long long DLL;
typedef unsigned long long ULL;
void umax(LL &a, LL b) {
a = max(a, b);
}
void umin(LL &a, LL b) {
a = min(a, b);
}
int dcmp(double x) {
return fabs(x) <= eps?0:(x > 0?1:-1);
}
void file() {
freopen("data_in.txt", "r", stdin);
freopen("data_out.txt", "w", stdout);
}
DLL mod = 1e9;
DLL Pow(DLL a,DLL b) {
DLL res=1;
a%=mod;
for(; b; b>>=1) {
if(b&1)res=res*a%mod;
a=a*a%mod;
}
return res;
}
//
//void print(DLL x) {
// if(x < 0) {
// x = -x;
// putchar('-');
// }
// if(x > 9) print(x/10);
// putchar(x%10 + '0');
//}
//#define iostart
//#define iostart
#define pb(x) push_back(x)
namespace solver {
const int maxn = 510;
int n, m;
int g[maxn][maxn];
vector<int> G[maxn];
int link[maxn], vis[maxn];
int v[maxn];
bool dfs(int u) {
for(int i = 0; i < G[u].size(); i++) {
int v = G[u][i];
if(!vis[v]) {
vis[v] = 1;
if(link[v] == -1 || dfs(link[v])) {
link[v] = u;
return 1;
}
}
}
return 0;
}
int gao() {
int ans = 0;
memset(link, -1, sizeof link);
for(int i = 1; i <= m; i++) {
memset(vis, 0, sizeof vis);
if(dfs(i))
ans++;
}
return ans;
}
bool check_val(int x) {
for (int i = 1; i <= m; i++) {
G[i].clear();
}
for (int i = 1; i <= m; i++){
if (v[i] > x) {
G[i].push_back(i);
}
for (int j = 1; j <= m; j++){
if (g[i][j]) {
G[i].push_back(j);
// cout << i << " xx " << j << endl;
}
}
}
int match = gao();
// cout << x << " " << m - match << endl;
return m - match <= n + 1;
}
vector<int> hash_val;
void solve() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= m; i++){
int val, k;
scanf("%d%d", &val, &k);
v[i] = val;
hash_val.push_back(val);
while (k--) {
int to;
scanf("%d", &to);
g[i][to] = 1;
}
}
for (int k = 1; k <= m; k++) {
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= m; j++) {
if (g[i][k] && g[k][j]) {
g[i][j] = 1;
}
}
}
}
sort(all(hash_val));
hash_val.erase(unique(all(hash_val)), hash_val.end());
int L = 0, R = (int)hash_val.size() - 2, M;
while (L + 4 < R) {
M = L + R >> 1;
if (check_val(hash_val[M])) {
L = M;
} else {
R = M;
}
}
for (; L < R; L++) {
if (!check_val(hash_val[L]))
break;
}
if (check_val(hash_val[L])) {
puts("AK");
} else {
printf("%d\n", hash_val[L]);
}
}
}
int main() {
#ifdef iostart
ios::sync_with_stdio(0);
cin.tie(0);
#endif // iostart
// file();
solver::solve();
return 0;
}
由於傳遞閉包之後是一個稠密圖,所以可以用bitset去優化匈牙利演算法。
#define others
#ifdef poj
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
#include <set>
#endif // poj
#ifdef others
#include <bits/stdc++.h>
#include <ext/rope>
#include <ext/pb_ds/priority_queue.hpp>
#endif // others
//#define file
#define all(x) x.begin(), x.end()
using namespace std;
using namespace __gnu_pbds;
using namespace __gnu_cxx;
#define eps 1e-8
const double pi = acos(-1.0);
typedef long long LL;
typedef long long DLL;
typedef unsigned long long ULL;
void umax(LL &a, LL b) {
a = max(a, b);
}
void umin(LL &a, LL b) {
a = min(a, b);
}
int dcmp(double x) {
return fabs(x) <= eps?0:(x > 0?1:-1);
}
void file() {
freopen("data_in.txt", "r", stdin);
freopen("data_out.txt", "w", stdout);
}
DLL mod = 1e9;
DLL Pow(DLL a,DLL b) {
DLL res=1;
a%=mod;
for(; b; b>>=1) {
if(b&1)res=res*a%mod;
a=a*a%mod;
}
return res;
}
//
//void print(DLL x) {
// if(x < 0) {
// x = -x;
// putchar('-');
// }
// if(x > 9) print(x/10);
// putchar(x%10 + '0');
//}
//#define iostart
//#define iostart
#define pb(x) push_back(x)
namespace solver {
const int maxn = 510;
int n, m;
int g[maxn][maxn];
int a[maxn][maxn/32+1], b[maxn][maxn/32+1];
int link[maxn], vis[maxn];
int q[maxn];
typedef int U;
int tot = m >> 5;
inline void set1(U v[],int x){v[x>>5]|=1U<<(x&31);}
inline void flip(U v[],int x){v[x>>5]^=1U<<(x&31);}
bool dfs(int u) {
for (int i = 0; i <= tot; i++) {
for (;;) {
U o = b[u][i]&vis[i];
if (!o) break;
int y = i<<5|__builtin_ctz(o);
flip(vis, y);
if (!link[y] || dfs(link[y])) return link[y]=u, 1;
}
}
return 0;
}
int gao() {
for (int i = 1; i <= m; i++) link[i] = 0;
int ans = 0;
for(int i = 1; i <= m; i++) {
for (int j = 1; j <= m; j++) set1(vis, j);
if(dfs(i)) ans++;
}
return ans;
}
bool check_val(int x) {
for (int i = 1; i <= m; i++){
for (int j = 0; j <= tot; j++) {
b[i][j] = a[i][j];
}
}
for (int i = 1; i <= m; i++) {
if (q[i] > x) {
set1(b[i], i);
}
}
for (int i = 1; i <= m; i++) link[i] = 0;
int match = gao();
return m - match <= n + 1;
}
vector<int> hash_val;
void solve() {
scanf("%d%d", &n, &m);
tot = m >> 5;
for (int i = 1; i <= m; i++){
int val, k;
scanf("%d%d", &val, &k);
q[i] = val;
hash_val.push_back(val);
while (k--) {
int to;
scanf("%d", &to);
g[i][to] = 1;
}
}
for (int k = 1; k <= m; k++) {
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= m; j++) {
if (g[i][k] && g[k][j]) {
g[i][j] = 1;
}
}
}
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= m; j++) {
if (g[i][j])
set1(a[i], j);
}
}
sort(all(hash_val));
hash_val.erase(unique(all
相關推薦
即使摸爬滾打,滿身泥濘,我也要前進
大致題意:給出一個DAG,問能否用n+1條可重複路徑覆蓋整個圖。
最小有重複路徑覆蓋問題,先傳遞閉包,轉化成無重複路徑覆蓋問題。
然後把原圖每個點拆成兩個點建立二分圖,然後用原圖點數−-−最大匹配數就是答案。
如果可以覆蓋就輸出AKAKAK,否則二分一個最大可行
Delphi春天將來臨,Android遇到XE7我也是醉了,Hello World
感覺 員工 end std iss 固態硬盤 add sso 企業
回首往日,從Delphi 7走到如今。總感覺不慍不火。期間論壇倒掉無數,沒倒掉的也半死不活,大批的程序猿轉向C#,Java,PHP。
Delphi的開發高效有目共睹,一直不忍放棄。Delphi以前一夜之
終於,我也要出一本C#的書了 - 我的寫作歷程與C#書單推薦
必須 並發編程 人工 後來 做成 沒有 wcf learn 可能 我之前的面試題停了很久,是因為 - 我寫書去了。
前言
我於2012年3月開始工作,到現在馬上就滿六年了。這六年裏,我從一個連Sql server是什麽都不知道,只會寫最簡單的c#的程序員開始做起,一步一
不寫一行代碼,綠色三層我也行
mdb ces get type 今天 auth 訪問 參數 registry http://www.cnblogs.com/zhqian/archive/2010/07/06/1771798.html
沒有一行代碼的三層,功能肯定非常的簡單,但是,再簡單,我們也三層了,
「newbee-mall新蜂商城開源啦」GitHub 上最熱門的 Spring Boot 專案,我也要做一次靚仔!
>沒有一個冬天不可逾越,也沒有一個春天不會到來。
介紹一下新蜂商城的近況,同時,新蜂商城 Vue 版本目前也在開發中,在這篇文章裡我也向大家公佈一下新蜂商城 Vue 版本的開發進度,和大家同步一下,在不久後也會進行所有原始碼的開源。
## GitHub 上最熱門的專案榜單
有一天,群裡的一位朋友忽然發了
文件操作,是一個存為字符串格式的登陸系統,有增刪改查的功能,但不是我想要的。。。
str repl 修改 blog 一個 ice body pwd 刪除
def register(NAME, PWD, TEL):
with open(‘userdate.txt‘, ‘a‘, encoding=‘utf-8‘) as f:
new
兩個按鈕相關聯:改變員工級別,其對應的薪資也要相應改變。(框架要求:SSM )
碰到一個需求:
升遷時:只允許修改僱員級別與部門編號,或新增部門,其他欄位不能修改.僱員底薪要相應改變.
js介面獲取的值如下:員工級別從字典中獲取到,把級別對應的底薪用datalist顯示,往action傳的值為對應的員工級別;
<tr>
<td&
自興人工智慧學院發聲,AI好前景但也要選對平臺
自興人工智慧學院發聲,AI好前景但也要選對平臺
相信各位應當都看過未來科幻電影吧,對於其中像是“天網”那樣無所不知、無所不能的人工智慧超級計算機印象頗深吧。我們現在雖然做不到這麼高階的人工智慧成品,但對於AI行業的發展,我國無疑是重視的。但對於人工智慧教育,我國卻還沒能步入正軌。
我國的人工智慧專業還只是
自興人工智能學院發聲,AI好前景但也要選對平臺
科幻 系統 社會 現在 職責 放心 發展 興趣 美國 自興人工智能學院發聲,AI好前景但也要選對平臺
相信各位應當都看過未來科幻電影吧,對於其中像是“天網”那樣無所不知、無所不能的人工智能超級計算機印象頗深吧。我們現在雖然做不到這麽高端的人工智能成品,但對於AI行業的發展,
近半年來比特幣算力暴漲兩倍,礦工寧願虧錢也要穩固市場地位?
Fundstrat分析師Sam Doctor表示,自今年夏天以來,比特幣算力已經增長了兩倍。Doctor指出,儘管對現有裝置進行了升級,目前新增電力消耗也達到了1GW(千兆瓦),5月份的電力消耗是5.2GW。目前比特幣挖礦的保本價格是7300美元,而5月份則是6000美元。B
985應屆生吐槽:網際網路行業疲於奔命,公務員才是我想要的生活
對於很多應屆生而言,選擇在企業工作還是做公務員,是兩種截然不同的人生道路。就像下面這名985應屆生所吐槽的一樣,選擇網際網路行業雖然錢多,但年紀一大就疲於奔命,而公務員雖然工資不高,但卻可以做到工作和生活的平衡,這才是理想中的生活。
985應屆生打算全力
985應屆生吐槽:程式設計師行業疲於奔命,公務員才是我想要的生活
對於很多應屆生而言,選擇在企業工作還是做公務員,是兩種截然不同的人生道路。就像下面這名985應屆生所吐槽的一樣,選擇網際網路行業雖然錢多,但年紀一大就疲於奔命,而公務員雖然工資不高,但卻可以做到工作和生活的平衡,這才是理想中的生活。
985應屆生打算全力備考公務員了,祝我公考成功,看著網際
即使能寫Java和SQL,我也還是一個前端開發
down clas 瀏覽器 在服務器 cnblogs -m 數據庫 但我 工作 又到了年末,主寫Java已有半年多。在這半年的時間裏,我學會了使用Spring-Boot,學會了SQL,還學會了使用MongoDB。乍一看,我的工作內容好像大部分都是“後端”了,那我能不能算半個
【翻譯自mos文章】即使resource_limit = false, password的 資源限制也會生效
作用 pro use def alt doc 資源限制 lock bsp
即使resource_limit = false, password的 資源限制也會生效
參考原文:
Resource limits for passwords work even with re
即使沒人註視,也要努力成長。許多眼睛,都藏在你看不見的地方!
希望 一起 單詞 發出 今天 logs 眼睛 cnblogs .com
更新一下今天的學習進度:以後每天都會更新,倘若有啥感悟想說的話也會一起發出來,希望更多的人能和我一起堅持下去:
1.每天背誦50個英文單詞,復習鞏固了52個單詞,進度: 1350/348
別人做的掃地機器人,有機會我也想搞一臺!
分享圖片 class thread .cn images blog 機器 9.png image
http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=96088&extra=page%3D5&
python 1-2+3-4....99=? 這裏的題,我看到別人的寫法,五花八門的,自己也寫一個
blog sta 裏的 and str 想象力 pos 問題 就是 f = ""s = ""i = 1sum = 0while i < 100: if i %2 == 1 and i < 99: f = "-"
12)正式卸遊戲的第一步,可能是i遊戲殼(我也不清楚)
define end onkeydown 第一步 定時 log clas 可能 修改 1)首先是switch消息的種類的展示:
1 switch(uMsg)
2 {
3
4 case WM_CREATE://初始化
5
3星|《十大全球CEO親授企業高速成長的關鍵戰略》:作為CEO,我也非常坦率地表明過家庭優先於工作
書評 電子版 最有 家庭 ref alt png 合集 匹配 十大全球CEO親授 企業高速成長的關鍵戰略(《哈佛商業評論》增刊)
《哈佛商業評論》上的10來篇文章合集。大部分都看過,除了一篇中信的訪談,其他大部分是美國的有點舊的案例。
總體評價3星。
以下是書中一
我也不知道這算不算bug了,單純記錄,沒別的意思,圖片是上傳在慕課網的,所以預覽不了。。0.0
。。 https ref 讓我 chrom ron 允許 error 個人 無意發現慕課網修改個人簽名功能性bug
修改個人簽名失敗的問題
圖片
經過測試,像這樣兩行文字中間有換行的話,保存會提示error,如圖:
圖片
而如果不換行,就能成功:
圖片
圖片
瀏覽器用的Ch