From b6e08801482225a3a7b2d540e7aa4e95cf8fd723 Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Thu, 4 Sep 2025 15:02:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0P7992=E5=92=8Clibre10?= =?UTF-8?q?115=E4=B8=A4=E4=B8=AA=E7=AE=97=E6=B3=95=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E7=9A=84=E8=A7=A3=E5=86=B3=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加了两个新的算法实现文件: 1. P7992.cpp - 实现了一个基于前缀和的统计问题解决方案 2. libre10115.cpp - 实现了一个使用二叉索引树(Fenwick Tree)的区间查询问题解决方案 --- src/9/4/P7992.cpp | 33 +++++++++++++++++++++++++++ src/9/4/libre10115.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 src/9/4/P7992.cpp create mode 100644 src/9/4/libre10115.cpp diff --git a/src/9/4/P7992.cpp b/src/9/4/P7992.cpp new file mode 100644 index 0000000..6356c28 --- /dev/null +++ b/src/9/4/P7992.cpp @@ -0,0 +1,33 @@ +#include +#include +#include +#include +using ll = int64_t; + + +int main(){ + std::iostream::sync_with_stdio(false); + std::cin.tie(nullptr); + + ll n,m; + std::cin>>n>>m; + std::vector va(m+1),vb(m+1); + for(ll i=1;i<=n;i++){ + ll a,b; + std::cin>>a>>b; + va[a]++; + vb[b]++; + } + std::vector pre(2*m+2); + for(ll i=0;i<=m;i++){ + for(ll j=0;j<=m;j++){ + pre[i+j]+=va[i]*va[j]; + pre[i+j+1]-=vb[i]*vb[j]; + } + } + ll ans=0; + for(ll i=0;i<=2*m;i++){ + ans+=pre[i]; + std::cout< +#include +#include +#include +using ll = int64_t; + +struct BT{ + const ll size; + std::vector t; + static inline ll lb(ll n){ + return n&(-n); + } + BT(ll size):size(++size),t(size+1){ + + } + inline void upd(ll idx,ll add){ + while(idx<=size){ + t[idx]+=add; + idx+=lb(idx); + } + } + inline ll get(ll idx){ + ll res=0; + while(idx){ + res+=t[idx]; + idx-=lb(idx); + } + return res; + } +}; + +int main(){ + std::ios_base::sync_with_stdio(false); + std::cin.tie(nullptr); + + ll n,m; + std::cin>>n>>m; + BT s(n),e(n); + for(ll i=1;i<=m;i++){ + ll k,l,r; + std::cin>>k>>l>>r; + if(k==1){ + s.upd(l, 1); + e.upd(r, 1); + }else{ + ll nans= + s.get(r) - e.get(l-1); + + std::cout<