1141 - 喵哈哈村的智慧型大師丶).嫵鈳取玳°月
time limit:1s
memory limit:256mbyte
submissions:173solved:41
description
丶).嫵鈳取玳°月是月大叔的id,他是乙個智商高達429的智力大師,最擅長的技能就是搞事。今天他又要開始搞事了。
現在有n個元素ai
ai然後現在有q個詢問,每次月大叔想問一共有多少對pair,滿足a[i]+a[j]>=k(其中 i
input
輸入第一行包含乙個正整數
t(1≤t
≤100
)t(1≤t≤100)
,表示有t組資料對於每組資料:第一行兩個整數n,q。表示有
n(1≤n
≤100000
)n(1≤n≤100000)
個元素,
q(1≤q
≤100000
)q(1≤q≤100000)
次詢問第二行n個整數
aiai
(1≤ai≤
100000
)(1≤ai≤100000)
,表示每個元素的大小。接下來q行,每行乙個
k(1≤k
≤200000
)k(1≤k≤200000)
,表示詢問。
output
對於每組測試資料的詢問,輸出有多少對即可。
sample input
15 51 2 3 4 512345
sample output
10101098
題目大意:
給你n個數q次查詢,每次詢問a[i]+a[j]>=k的對數(i
題目思路:
首先如果用普通的方法做複雜度是q*n,顯然超時,所以這裡我們很好想到的是將複雜度降至x*logn,對於這種計數的問題
可以用fft來預處理,fft可以在n*logn的時間預處理所有a[i]+a[j]的和的個數,在用個字首和,然後就可以o(1)時間查詢
所以總的複雜度是n*logn+q
ac**:
#include #include #include #include #include using namespace std;
const double pi = acos(-1.0);
struct complex
complex operator +(const complex &b)
complex operator -(const complex &b)
complex operator *(const complex &b)
};void change(complex y,int len)
if(j < k)j += k;
}}void fft(complex y,int len,int on)}}
if(on == -1)
for(int i = 0;i < len;i++)
y[i].r /= len;
}const int maxn = 400040;
complex x1[maxn];
int a[maxn/4];
long long num[maxn];//100000*100000會超int
long long sum[maxn];
int main()
sort(a,a+n);
long long max;
if(n>1)
max = a[n-1]+a[n-2];
int len1 = a[n-1]+1;
int len = 1;
while( len < 2*len1 )len <<= 1;
for(int i = 0;i < len1;i++)
x1[i] = complex(num[i],0);
for(int i = len1;i < len;i++)
x1[i] = complex(0,0);
fft(x1,len,1);
for(int i = 0;i < len;i++)
x1[i] = x1[i]*x1[i];
fft(x1,len,-1);
for(int i = 0;i < len;i++)
num[i] = (long long)(x1[i].r+0.5);
len = 2*a[n-1];
//減掉取兩個相同的組合
for(int i = 0;i < n;i++)
num[a[i]+a[i]]--;
//選擇的無序,除以2
for(int i = 1;i <= len;i++)
sum[0] = 0;
for(int i = 1;i <= len;i++) //求字首和
sum[i] = sum[i-1]+num[i];
while(q--)
}return 0;
}
「玲瓏杯」ACM比賽 Round 23
a 生是脂肪的人 time limit 2s memory limit 128mbyte submissions 263solved 97 description 給定乙個整數n,輸出 10 n 7 的個位數。其中 abs n 1e18 input 第一行是乙個正整數t 1 t 100 表示資料組數...
玲瓏杯」ACM比賽 Round 11 待補
題目 官方題解 直接貼上了,沒過的題以後再補 儘管不太可能qaq 第一題 直接列舉所有可能的x並且計算答案,得出最優解 水題,忽略 第二題 可以連線的兩個工廠相當於可以匹配的兩個點,那麼問題轉化為求兩個串的最長公共子串行,但o n 2 的複雜度會超時,由於第二個串每個點最多只有6個點與之匹配,所以可...
玲瓏杯 20 造物主的戒律
題目鏈結 題意給乙個序列每次詢問給l,r,x,k1,k2,每次查詢區間中小於等於x的所有數字裡面第k1小的值以及大於x的所有數字裡面第k2小的值,如果不存在,輸出 1 每次輸出兩個數,對於每個數如果不存在,則單獨輸出 1 主席樹模板題,找出 x的個數p,然後查詢區間第k1 k2 p小的數字。incl...