洛谷P2381 圓圓舞蹈

2022-05-02 16:24:08 字數 2106 閱讀 2552

熊大媽的乃修在時針的帶領下,圍成了乙個圓圈舞蹈,由於沒有嚴格的教育,奶牛們之間的間隔不一致。

奶牛想知道兩隻最遠的奶牛到底隔了多遠。奶牛a到b的距離為a順時針走和逆時針走,到達b的較短路程。告訴你相鄰兩個奶牛件的距離,請你告訴奶牛兩隻最遠的奶牛到底隔了多遠。

輸入格式:

第一行乙個整數n,表示有n只奶牛。(2<=n<=100000)

接下2-n+1行,第i行有乙個數,表示第i-1頭奶牛順時針到第i頭奶牛的距離。(1<=距離<=maxlingint,距離和<=maxlongint)

第n+1行的數表示第n頭奶牛順時針到第1頭奶牛的距離。

輸出格式:

一行,表示最大距離。

輸入樣例#1:

crile.in51

2345

輸出樣例#1:

crile.out

7solution

做法1:

記錄字首和,可知字首和是遞增的,列舉起點,我們不難二分乙個"中點"

中點左邊的點距離小於半個周長,右邊的點距離大於半個周長,然後用終點順、逆時針距離最小值更新答案即可。

複雜度o(nlogn)

做法2:

記錄字首和sum,總長度len

於是從第一頭奶牛開始,找到l,r兩隻牛,l <= r 這裡從1開始

不難發現當距離小於總長度一半的時候,我們需要去找l, r + 1

當距離大於總長度一半的時候,我們需要去找l + 1, r 一定優於l + 1, r + 1

這樣省去了很多無用的l,r

亂搞一下就可以了

複雜度o(n)

code

第二種做法

#include const int maxn = 100000 + 10;

inline void read(int &x)

inline void swap(int &a, int &b)

inline int min(int a,int b)

inline int max(int a,int b)

int n;

int sum[maxn],num[maxn],len;

int ans;

int main()

read(num[1]);len += num[1];sum[n + 1] = sum[n] + num[1];

int l = 1, r = 1;int mid = len >> 1;

while(l <= n + 1 && r <= n + 1)

else if(sum[r] - sum[l] <= mid)

else if(sum[r] - sum[l] > mid)

}printf("%d", ans);

return 0;

}

第一種做法

#include const int maxn = 300000 + 10;

inline void read(int &x)

inline void swap(int &a, int &b)

inline int min(int a,int b)

inline int max(int a,int b)

int n;

int sum[maxn >> 1],len;

int ans;

inline int erfen(int l, int r, int p)

return l;

}//列舉起始點i,二分找j,令s[j] - s[i] <= s / 2 這樣j 和 j-1 兩個點二選一

//處理環就多複製一層

int main()

for(int i = 1;i <= n;i ++)

for(int i = 1;i <= 2 * n;i ++)

printf("%d", ans);

return 0;

}

洛谷P5174 圓點

題目大意 給你 r r leqslant10 求 sum limits sum limits x 2 y 2 leqslant r x 2 y 2 題解 明顯可以發現這是對稱的,所以可以只列舉四分之一,並且 x,y leqslant sqrt r 所以式子成了 4 sum limits sum li...

洛谷P3254 圓桌問題

題目大意 有 m 個單位,每個單位有 r i 個代表,有 n 張餐桌,每張餐桌可容納 c i 個代表。要求同乙個單位的代表不在同乙個餐桌就餐。若可以,輸出 1 以及其中一種方案,否則輸出 0 題解 貪心,把餐桌大小和單位人數從小到大排序,因為單位規模越大就越難滿足,所以我們優先考慮他們。而桌子越多越...

洛谷題解P4326 求圓的面積

coci是crotian open competition in informatics,即克羅埃西亞資訊學公開賽。本題的坑點在於有些人不知道所謂的計程車幾何下的 圓 其實是乙個正方形 上面這個 圓 中,中心點到邊上的任意一點的距離都為 x1 x2 y1 y2 4。這個 圓 是由上下兩個三角形組成的...