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

建站公司经营seo培训班

建站公司经营,seo培训班,芜湖有哪些知名企业,网站建设早会说什么目录 一维前缀和 【模板】前缀和 Tokitsukaze and Average of Substring 二维前缀和(在考场上一般是现推) 求二维前缀和公式(求增加点(i,j)时虚线上方的区域): 求一个区域内的值(红色区域)…

目录

一维前缀和 

【模板】前缀和

 Tokitsukaze and Average of Substring

二维前缀和(在考场上一般是现推)

求二维前缀和公式(求增加点(i,j)时虚线上方的区域):

求一个区域内的值(红色区域),需要知道两个点,减去图上虚线部分,再将多减去的加回来即可(+1是为了包含边缘点,可类比一维前缀和):

【模板】二维前缀和

 ​编辑​编辑​编辑

[HNOI2003]激光炸弹


一维前缀和 

【模板】前缀和

#include<bits/stdc++.h>
#define int long long 
using namespace std;const int N=100000+10;
int n,q;
int a[N],s[N];signed main()
{cin>>n>>q;for(int i=1;i<=n;i++){cin>>a[i];s[i]=s[i-1]+a[i];}while(q--){int l,r;cin>>l>>r;cout<<s[r]-s[l-1]<<endl;}return 0;} 

 Tokitsukaze and Average of Substring

详解:点击跳转

时间复杂度分析:n^2<1e7,1s大概是1e8,双层遍历不会超时

思路:分别预处理每个字符的前缀和,才可以用O(1)求出每个l-r中相同字符的对数

tips:

对于cnt,是要将所有数对相加,已知数对之间存在规律,即之间为一个等差数列,所有利用高斯求和公式(1+2+3+……+n=n*(n-1)/2)求出每一组l和r对应的所有数对

#include<bits/stdc++.h>
#define int long longusing namespace std;const int N=5000+10;int pre[30][N];//前缀和数组void solve()
{int n;cin>>n;string s;cin>>s;for(int i=1;i<=n;i++)//遍历每一个字符 {//将每一个字符转换成数字,如将a映射成1、b映射成2……int cnt=s[i-1]-'a'+1;for(int j=1;j<=26;j++)//使用前缀和进行预处理 {if(j==cnt)pre[j][i]=pre[j][i-1]+1;elsepre[j][i]=pre[j][i-1];} }double ans=0.0;//初始化for(int i=1;i<=n;i++)//对于每一个字符对进行遍历 {for(int j=i+1;j<=n;j++)//对第i个字符的后面字符进行遍历 {int l=i,r=j;//左右区间 double cnt=0;//cnt是每一个C函数的值,即一个区间的数量//枚举26个字符l和r之间的数对数,在前面的预处理时已经过滤掉不相关的字符 for(int k=1;k<=26;k++){int tmp=pre[k][r]-pre[k][l-1];//l~r区间之间的对数 //左边是对不同字符间的情况相加,右边是对每一个相同的字符进行求和 cnt+=tmp*(tmp-1)/2; }ans=max(ans,cnt/(double)(r-l+1));//取 f函数最值 }} printf("%.6f\n",ans);//由于有多组测试数据,还要将pre数组置0for(int i=1;i<=26;i++)for(int j=1;j<=n;j++) pre[i][j]=0;} 
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--)//将每一个数据点用一个函数解决 solve();return 0;
}

二维前缀和(在考场上一般是现推)

求二维前缀和公式(求增加点(i,j)时虚线上方的区域):

求一个区域内的值(红色区域),需要知道两个点,减去图上虚线部分,再将多减去的加回来即可(+1是为了包含边缘点,可类比一维前缀和):

【模板】二维前缀和

 

#include<bits/stdc++.h>
#define int long long 
using namespace std;const int N=1000+10;int n,m,q;
int pre[N][N],g[N][N];
int ans;signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m>>q;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>g[i][j];//预处理前缀和 pre[i][j]=pre[i][j-1]+pre[i-1][j]-pre[i-1][j-1]+g[i][j];}}while(q--){int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;ans=pre[x2][y2]-pre[x2][y1-1]-pre[x1-1][y2]+pre[x1-1][y1-1];cout<<ans<<endl;}return 0;} 

[HNOI2003]激光炸弹

抽象出来就是要求求一个矩形内的一个正方形区域内的最大的值的和。

需要枚举矩形中正方形能圈住的每一个区域,前面预处理将5001所有都枚举了,后面再将所有的r正方形枚举一定不会错。

 注意!!!一个方格能有多个目标,所以需要写成g+=而不是g=

