FJ省隊集訓DAY1 T1

2022-05-09 01:39:07 字數 1185 閱讀 7584

題意:有一堆兔子,還有乙個r為半徑的圓,要求找到最大集合滿足這個集合裡的兔子兩兩連邊的直線不經過圓。

思路:發現如果有兩個點之間連邊不經過圓,那麼他們到圓的切線會構成一段區間,那麼這兩個點的區間一定會有交集,形如s0 s1 e0 e1

同樣的,如果是n個點,那就是s0 s1 s2..sn e0 e1 e2.. en

因此,我們列舉那個起始點,然後對於其他點我們按照s排序,對於e做最長上公升子串行即可。時間複雜度o(n^2 logn)

1 #include 2 #include 3 #include 4 #include 5

const

double pi = 3.14159265358979324;6

double th1[2000], th2[2000], b[2000], x[2000], y[2000

];7 std::pairdouble, double>, int> a[2000];8

int t[2001], t2[2001], f[2001

], n;

9 std::vectoransv;

10double

r;11

intmain()

23int ans = 1

;24 ansv.push_back(0

);25

for (int i = 0; i < n; i++) else

37if (a[l].first.second < 0) a[l].first.second += 2*pi;

38 a[l].second =j;

39 l++;40}

41 std::sort(a, a +l);

42for (int j = 0; j < l; j++) b[j] =a[j].first.second;

43 std::sort(b, b +l);

44for (int j = 1; j <= l; j++) t[j] = 0;45

for (int j = 0; j < l; j++)

56if (ans2 != -1

) 62

}63 printf("

%d\n

", ans);

64return0;

65 }

FJ省隊集訓DAY3 T1

思路 我們考慮如果取掉乙個部分,那麼能影響到最優解的只有離它最近的那兩個部分。我講的貌似不是很清楚。還有,蜜汁80分,打死也改不出來。1 include2 include3 include4 include5 include6 struct nodea 1200005 9 struct segmen...

FJ省隊集訓DAY3 T2

思路 如果乙個dag要的路徑上只要一條邊去切掉,那麼要怎麼求?很容易就想到最小割,但是如果直接做最小割會走出重複的部分,那我們就這樣 反向邊設為inf,這樣最小割的時候就不會割到了,判斷無解我們直接用tarjan 1 include2 include3 include4 include5 inclu...

NOIP 提高組 day1 T1 小凱的疑惑

題目描述 小凱手中有兩種面值的金幣,兩種面值均為正整數且彼此互素。每種金幣小凱都有 無數個。在不找零的情況下,僅憑這兩種金幣,有些物品他是無法準確支付的。現在小 凱想知道在無法準確支付的物品中,最貴的價值是多少金幣?注意 輸入資料保證存在 小凱無法準確支付的商品。輸入輸出格式 輸入格式 輸入資料僅一...