HDU 5936 中途相遇法

2021-09-16 21:50:55 字數 779 閱讀 7579

題目位址

這道題關鍵在於f(y, k)-y可以拆成f(a, k) + f(b, k) -(a1e5+b)

我們就把y的1e9範圍降到了1e5

然後我們可以對前一半1e5個數枚舉出x-f(a, k) + a1e5

然後對於後一半1e5個數用二分找到有多少和f(b, k)-b相同的就是個數。

注意當x等於零的時候會有a=0,b=0的情況,這時候我們要res-1因為題面說了y是正整數。

#include

using namespace std;

typedef

long

long ll;

ll f[

100005][

12];ll p

(int x,

int y)

res +

= t;

}return res;

}ll val[

100005];

void

init()

}}ll cal

(ll x, ll k)

ll res =0;

sort

(val, val+up)

;for

(int i =

0; i < up; i++

)return res-

(x==0)

;}int t =0;

ll x, k;

void

solve()

intmain()

hdu4963 中途相遇

將序列分成兩半,各n各字元。對於前一半,列舉每個字元屬於t1還是t2,共2 n種情況。在乙個方案中,t1的子串行為a,t2的子串行為b,我們假定a的長度不大於b的長度。顯然,a是b的字首才符合要求。令c b a,即b去掉a字首後剩餘的部分。同理,處理後一半得到乙個c 就是去掉相同字尾後剩餘的部分。當...

LA 2965 中途相遇法

題意 有很多字串 24 選出一些字串,要求這些字串的字母都是偶數次 分析 暴力2 24也很大了,中途相遇法 其原理就是一分為二,兩組解組成問題的解 考慮到,每個字串出現的次數沒什麼關係,只要關於他的奇偶,那麼就有二進位制,1出現奇數次,0偶數次 每乙個字串對應於乙個a位向量,在前半個表中,選擇一些字...

UVA 10125 中途相遇法

題意 給定乙個整數集合,找出最大的d,使得a b c d,a,b,c,d是集合中不同的元素 思路 如果單純的列舉a,b,c的複雜度是o n 3 的,為了降低複雜度,可以先把a b的情形都找出來,然後再列舉d和c,是否符合要求 ac include include include include in...