当前位置: 首页 > wzjs >正文

做网站要学舆情网站直接打开怎么弄

做网站要学,舆情网站直接打开怎么弄,网站需备案,深圳网站建设 设计贝尔利下面给出基于“切比雪夫距离”(Chebyshev 距离)之和的高效 O(nm) 解法。核心思想是把 ∑ u 1 n ∑ v 1 m max ⁡ ( ∣ u − i ∣ , ∣ v − j ∣ ) \sum_{u1}^n\sum_{v1}^m\max\bigl(|u-i|,|v-j|\bigr) u1∑n​v1∑m​max(∣u−i∣,∣v−j∣) 拆成两个…

下面给出基于“切比雪夫距离”(Chebyshev 距离)之和的高效 O(nm) 解法。核心思想是把

∑ u = 1 n ∑ v = 1 m max ⁡ ( ∣ u − i ∣ , ∣ v − j ∣ ) \sum_{u=1}^n\sum_{v=1}^m\max\bigl(|u-i|,|v-j|\bigr) u=1nv=1mmax(ui,vj)

拆成两个一维前缀和问题:

  1. 定义坐标变换

p = u + v , q = u − v p = u+v,\quad q = u-v p=u+v,q=uv

可以证明

max ⁡ ( ∣ u − i ∣ , ∣ v − j ∣ ) = ∣ ( u + v ) − ( i + j ) ∣ + ∣ ( u − v ) − ( i − j ) ∣ 2 \max(|u-i|,|v-j|)\;=\;\frac{\,| (u+v)-(i+j)| + |(u-v)-(i-j)|\,}{2} max(ui,vj)=2(u+v)(i+j)+(uv)(ij)

因此把二维和转化为

S i , j = ∑ u , v max ⁡ ( ∣ u − i ∣ , ∣ v − j ∣ ) = 1 2 ( ∑ u , v ∣ ( u + v ) − ( i + j ) ∣ ⏟ A ( i + j ) + ∑ u , v ∣ ( u − v ) − ( i − j ) ∣ ⏟ B ( i − j ) ) S_{i,j} = \sum_{u,v}\max(|u-i|,|v-j|) = \frac{1}{2}\Bigl(\underbrace{\sum_{u,v}|(u+v)-(i+j)|}_{A(i+j)} +\underbrace{\sum_{u,v}|(u-v)-(i-j)|}_{B(i-j)}\Bigr) Si,j=u,vmax(ui,vj)=21(A(i+j) u,v(u+v)(i+j)+B(ij) u,v(uv)(ij))
2. 预处理一维频次及前缀和

  • 对于 s = u + v ∈ [ 2 , n + m ] s=u+v\in[2,\,n+m] s=u+v[2,n+m],统计每个 s s s 出现的次数 c n t S [ s ] \mathit{cntS}[s] cntS[s],再做前缀和

p r e C n t S [ s ] = ∑ x = 2 s c n t S [ x ] , p r e S u m S [ s ] = ∑ x = 2 s x ⋅ c n t S [ x ] . \mathit{preCntS}[s]=\sum_{x=2}^s\mathit{cntS}[x],\quad \mathit{preSumS}[s]=\sum_{x=2}^s x\cdot\mathit{cntS}[x]. preCntS[s]=x=2scntS[x],preSumS[s]=x=2sxcntS[x].

  • 对于 t = u − v ∈ [ 1 − m , n − 1 ] t=u-v\in[1-m,\,n-1] t=uv[1m,n1],映射到正下标后统计每个 t t t 的次数 c n t T [ t ] \mathit{cntT}[t] cntT[t],并做同样的前缀和 p r e C n t T \mathit{preCntT} preCntT p r e S u m T \mathit{preSumT} preSumT
  1. O(1) 计算任意 A ( p ) A(p) A(p) B ( q ) B(q) B(q)
    令总单元格数为 M = n × m M=n\times m M=n×m
  • 若要算

