給出n個三維空間中的點,每次可以消除三維中至少有一維相等的點,問至少幾次可以消除所有點.
首先想到的是dp,但是很難記錄狀態,然後考慮網路流,想對每個點間兩個點記為a,b兩點,對所有a點和它共面的點的b點都連一條邊,然後跑費用流,但是建邊的複雜度就高達o(n^2),不僅會t,還會m.
正確思路是要抓住x,y,z三維都小於等於500,這就意味著可以考慮對於數值大小來建圖,可以將這題轉化為最小割,對於每乙個點都轉化為一條從s到t的路徑,期間經過x,y1,y2,z三個點(點的編號就是數值大小)其中,s->x,y1->y2,z->t三條邊的流量為1,這三條邊被割掉就表示這一面的點被刪去,這樣求一下最小割就行了.
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define n 50010
#define m 510
using
namespace
std;
int n,m,first[m<<2],cur[m<<2],bb=1,s,t=2001,deep[m<<2],ans;
bool px[m],py[m],pz[m];
struct bn
bn[1001000];
queue
que;
inline
void add(int u,int v,int w)
inline
void ad(int u,int v,int w)
inline
bool bfs()
}return deep[t];
}int dfs(int now,int mn)
}return0;}
int main()
for(i=1;i<=500;i++)
for(;bfs();)
cout
<}
AC日記 小行星 洛谷 P2711
pid 3437 星雲中有n顆行星,每顆行星的位置是 x,y,z 每次可以消除乙個面 即x,y或z座標相等 的行星,但是由於時間有限,求消除這些行星的最少次數。輸入格式 第1行為小行星個數n,第2行至第n 1行為xi,yi,zi,描述第i個小行星所在的位置。輸出格式 共1行,為消除所有行星的最少次數...
日本隼鳥2號探測器成功著陸小行星「龍宮」
據日本航天局 jaxa 訊息,北京時間 2 月 22 日 8 時左右,日本探測器隼鳥 2 號成功在小行星 龍宮 表面著陸。依照計畫,隼鳥 2 號在短暫降落到 龍宮 發射彈丸撞擊 龍宮 地表並採集地表下岩石等樣本。樣本採集完成後,隼鳥 2 號飛回到原待機地點。隼鳥 2 號是由日本航天局執行的一次小行星...
洛谷 P1645 序列
炒雞明顯的貪心題,主要就想讓一段區間與另一段裡面重合的數越多越好。於是先按照區間右端排序,然後盡可能的把數都往右靠攏,最後與另一段區間的前面的重合。然後可以用個flag來記錄哪些數被選了什麼的。include includeusing namespace std const int maxn 100...