題目大意:
給n
nn個線段.假設選擇k
kk個線段,它們的交集長度為s
ss.要求最大化min
(k,s
)min(k,s)
min(k,
s).n,l
i,ri
≤3e5
n , l_i,r_i\leq 3e5
n,li,
ri≤
3e5
題目思路:
首先想的是三分選擇的k
kk個線段。求最大的交集。因為s
ss隨著k
kk增大而減小。所以min
(k,s
)min(k,s)
min(k,
s)最大值存在於它們值接近的地方。
但是無法實現求最大交集.所以沒寫出來。
正解: 列舉交集長度sss.
列舉左端點l
ll.右端點r
rr越大,s
ss越大。但k
kk越小。
所以這個時候可以三分.但是這裡提供乙個二分的思路:
m in
(a,b
)min(a,b)
min(a,
b),a ,b
a,ba,
b成反比時。那麼我們可以求最大的a
aa使得a≤b
a \leq b
a≤b.
然後就是已知l,s
l,sl,
s,求k
kk:求有多少個li,
ri
l_i,r_i
li,ri
使得li≤
l&&r
i≤l+
s−
1l_i \leq l\ \&\& \ r_i \leq l + s - 1
li≤l&
&ri
≤l+s
−1這個顯然可以用樹狀陣列計算貢獻。
ac**:
#include
using
namespace std;
const
int maxn =
3e5+5;
vector<
int> a[maxn]
;int n , m , sum[maxn]
;int
lowbit
(int x)
void
add(
int x,
int c)
}int
ask(
int x)
return ans;
}int
main()
int ans =0;
for(
int i =
1; i <= n ; i++
) ans = max (ans , r - i +1)
;}cout << ans << endl;
return0;
}
2020ICPC江西省賽個人總結補題
結果 solo8題,一發過。還有三道題有思路,但是沒寫出來.b,e,i,k,m題水.g.mathematical practice 題目大意 讓你將n個元素劃分成m個有順序的互不相交的子集 可以為空 問方案數。思路 1.看樣例猜結論 2.令dp i,j dp i,j dp i,j 代表i個元素劃分成...
2020(ICPC)江西省程式設計競賽正式賽
b 簽到題 include include include using namespace std intmain return0 e colour sequence 題意 給出乙個字串,每個字元代表一種顏色,輸出滿足所有顏色出現次數均為偶數次的連續子串的個數 思路 位運算 分析 0 ci 20,用...
2020ICPC模擬賽E(區間dp)
eeat walnuts 每次只能選乙個數字 下標為 j,i為它前乙個數字下標,k為下乙個數字的下標 而且這個數字不能是開頭或者結尾數字,把它消耗掉的代價是 a i a j a k 2,問最後剩兩個數字的時候的最小總花費是多少。區間dp,其實挺簡單,當時憨批了,其實一直是。pragma gcc op...