CTSC2000 丘位元的煩惱

2022-05-31 19:27:11 字數 2484 閱讀 8106

description

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

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

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

情人節(valentine's day)的午夜零時,丘位元開始了自己的工作。他選擇了一組數目相等的男女,感應到他們互相之間的緣分大小,並依此射出了神箭,使他們產生愛意。他希望能選擇最好的方法,使被他選擇的每乙個人被射中一次,且每一對被射中的人之間的緣分的和最大。

當然,無論丘位元怎麼改造自己的弓箭,總還是存在缺陷的。首先,弓箭的射程儘管增大了,但畢竟還是有限的,不能像月下老人那樣,做到「千里姻緣一線牽」。其次,無論怎麼改造,箭的軌跡終歸只能是一條直線,也就是說,如果兩個人之間的連線段上有別人,那麼莫不可向他們射出丘位元之箭,否則,按月下老人的話,就是「亂點鴛鴦譜」了。

作為乙個凡人,你的任務是運用先進的計算機為丘位元找到最佳的方案。

input

輸入檔案第一行為正整數k,表示丘位元之箭的射程,第二行為正整數n(n<30),隨後有2n行,表示丘位元選中的人的資訊,其中前n行為男子,後n行為女子。每個人的資訊由兩部分組成:他的姓名和他的位置。姓名是長度小於20且僅包含字母的字串,忽略大小寫的區別,位置是由一對整數表示的座標,它們之間用空格分隔。格式為name x y。輸入檔案剩下的部分描述了這些人的緣分。每一行的格式為name1 name2 p。name1和name2為有緣人的姓名,p是他們之間的緣分值(p為小於等於255的正整數)。以乙個end作為檔案結束標誌。每兩個人之間的緣分至多只被描述一次。如果沒有被描述,則說明他們緣分值為1。

output

輸出檔案僅乙個正整數,表示每一對被射中的人之間的緣分的總和。這個和應當是最大的。

sample input23

0 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

endsample output

65二分圖帶權匹配,除了字串處理,以及判斷兩點之間是否有其他點麻煩點,就可以直接上km了

/*program from wolfycz*/

#include#include#include#include#include#include#define inf 0x7f7f7f7f

#define sqr(x) ((x)*(x))

using namespace std;

typedef long long ll;

typedef unsigned int ui;

typedef unsigned long long ull;

inline int read()

inline void print(int x)

const int n=35;

mapmp;

string s,t;

int bx[n],by[n],gx[n],gy[n],path[n],lx[n],ly[n],val[n][n];

bool visx[n],visy[n];

int dis,n;

bool check(int a,int b)

for (int i=1;i<=n;i++)

return 1;

}bool dfs(int x)

} }return 0;

}int km()

} for (int i=1;i<=n;i++) if (path[i]!=-1) sum+=val[path[i]][i];

return sum;

}int main()

for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) if (i!=j&&check(i,j)) val[i][j]=max(val[i][j],1);

printf("%d\n",km());

return 0;

}

ctsc2010 星際旅行

題意很簡單 給定一棵樹,問從根分別走到每個節點的最長路程,其中每個點給定lim,即最多從該點出發lim次,保證lim大於等於該點的度數。特別 鳴謝 ldl在他的模擬題中出了這道題。當題解講這要用樹形dp解網路流模型時,都被驚異了,完全沒有想到網路流,也完全沒有必要網路流,atm在考場上直接有樹形dp...

CTSC2018 混合果汁

為何要用整體二分,整體二分應該怎樣二分,和 poi2011 met meteors十分相像,這裡就不再重複。那麼對於乙個顧客來講,如果當前的區間總份數小於他想要的份數,或者是區間最小 大於他能接受的最大 就把該顧客劃分到右區間,如若滿足則劃分到左區間。想要和 poi2011 met meteors一...

CTSC2010 效能優化

ctsc2010 效能優化 迴圈卷積快速冪 兩個注意點 n 1不是2 k p 1形式,任意模數又太慢?n 2 k1 3 k2 5 k3 7 k4 多路分治!深刻理解fft運算本質 分治,推式子得到從下往上的迭代公式 最後求的是w n i的點值 快速冪 迴圈卷積快速冪比較特殊,就是g f,n的項的係數...