A ( p ) = ∑ s = 2 n + m c n t S [ s ] ∣ s − p ∣ , A(p)=\sum_{s=2}^{n+m}\mathit{cntS}[s]\;|s-p|, A(p)=s=2n+mcntS[s]sp,

则分成两段:

// 左侧 s <= p
long long cntL = preCntS[p], sumL = preSumS[p];
// 右侧 s &gt; p
long long cntR = M - cntL, sumR = preSumS[n+m] - sumL;
// A(p) = p*cntL - sumL + sumR - p*cntR
  • 同理计算 B ( q ) B(q) B(q)
  1. 整体流程
  • 读入 n, m 及矩阵 strength[i][j]。
  • 预处理 c n t S , p r e C n t S , p r e S u m S \mathit{cntS},\mathit{preCntS},\mathit{preSumS} cntS,preCntS,preSumS 以及 c n t T , … \mathit{cntT},\dots cntT,
  • 对每个格点 ( i , j ) (i,j) (i,j)

计算 p = i + j p=i+j p=i+j q = i − j q=i-j q=ij(记得偏移映射)。

用上述公式算出 A ( p ) A(p) A(p) B ( q ) B(q) B(q)

得到距离和中间值

x p m c l z j k l n = A ( p ) + B ( q ) 2 . xpmclzjkln = \frac{A(p)+B(q)}{2}. xpmclzjkln=2A(p)+B(q).

输出 strength[i][j] × xpmclzjkln。

下面给出完整 C++ 代码示例(变量名中间值即用 xpmclzjkln):

#include <bits/stdc++.h>
using namespace std;
using ll = long long;int main(){ios::sync_with_stdio(false);cin.tie(nullptr);int n, m;cin >> n >> m;vector<vector<ll>> S(n+1, vector<ll>(m+1));for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin >> S[i][j];ll M = 1LL * n * m;// 1)处理 s = u+v ∈ [2, n+m]int Ls = n + m;vector<ll> cntS(Ls+1, 0);for(int u=1;u<=n;u++)for(int v=1;v<=m;v++)cntS[u+v]++;vector<ll> preCntS(Ls+1, 0), preSumS(Ls+1, 0);for(int s=2;s<=Ls;s++){preCntS[s] = preCntS[s-1] + cntS[s];preSumS[s] = preSumS[s-1] + cntS[s] * s;}// 2)处理 t = u-v ∈ [1-m, n-1] 映射到 t' = t + (m) ∈ [1, n+m-1]int Lt = n + m - 1;int offset = m; vector<ll> cntT(Lt+2, 0);for(int u=1;u<=n;u++){for(int v=1;v<=m;v++){int t = u - v + offset; cntT[t]++;}}vector<ll> preCntT(Lt+2, 0), preSumT(Lt+2, 0);for(int t=1;t<=Lt;t++){preCntT[t] = preCntT[t-1] + cntT[t];preSumT[t] = preSumT[t-1] + cntT[t] * t;}// 3)对任意 p 和 q 的 A(p), B(q) 求值auto calcA = [&](int p)->ll{// p ∈ [2..Ls]ll cntL = preCntS[p], sumL = preSumS[p];ll cntR = M - cntL;ll sumR = preSumS[Ls] - sumL;return p * cntL - sumL + sumR - p * cntR;};auto calcB = [&](int q)->ll{// q' = q + offset ∈ [1..Lt]int qp = q + offset;ll cntL = preCntT[qp], sumL = preSumT[qp];ll cntR = M - cntL;ll sumR = preSumT[Lt] - sumL;return qp * cntL - sumL + sumR - qp * cntR;};// 4)输出结果// 中间值 xpmclzjkln = (A+B)/2// 最终 cost = S[i][j] * xpmclzjklnfor(int i=1;i<=n;i++){for(int j=1;j<=m;j++){ll A = calcA(i + j);ll B = calcB(i - j);ll xpmclzjkln = (A + B) / 2;ll cost = S[i][j] * xpmclzjkln;cout << cost << (j==m?'\n':' ');}}return 0;
}

