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

广州外贸建站宝安公司免费网站建设

广州外贸建站,宝安公司免费网站建设,怎样制作网页二维码,四川省住房城乡建设厅网站首页作者:指针不指南吗 专栏:Acwing 蓝桥集训每日一题 🐾输出的时候,注意数据类型🐾 文章目录1.截断数组2.前缀和3.子矩阵的和4.k倍区间1.截断数组 给定一个长度为 n 的数组 a1a_1a1​,a2a_2a2​,…,ana_nan​。 现在&…

作者:指针不指南吗
专栏:Acwing 蓝桥集训每日一题

🐾输出的时候,注意数据类型🐾

文章目录

    • 1.截断数组
    • 2.前缀和
    • 3.子矩阵的和
    • 4.k倍区间

1.截断数组

给定一个长度为 n 的数组 a1a_1a1,a2a_2a2,…,ana_nan

现在,要将该数组从中间截断,得到三个非空子数组。

要求,三个子数组内各元素之和都相等。

请问,共有多少种不同的截断方法?

输入格式

第一行包含整数 n。

第二行包含 n个整数 a1a_1a1,a2a_2a2,…,ana_nan

输出格式

输出一个整数,表示截断方法数量。

数据范围

前六个测试点满足 1≤n≤10。
所有测试点满足 1≤n≤10510^5105,−10000≤aia_iai≤10000。

输入样例1:

4
1 2 3 3

输出样例1:

1

输入样例2:

5
1 2 3 4 5

输出样例2:

0

输入样例3:

2
0 0

输出样例3:

0
  • 思路

    • 分三个非空子数组且和相同,即每个子数组的和是s[n]/3;

    • 首先呢,枚举两个节点肯定不行,时间复杂度是 O(n2n^2n2),题里面的数量级太大了

    所以只能尝试枚举一个节点,再把剩下一个表示出来

    • 做法:枚举第二个节点 j ,随着 j 的增加,第一个节点满足 s[n]/3,也会增加,用cnt 存储 j 前面满足条件的第一个节点,当j 也满足条件时,把总的存在 ans 中

    • 注意:结果最大是100010的阶乘,远超int 类型,会爆,开long long

    ​ 考虑特殊请款,不够三个元素,s[n]%3!=0

在这里插入图片描述

  • 代码实现

    #include<bits/stdc++.h>
    using namespace std;int s[100010];
    long long ans;int main()
    {int n;cin>>n;for(int i=1;i<=n;i++){  //计算前缀和scanf("%d",&s[i]);s[i]+=s[i-1];}//考虑特殊情况if(s[n]%3!=0||n<3){cout<<0;return 0;}int cnt=0;for(int i=2;i<n;i++){if(s[i-1]==s[n]/3)  cnt++;  //第二个节点之前,满足条件可以成为第一个节点的个数if(s[i]==s[n]/3*2)  ans+=cnt;  //满足条件,成为第二个节点,加上第一个节点,类似于加法原理}printf("%lld",ans);  //注意数据类型时long longreturn 0;
    }
    

2.前缀和

输入一个长度为 n 的整数序列。

接下来再输入 m个询问,每个询问输入一对 l,r。

对于每个询问,输出原序列中从第 l个数到第 r个数的和。

输入格式

第一行包含两个整数 n 和 m。

第二行包含 n个整数,表示整数数列。

接下来 m行,每行包含两个整数 l 和 r,表示一个询问的区间范围。

输出格式

共 m 行,每行输出一个询问的结果。

数据范围

1≤l≤r≤n,
1≤n,m≤100000,
−1000≤数列中元素的值≤1000−1000≤数列中元素的值≤1000

输入样例:

5 3
2 1 3 6 4
1 2
1 3
2 4

输出样例:

3
6
10
  • 代码实现

    #include<bits/stdc++.h>
    using namespace std;int s[100010];int main()
    {int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>s[i];s[i]+=s[i-1];}while(m--){int a,b;cin>>a>>b;cout<<s[b]-s[a-1]<<endl;}return 0;
    }
    

3.子矩阵的和

输入一个 n行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。