#include<bits/stdc++.h>
#define int long longusing namespace std;const int N=5000+10;int g[N][N],pre[N][N];//g是单独的一个小正方形的值,pre是前缀和 
int ans; 
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,r;cin>>n>>r;for(int i=1;i<=n;i++){int x,y,v;cin>>x>>y>>v;//由于坐标是从0开始,为了方便二位前缀和,将总体++使其从1开始,预处理时需要加1x++;y++;//一个方格能有多个目标,所以需要写成g+=而不是g= g[x][y]+=v;}for(int i=1;i<=5001;i++)for(int j=1;j<=5001;j++)//前缀和预处理 {pre[i][j]=pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1]+g[i][j];}for(int i=r;i<=5001;i++)//前面的点从1开始,所有需要遍历到5001 {for(int j=r;j<=5001;j++){int x1=i-r+1,y1=j-r+1;int x2=i,y2=j;//x1从1开始,x1与x2是一个对角线关系int tmp=pre[x2][y2]-pre[x2][y1-1]-pre[x1-1][y2]+pre[x1-1][y1-1];ans=max(ans,tmp);}}cout<<ans<<endl;return 0;
}

文章转载自:

http://l6WvojgE.rfmzc.cn
http://IypQdiKB.rfmzc.cn
http://rYSIcJ3T.rfmzc.cn
http://ZXb0chxD.rfmzc.cn
http://qYDPgGF8.rfmzc.cn
http://8J8T49GJ.rfmzc.cn
http://ZZoTuTyS.rfmzc.cn
http://CvI5LEsq.rfmzc.cn
http://GkREL90o.rfmzc.cn
http://qbECoTjU.rfmzc.cn
http://Rw9k0euD.rfmzc.cn
http://5KkS3Iew.rfmzc.cn
http://HsKR9XnM.rfmzc.cn
http://Vs4e7QZJ.rfmzc.cn
http://eyYVGUSi.rfmzc.cn
http://p62PFez0.rfmzc.cn
http://6Nq4p5UA.rfmzc.cn
http://InNKnzz9.rfmzc.cn
http://Sa6xnJQt.rfmzc.cn
http://3AoJg4gG.rfmzc.cn
http://lMQPkUV9.rfmzc.cn
http://VPMV1lPX.rfmzc.cn
http://O5GUA6Mi.rfmzc.cn
http://MOwnCSCA.rfmzc.cn
http://nKgFAJrZ.rfmzc.cn
http://uKu8VMV5.rfmzc.cn
http://1hZMPAPD.rfmzc.cn
http://1O8tny3b.rfmzc.cn
http://8aUSwy2u.rfmzc.cn
http://4lRWd6nC.rfmzc.cn
http://www.dtcms.com/wzjs/611648.html

相关文章:

  • 怎么制作游戏短视频临沂 网站优化
  • win2012服务器做网站wordpress修改发布页面插件
  • 昆山网站建设推荐北京网站建设推广
  • 网站建设赶集网韩国优秀平面设计网站有哪些
  • 东莞网站推广宣传wordpress放音乐播放器
  • 网上提供免费主页空间的网站旅游交友的网站建设
  • 把网站内容全删掉 在重新建立会不会被k西昌网站建设
  • 牡丹江seo网站推广蜘蛛屯优化排名教育培训网络推广培训
  • 网站开发的软 硬件环境标准cdn网站加速 免备案
  • 张家港网站设计优化在百度上做广告推广要多少钱
  • 深圳做网站 肖先生东莞网站建设 南城石佳
  • Django 个人博客网站开发wordpress弄个人博客好
  • 临沭有做网站的吗免费app制作软件下载
  • 重庆网站建设冒号商务网站建设摘要
  • 买了网站 怎么做呢昆山住房和城乡建设部网站
  • 外贸网站怎样做推广互联网公司薪酬体系
  • 网站服务器速度对seo有什么影响?wordpress movies themes
  • 网站服务器和空间有什么区别学校网站的建设与使用情况
  • 数据展示网站模板最好建网站系统的软件
  • 中国空间站研究项目工程建设是指
  • 深圳房产网优化大师网页版
  • 天河岗顶棠下上社网站建设邯郸网站建设服务平台
  • excel中批量做网站的超链接免费在线观看韩国电视剧网站推荐
  • 天津餐饮团购网站建设网站建设 环保素材
  • 怎么自己做彩票网站室内设计知名网站
  • 成都专业做网站的公司公司注册网上核名入口
  • 秦皇岛外贸网站建设哪家小吃培训网站做的最好
  • 携程官网seo优化报告
  • 厦门seo网络推广手机优化游戏性能的软件
  • 网站做淘客 还可以吗典型的口碑营销案例