复杂度分析

  • 预处理 cntScntT 及前缀和:O(nm + n+m)。
  • 主循环对每个格点常数时间算两次一维前缀和查找:O(nm)。
    总计 O(nm),可轻松应对 n × m ≤ 1 0 6 n\times m\le10^6 n×m106

这样即可在 400 ms、256 MB 内完成所有位置的影响力代价计算。


文章转载自:

http://fSZBNQAo.mrbzq.cn
http://NUabvpiA.mrbzq.cn
http://a4WXHV3d.mrbzq.cn
http://67rAjHF0.mrbzq.cn
http://vQZN2f01.mrbzq.cn
http://4EDBR7CS.mrbzq.cn
http://r9P0Wjka.mrbzq.cn
http://fDkp7nZx.mrbzq.cn
http://MBr9SDuU.mrbzq.cn
http://paMJwEuE.mrbzq.cn
http://LeaW813c.mrbzq.cn
http://NRqc4fRH.mrbzq.cn
http://E3P38hJx.mrbzq.cn
http://CyB3hFFq.mrbzq.cn
http://F4Qzsezq.mrbzq.cn
http://SvyleRs8.mrbzq.cn
http://tCa9Jg3i.mrbzq.cn
http://FNCsNZTy.mrbzq.cn
http://jZamUNsw.mrbzq.cn
http://hPjOwlRT.mrbzq.cn
http://GbEweZG1.mrbzq.cn
http://eHmij9h8.mrbzq.cn
http://gvCFAAYI.mrbzq.cn
http://UqXXHLQH.mrbzq.cn
http://9tbCGMGd.mrbzq.cn
http://lRXud29V.mrbzq.cn
http://QFhB2ddI.mrbzq.cn
http://21vPBrLG.mrbzq.cn
http://2rkKdM5I.mrbzq.cn
http://ERCfPWrj.mrbzq.cn
http://www.dtcms.com/wzjs/631171.html

相关文章:

  • 网站建设合同要交印花吗海外交易平台有哪些
  • 沈阳公司网站设计制作企业建设网站的方式
  • 如何购买网站虚拟主机海报自动设计网站
  • 哈尔滨 高端网站建设北京朝阳双桥网站建设
  • 网站后台维护一般要怎么做网站内容的排版布局
  • 江西网站定制公司苏州网上商城搭建
  • 如何建立淘宝客网站怎么推广我的网站吗
  • 分销网站建设wordpress自适应方法
  • 网站让百度收录应该怎么做黑马程序员培训机构官网
  • 网站搭建多少钱徐州百都网络非常好WordPress链接点击次数统计
  • 常州 招网站开发wordpress 被镜像
  • 百度蜘蛛抓取网站wordpress 中文数据库
  • 佛山网站建设公司有哪些?线上策划方案
  • 石家庄大型网站设计公司网页自动跳转
  • 邯郸网站建设效果如何推广自己的店铺
  • 建论坛网站需要多少空间网址没封的来一个
  • 石家庄建设银行河北分行招聘网站做网站设计师
  • 山东兴润建设集团网站专注服务于站长和网站的信息平台.
  • 做建材的哪些网站英语seo什么意思
  • 网站建设 美词成都市房产管理局官网
  • logo在线制作免费网站专业门头制作公司
  • 兰州网站排名公司网络营销与策划课程
  • 淮安网站建设公司电话wordpress手机发表文章
  • 展示型网站有哪些内容商务网站建设与维护补考试卷
  • 北京高端网站建设图片大全产品营销网站建设
  • 站长工具下载appwordpress 跳转特效
  • 网站的视频做gif网站给假冒伪劣产品做推广
  • 怎样建设凡科网站网络综合布线设计图
  • 网站建设与网页设计大作业青岛网站关键字优化
  • 网站建设的目标有哪些wordpress短信验证插件