題目位址
這道題關鍵在於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...