csp s模擬測試52平均數,序列題解

2022-04-14 06:30:56 字數 1809 閱讀 9844

題面:

平均數:

第k個平均數不好求,我們考慮二分,轉化成平均數小於x的有幾個

慮把序列中的每個數減去 x,則我們只需求區間和小於 0 的區間數量。

我們對這個序列求字首和,則區間[l,r]和小於 0 當且僅當 sl-1>sr,

答案即為字首和序列 s 的逆序對數量,使用經典的歸併排序即可解決

#include#include#include#include#include#define int long long

#define double long double

using namespace std;

const int maxn=1e5+5;

int n,k,ans=0;

double l=0.0,r=1e9+1,sum[maxn],temp[maxn],res,a[maxn];

double max(double a,double b)

void merge_sort(int l,int r)else

} while(i<=mid)

while(j<=r)

for(i=l;i<=r;i++)

sum[i]=temp[i];

}bool check(double x)

merge_sort(0,n);

return ans序列:

考慮主席樹,相當與對每乙個位置建一棵動態開點權值線段樹,

我們不能把所有區間插進去,我們插入詢問,對於每乙個位置,經過它的詢問有很多,我們統計a[i]對整個答案的貢獻

我們對每乙個位置插入所有在這個位置上要查詢的x,然後答案就是對於每乙個位置i,在i所在的線段樹中找小於a[i]的x的數量,這是a[i]對整個答案的貢獻

修改後我們還像之前那樣查詢,如果將p位置更改為v,那麼減去a[p]的貢獻,在加上更改後的v對整個答案的貢獻

#include#include#include#include#include#define int long long

#define re register

using namespace std;

const int maxn=1e5+5;

int n,m,q,a[maxn],ans,x[maxn];

int root[maxn],tot=0,ls[maxn<<6],rs[maxn<<6],tr[maxn<<6];

struct node;

vectorv[maxn];

inline void insert(re int &k,re int pre,re int l,re int r,re int pos,re int val)

re int mid=(l+r)>>1;

if(pos<=mid) insert(ls[k],ls[pre],l,mid,pos,val);

else insert(rs[k],rs[pre],mid+1,r,pos,val);

tr[k]=tr[ls[k]]+tr[rs[k]];

}inline int query(re int k,re int l,re int r,re int opl,re int opr)

signed main()

for(re int i=1,l,r;i<=m;++i));

v[r+1].push_back((node));

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

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

printf("%lld\n",ans);

for(re int i=1,p,v;i<=q;++i)

return 0;

}

csp s模擬測試52

標籤 平均數處理 查單點上的區間操作 期望得分 40 40 40 實際得分 40 40 40 打了三個暴力 查詢第k小的連續子串行平均值。二分,很妙 二分平均值x,所有數減去x,做字首和,平均值比x小的區間 l,r 有 sum r sum 0 sum的逆序對數即是x在所有區間裡的排名。由於實數域,歸...

csp s模擬測試94

一場簡單題,打爆了。t1 腦抽分解質因數準備分子分母消,想了半天發現 jb 互質直接上天,果斷碼了高精滾蛋。t2 無腦手玩大樣例,突然靈光一閃想到對映到前 k 大小的區間,t3 寫完暴力準備划水,突然發現特殊性質可寫,10 分鐘拯救了 25 分。8003 24 46 7003 24 58 6503 ...

csp s模擬測試93

自閉場。t1 想到 cdq 因為複雜度少看見乙個 0 打了半年還用了 sort 直接廢掉,t2 t3 直接自閉暴力分都沒有。考場太慌了,心態不好。8002 07 34 003 12 11 0 03 11 53 8003 12 11 沒有前途就是垃圾趁早滾回實驗二安度晚年吧。cdq 不接受反駁。最簡單...