洛谷P1500 丘位元的煩惱 程式設計題

2021-12-29 19:57:06 字數 2833 閱讀 4758

隨著社會的不斷發展,人與人之間的感情越來越功利化。最近,愛神丘位元發現,愛情也已不再是完全純潔的了。這使得丘位元很是苦惱,他越來越難找到合適的男女,並向他們射去丘位元之箭。於是丘位元千里迢迢遠赴中國,找到了掌管東方人愛情的神——月下老人,向他求教。

月下老人告訴丘位元,純潔的愛情並不是不存在,而是他沒有找到。在東方,人們講究的是緣分。月下老人只要做一男一女兩個泥人,在他們之間連上一條紅線,那麼它們所代表的人就會相愛——無論他們身處何地。而丘位元的愛情之箭只能射中兩個距離相當近的人,選擇的範圍自然就小了很多,不能找到真正的有緣人。

丘位元聽了月下老人的解釋,茅塞頓開,回去之後用了人間的最新科技改造了自己的弓箭,使得丘位元之箭的射程大大增加。這樣,射中有緣人的機會也增加了不少。

情人節(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位學生的估分情況,分別...