隨著社會的不斷發展,人與人之間的感情越來越功利化。最近,愛神丘位元發現,愛情也已不再是完全純潔的了。這使得丘位元很是苦惱,他越來越難找到合適的男女,並向他們射去丘位元之箭。於是丘位元千里迢迢遠赴中國,找到了掌管東方人愛情的神——月下老人,向他求教。
月下老人告訴丘位元,純潔的愛情並不是不存在,而是他沒有找到。在東方,人們講究的是緣分。月下老人只要做一男一女兩個泥人,在他們之間連上一條紅線,那麼它們所代表的人就會相愛——無論他們身處何地。而丘位元的愛情之箭只能射中兩個距離相當近的人,選擇的範圍自然就小了很多,不能找到真正的有緣人。
丘位元聽了月下老人的解釋,茅塞頓開,回去之後用了人間的最新科技改造了自己的弓箭,使得丘位元之箭的射程大大增加。這樣,射中有緣人的機會也增加了不少。
情人節(valentine's day)的午夜零時,丘位元開始了自己的工作。他選擇了一組數目相等的男女,感應到他們互相之間的緣分大小,並依此射出了神箭,使他們產生愛意。他希望能選擇最好的方法,使被他選擇的每乙個人被射中一次,且每一對被射中的人之間的緣分的和最大。
當然,無論丘位元怎麼改造自己的弓箭,總還是存在缺陷的。首先,弓箭的射程儘管增大了,但畢竟還是有限的,不能像月下老人那樣,做到「千里姻緣一線牽」。其次,無論怎麼改造,箭的軌跡終歸只能是一條直線,也就是說,如果兩個人之間的連線段上有別人,那麼莫不可向他們射出丘位元之箭,否則,按月下老人的話,就是「亂點鴛鴦譜」了。
作為乙個凡人,你的任務是運用先進的計算機為丘位元找到最佳的方案。
輸入格式:
輸入第一行為正整數k,表示丘位元之箭的射程,第二行為正整數n(n<30),隨後有2n行,表示丘位元選中的人的資訊,其中前n行為男子,後n行為女子。每個人的資訊由兩部分組成:他的姓名和他的位置。姓名是長度小於20且僅包含字母的字串,忽略大小寫的區別,位置是由一對整數表示的座標,它們之間用空格分隔。格式為x y name。輸入檔案剩下的部分描述了這些人的緣分。每一行的格式為name1 name2 p。name1和name2為有緣人的姓名,p是他們之間的緣分值(p為小於等於255的正整數)。以乙個end作為檔案結束標誌。每兩個人之間的緣分至多只被描述一次。如果沒有被描述,則說明他們緣分值為1。
輸出格式:
輸出僅乙個正整數,表示每一對被射中的人之間的緣分的總和。這個和應當是最大的。
輸入樣例#1:?2
30 0 adam
1 1 jack
0 2 george
1 0 victoria
0 1 susan
1 2 cathy
adam cathy 100
susan george 20
george cathy 40
jack susan 5
cathy jack 30
victoria jack 20
adam victoria 15
end輸出樣例#1:?65每個測試點1s
ctsc2000第二試
最大費用最大流,直接跑 ek 就可以了。
結果好端端的 ek 板子被我敲炸了,於是 wa *4。。。
後來才發現加邊時 反向邊流量 未賦0 && 花費未變為相反數。。。
吃棗藥丸。。。
剩下的就是簡單的字串處理。
建圖:1.源點s(編號為0)連所有男人(編號從1到n)
2.所有女人(編號從n+1到2*n)連匯點t(編號為2*n+1)
3.將能匹配(距離小於射程k,連線段上無人)的男人和女人連線
附**:
#include
#include
#include
#include
#include
#include
#include
#define maxn 100
#define max 999999999
using namespace std;
int n,k,c=2,s,t,maxcost=0;
int head[maxn],path[maxn],fa[maxn],deep[maxn],g[maxn][maxn];
bool vis[maxn];
string name[maxn];
struct node1a[maxn*maxn];
struct node2b[maxn];
inline int read()
while(c>='0'&&c<='9')
return date*w;
}inline int relax(int u,int v,int i,int cost)
path[s]=0;
vis[s]=true;
q.push(s);
while(!q.empty())
} }if(path[t]==-max)return false;
for(int i=t;i!=s;i=fa[i])
return true;
}void ek()
inline double dis(int i,int j)
void change(string &s)
bool check(int i,int j)
return true;
}int main()
for(int i=1;i<=n;i++)
while(1)
if(x>y)swap(x,y);
g[x][y]=g[y][x]=z;
} for(int i=1;i<=n;i++)
for(int j=n+1;j<=n*2;j++)
if(check(i,j))
add(i,j,1,g[i][j]==0?1:g[i][j]);
ek();
printf("%d\n",maxcost);
return 0;
}
洛谷P1500 丘位元的煩惱
隨著社會的不斷發展,人與人之間的感情越來越功利化。最近,愛神丘位元發現,愛情也已不再是完全純潔的了。這使得丘位元很是苦惱,他越來越難找到合適的男女,並向他們射去丘位元之箭。於是丘位元千里迢迢遠赴中國,找到了掌管東方人愛情的神 月下老人,向他求教。月下老人告訴丘位元,純潔的愛情並不是不存在,而是他沒有...
洛谷P1678 煩惱的高考志願
題目背景 計算機競賽小組的神牛v神終於結束了萬惡的高考,然而作為班長的他還不能閒下來,班主任老t給了他乙個艱鉅的任務 幫同學找出最合理的大學填報方案。可是v神太忙了,身後還有一群小姑娘等著和他約會,於是他想到了同為計算機競賽小組的你,請你幫他完成這個艱鉅的任務。題目描述 根據n位學生的估分情況,分別...
洛谷P1678 煩惱的高考志願
題目背景 計算機競賽小組的神牛v神終於結束了萬惡的高考,然而作為班長的他還不能閒下來,班主任老t給了他乙個艱鉅的任務 幫同學找出最合理的大學填報方案。可是v神太忙了,身後還有一群小姑娘等著和他約會,於是他想到了同為計算機競賽小組的你,請你幫他完成這個艱鉅的任務。題目描述 根據n位學生的估分情況,分別...