題意:n個人類星球和m個外星人星球,每個星球(包括外星人的)都有乙個初始的飛船數sh1[i],還有乙個每年生產的飛船數p[i],還有乙個n*m的矩陣d,d[i,j]表示從人類星球i到外星人星球j的年數(..年啊),當乙個人類星球i可以擊敗乙個外星人星球j的唯一條件是在出發年數ye,(ye-d[i,j])*p[i]+sh1[i]>=ye*p[j]+sh1[j] 的時候,人類星球i可以擊敗外星球j,不考慮外星球攻擊人類星球(這不欺負人嗎?),每個人星球只能攻擊乙個外星球,每個外星球也只能被乙個人星球攻擊,問最早在哪年開始攻擊可以把所有外星球都打掉.
#include #include #include #include #define inf 1e11
#define ll long long
using namespace std;
const int n=500;
int map[n][n];
int hp[n];
int hshill[n];
int ap[n];
int ashill[n];
int n,m;
int edge[n][n];
int cx[n];
int cy[n];
int mark[n];
void builtmap(ll mid)
}int dfs(int u)}}
return 0;
}int maxmatch()
}return res;
}int main()
if(ans==-1)
cout<<"impossible"<
二分 二分匹配
給了乙個矩陣 n行m列 選n個數 要保證這n個數不在同行同列,計算出第k大的數最小 二分答案,然後我們對於每個a i j mid的我們就i和j建立一條邊 然後二分求最大匹配必須大於等於n k 1 因為是第k大 而不是第k小 坑了好久才發現 include include include includ...
POJ2446 二分匹配
題意 給你乙個n m的格仔,問你能不能用1 2的格仔把他鋪滿,有的位置是不能被鋪的。思路 水題,直接把個相鄰的並且都是可以鋪的點連一條邊然後匹配一遍就行了,提醒乙個地方,就是輸入不能鋪的座標的時候是 先輸入列再輸入行。include include define n node 1500 define...
POJ3020 二分匹配
思路 說給自己 一開始想的是從1 h w標記整幅圖,建圖是星號和 建邊,肯定要去匹配 啊,所以空格一定不會去造,然後就理解成了最小點覆蓋,然而對於最小點覆蓋,對於 孤立點 也就是沒有連出去的邊 這樣就錯了。但是對於這個思路還是打完了,然後發現錯了。其實對於 正確 思路要先想想是嘛。正解 這題題意是乙...