对于每个询问输出子矩阵中所有数的和。

输入格式

第一行包含三个整数 n,m,q。

接下来 n行,每行包含 m 个整数,表示整数矩阵。

接下来 q 行,每行包含四个整数 x1,y1,x2,y2,表示一组询问。

输出格式

共 q行,每行输出一个询问的结果。

数据范围

1≤n,m≤1000,
1≤q≤200000,
1≤x1≤x2≤n,
1≤y1≤y2≤m,
−1000≤矩阵内元素的值≤1000−1000≤矩阵内元素的值≤1000

输入样例:

3 4 3
1 7 2 4
3 6 2 8
2 1 2 3
1 1 2 2
2 1 3 4
1 3 3 4

输出样例:

17
27
21
  • 代码实现
#include<iostream>
using namespace std;const int N=1010;int s[N][N];int n,m,q;int main(){cin>>n>>m>>q;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){cin>>s[i][j];s[i][j]+=s[i-1][j]+s[i][j-1]+s[i-1][j-1];}while(q--){int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;cout<<s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];}return 0;
}

4.k倍区间

题目描述

给定一个长度为 N 的数列,1,2,⋯A1,A2,⋯A N,如果其中一段连续的子序列之和是 K 的倍数,我们就称这个区间 是 K 倍区间。

你能求出数列中总共有多少个 K 倍区间吗?

输入描述

第一行包含两个整数 NK(1≤N,K10510^5105 )。

以下 N 行每行包含一个整数 A i ( 1≤A i10510^5105 ).

输出描述

输出一个整数,代表 K 倍区间的数目。

示例

输入

5 2
1
2
3
4
5

输出

6
  • 代码实现
#include<bits/stdc++.h>
using namespace std;typedef long long LL;
const LL N=100010;
LL s[N],cnt[N];int main()
{LL n,k,i,r,res=0;cin>>n>>k;for(i=1;i<=n;i++) cin>>s[i];  //前缀和for(i=1;i<=n;i++) s[i]+=s[i-1];//同余cnt[0]=1;  //包含它本身,初始化为1for(r=1;r<=n;r++) {LL u=s[r]%k; res+=cnt[u];cnt[u]++;}cout<<res<<endl;return 0;}
http://www.yayakq.cn/news/122897/

相关文章:

  • wordpress鼠标悬停图片白帽seo是什么
  • 常州手机网站制作网络营销推广的主要特点
  • 百度网站建设如何常见的服务器有哪些
  • 网上做物理题赚钱的网站健康码行程码防疫一体机
  • 怎么攻击网站交互设计软件有哪些
  • 广州建网站开发seo型企业网站wordpress 开关 边栏 选择 模板
  • 广西网站建设策划建设银行招聘官网网站
  • 萝卜建站郑州做网站哪个
  • 哪些网站可以做装修网站制作外包是怎么做的
  • 怎么把自己做的网站放到百度上百度搜不到WordPress文章
  • 网站网站制作400多少钱wordpress文章列表多图展示
  • 企业网站建设应该注意什么事项问题个人网页模板背景
  • 做网站需要理解什么贵州省建设厅报名网站
  • 广西网站建设公司招聘个人网页设计html完整代码范例
  • eclipse 网站开发过程对网站建设的维护
  • 印刷网站源码外贸网站建站案例
  • 网站流量排名网络规划设计师是高级职称
  • 如何进行网站检查郑州做网站哪家最好
  • 网站建设深恶意刷网站
  • 上海网站建设多少费用扬州工程信息网站
  • 广东全网营销与推广公司网站搜索引擎优化怎么做
  • 虚拟机安装 wordpress专业的网站优化公司
  • 专业做网站网络创建一个网站的项目体现项目完成速度因素的
  • 安徽网站建设科技软件推广简报
  • 网站开发asp电子商务网站建设是学什么软件
  • 郑州建站网中国建筑网官网新闻
  • 南通网站建设规划书桂林昨晚发生的新闻
  • 网站建设优化价格产品推广语
  • 郑州网站建设兄长好建设工程类型分为几类
  • 尼乐清网站建设惠州搜索引擎优化