最多有1k個點,n2 求出所有的連線的中點,某個中點每出現一次,都對答案貢獻+2。
又因為原圖中的點也可以作為中點,所以如果原圖的點出現在這些中點上,中點對答案的貢獻+1
最終取貢獻最大的那個中點,答案即為n - max(貢獻)
注:讓每個點的橫縱座標都乘2,能夠讓我們取中點的時候不會獲得小數的座標。
ps:比賽中因為原圖的點在作為中點時,座標沒有乘2,導致各種wa。
#include
using
namespace std;
typedef
long
long ll;
const ll maxn =
4e6+5;
struct node
}a[maxn]
, b[
10005];
mapans;
intmain()
for(ll i =
1; i <= n; i++)]
+=2;
a[++cnt]
.x = x;
a[cnt]
.y = y;}}
for(ll i =
1; i <= n; i++
) ans[
(node)]++
, a[
++cnt]
.x = b[i]
.x *
2, a[cnt]
.y = b[i]
.y *2;
ll ans1 =0;
for(ll i =
1; i <= cnt; i++
) ans1 =
max(ans1, ans[a[i]])
;printf
("%lld\n"
, n - ans1)
;return0;
}
2019ICPC徐州網路賽
theme n個數編號為1 n,兩種操作 1 x 將編號為x的數置為不可得,2 x 詢問x位置及其後第乙個可得數的編號。1 n,x 1e9,1 q 1e6 solution 首先想到用線段樹維護。初始時線段樹每個l r位置的值為l,1 x操作對應將x位置值置為inf,2 x 操作相當於查詢區間 x,...
2018徐州網路賽
a.hard to prepare dp 題目 題意 環形圈中,給每人乙個號碼,求使得相鄰數字反異或為正數的方案數。有題意可推出,每兩個數反異或要麼是0要麼是正數,所以也就是讓相鄰數字反異或後不能為0。又知道,與某個數反異或之後為0的只有唯一乙個數,因此可推出第1個人到第n個人分別可選的數的個人為 ...
徐州網路賽2018
網路賽的題比賽應該不會出了吧 嗯.include using namespace std define ll long long const int maxn 1005 int down,up,s,n int a maxn b maxn c maxn int dp maxn 305 int high...