這題實際上可以亂搞23333,然後就就ac了
我們先對x進行排序,然後用vector記錄一下相同xy下點的個數
然後我們可以對這些同一行列點的個數排乙個序,從大往小搜尋
對於當前點的座標我們可以用lower_bound二分確定左右的個數
在上下左右四個值裡面取乙個最小值
如果當前的行或列的點個數小於找到的最大值,直接剪掉就好了,然後。。。。就過了
複雜度o(n2logn)?神仙複雜度
code:
1 #include2 #include3 #include4 #include5 #include6over#define n 100006
7using
namespace
std;
8struct
nodee[n];
11bool cmp(const node &a,const node &b)
15struct
tx[n],y[n];
18long
long
read()
25while
(isdigit(c))
29return x*f;30}
31bool bmp(const t&a,const t&b)
35 vector
long>x[100001],y[100001
];36 map
long,int>check;
37int
main()
46 sort(e+1,e+n+1
,cmp);
47for(long
long i=1;i<=n;i++)
51for(long
long i=1;i<=n;i++)x[i].num=x[i].size(),x[i].id=i;
52for(long
long i=1;i<=n;i++)y[i].num=y[i].size(),y[i].id=i;
53 sort(x+1,x+n+1
,bmp);
54 sort(y+1,y+n+1
,bmp);
55long
long max0=0;56
long
long num=0;57
for(long
long i=1;i<=n;i++)
72else
if(min0==max0) 75}
76}77 cout
<
78return0;
79 }
uva140 dfs(回溯)最優性剪枝
題解 1.原書中已經說明,如果兩個節點的頻寬 最小頻寬,無論如何也不可能比原解更優,應該剪掉。2.注意此題讀入的時候一定要按字典序儲存,這樣計算出的最小值才是符合要求的 3.注意strtok的用法 include include include include include include inc...
UVA690 最優性剪枝 估價函式
uva690題目完完全全就是流水線模擬,給出指令的時序圖,要你算出10條指令並行執行的最優流水線開銷,我在紫書上找到的這道題,劉大爺把它放在了第七章 暴力求解法,那我們就來用暴力莽一發 不管什麼流水線排程的高階演算法,直接暴力模擬流水線的執行,列舉所有指令的分配情況 那麼我們很容易想到 流水線執行的...
HDU 1584 蜘蛛牌 dfs 最優性剪枝
題目大意 給出10張牌,隨機分布在1 10十個不同的位置,要求模擬蜘蛛紙牌的遊戲規則,問移動的最短距離之和是多少 題目分析 我們可以直接dfs搜尋,但需要想清楚該怎麼搜尋,這個題目有點貪心的思想,因為要求移動距離之和最小,所以我們應該盡量避免多餘的移動,簡單來說,我們只需要將當前牌放置到比當前牌序號...