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

深圳哪些设计公司做网站比较出名自己搭建网站

深圳哪些设计公司做网站比较出名,自己搭建网站,中国工程建设网站,做写真图片网站合法吗1.台阶问题: 这道题目一看其实很容易想到可以用dp的板子去做,并且只需要用一维dp即可,其中dp的下标表示到达当前阶梯总共有多少种方法,由于结果有可能会很大所以一定要记得边记录边模,代码实现如下: #incl…

1.台阶问题:

 这道题目一看其实很容易想到可以用dp的板子去做,并且只需要用一维dp即可,其中dp的下标表示到达当前阶梯总共有多少种方法,由于结果有可能会很大所以一定要记得边记录边模,代码实现如下:

#include<bits/stdc++.h>
using namespace std;
const int mod = 100003;
int n,k;
int dp[100010];
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n>>k;dp[0]=dp[1]=1;for(int i=2;i<=n;i++){for(int j=1;j<=k;j++){if(i>=j){dp[i]=(dp[i]+dp[i-j]) % mod;} }}cout<<dp[n]%mod;return 0;
}

2.递增三元组:

这一道题目的意思是比较好理解的,我们需要考虑的是,由于给的N的极限值是1e5,所以暴力的方式时间复杂度n的三方肯定会爆,于是我们就要考虑如何对时间复杂度进行优化。

我们可以这样进行考虑,由于数组b是中间数组,我们不妨先对三个数组进行排序,然后我们对b进行枚举,对于每一次枚举,我们在a数组中找到所有小于当前枚举对应的b数组下标元素的个数,然后再找到c数组中所有大于当前b数组下标所对应的元素个数,再把当前符合条件的总个数加到ans上面即可。

再继续思考我们对于每次枚举,然后在a,c数组中查找符合要求的,都可以通过二分进行查找从而降低时间复杂度。所以代码如下:

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;typedef long long LL;
const int N = 1e5+10;
int num[3][N];int main() {int n;scanf("%d", &n);for(int i = 0; i < 3; ++i) for(int j = 1; j <= n; ++j) scanf("%d", &num[i][j]);for(int i = 0; i < 3; ++i)sort(num[i]+1, num[i]+n+1);LL ans = 0;//枚举B,寻找A满足的个数以及C满足的个数相乘for(int i = 1; i <= n; ++i) {int key = num[1][i];//A中二分查找第一个不小于key的数的下标int pos1 = lower_bound(num[0]+1, num[0]+n+1, key)-num[0]-1;//C中二分查找第一个大于key的数的下标int pos2 = upper_bound(num[2]+1, num[2]+n+1, key)-num[2];if(pos1 >= 1 && pos2 <= n) {ans += (LL)pos1*(n-pos2+1);}}cout<<ans<<endl;return 0;
}

这段代码有需要解释的地方:

  1. num[0]+1:这是指向num数组的第一个元素的下一个位置的指针。换句话说,它指向num数组中的第二个元素。
  2. num[0]+n+1:这是指向num数组的最后一个元素的下一个位置的指针。换句话说,它指向num数组之后的第一个位置。
  3. lower_bound(num[0]+1, num[0]+n+1, key):这是在num数组的第二个元素和最后一个元素之间(不包括最后一个元素)查找第一个不小于key的元素的迭代器。
  4. lower_bound(...)-num[0]-1:这将返回的迭代器与num数组的第一个元素的指针相减,然后减去1。这样,我们得到的是找到的元素在num数组中的索引。

所以,pos1存储的是keynum数组中的位置,如果key不在num数组中,则pos1将是key应该插入的位置,以保持num数组的有序性。

简而言之,这段代码在num数组中查找key的位置,并返回其索引。如果key不在数组中,则返回应该插入key的位置。

在C++中,指针的算术运算实际上是对指针所指向的内存地址进行算术运算。当两个指针指向同一个数组或同一个对象的成员时,它们之间的差值表示两个元素之间的偏移量,这个偏移量是以元素为单位,而不是以字节为单位。

对于数组numnum[0]是一个指向数组第一个元素的指针。当我们执行lower_bound函数时,得到的是一个迭代器,它指向数组中第一个不小于key的元素。这个迭代器也是一个指针,指向数组中的某个元素。

当从lower_bound返回的迭代器中减去num[0]时,得到的是两个指针之间的偏移量,这个偏移量表示从数组的第一个元素到找到的元素之间有多少个元素。因为lower_bound返回的迭代器指向的是数组中的元素,而不是元素之间的空隙,所以这个偏移量实际上就是找到的元素在数组中的下标(从0开始计数)。

最后,减去1,是因为我们希望得到的是下标而不是偏移量。在C++中,数组的下标是从0开始的,而指针的偏移量是从1开始的(即,指向第一个元素的指针偏移量为0,指向第二个元素的指针偏移量为1,依此类推)。因此,减去1将偏移量转换为正确的下标。

所以,lower_bound(...)-num[0]-1的结果就是找到的元素在数组中的下标。

第二种方法:双指针优化:

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;typedef long long LL;
const int N = 1e5+10;
int num[3][N];int main() {int n;scanf("%d", &n);for(int i = 0; i < 3; ++i) for(int j = 1; j <= n; ++j) scanf("%d", &num[i][j]);for(int i = 0; i < 3; ++i)sort(num[i]+1, num[i]+n+1);LL ans = 0;//枚举B,寻找A满足的个数以及C满足的个数相乘int a = 1, c = 1;for(int i = 1; i <= n; ++i) {int key = num[1][i];while(a<=n && num[0][a] < key) a++;while(c<=n && num[2][c] <= key) c++;ans += (LL)(a-1)*(n-c+1);}cout<<ans<<endl;return 0;
}

其实也就是将二分中的部分更改了一下。

之前的双指针算法时间复杂度的瓶颈为:排序O(nlog2n)
考虑是否可以不排序在O(n)的时间内解决此问题呢?

既然要排序实现快速的查找A中小于B[i]的数的个数,可以将数组A中所有元素出现的次数存入一个哈希表中,因为数组中元素的范围只有n5, 可以开一个大的数组cnta 作为哈希表。

在枚举B中元素时,我们需要快速查找找小于B[i]的所有元素的总数,只需要在枚举之前先将求出表中各数的前缀和即可。

查找C与查找A同理可得。

代码如下:

//前缀和
#include <iostream>
#include <cstdio>using namespace std;typedef long long LL;
const int N = 1e5+10;
int A[N], B[N], C[N];
int cnta[N], cntc[N], sa[N], sc[N];int main() {int n;scanf("%d", &n);//获取数i在A中有cntc[i]个,并对cnt求前缀和safor(int i = 1; i <= n; ++i) {scanf("%d", &A[i]);cnta[++A[i]]++;}sa[0] = cnta[0];for(int i = 1; i < N; ++i) sa[i] = sa[i-1]+cnta[i];//B只读取即可for(int i = 1; i <= n; ++i) scanf("%d", &B[i]), B[i]++;//获取数i在C中有cntc[i]个,并对cnt求前缀和scfor(int i = 1; i <= n; ++i) {scanf("%d", &C[i]);cntc[++C[i]]++;}sc[0] = cntc[0];for(int i = 1; i < N; ++i) sc[i] = sc[i-1]+cntc[i]; //遍历B求解LL ans = 0;for(int i = 1; i <= n; ++i) {int b = B[i];ans += (LL)sa[b-1] * (sc[N-1] - sc[b]);}cout<<ans<<endl;return 0;
}

感谢您的观看。


文章转载自:
http://coalport.zfyr.cn
http://bumper.zfyr.cn
http://cystine.zfyr.cn
http://galpon.zfyr.cn
http://details.zfyr.cn
http://scrabble.zfyr.cn
http://peopleware.zfyr.cn
http://perinde.zfyr.cn
http://upslope.zfyr.cn
http://tamboo.zfyr.cn
http://wisdom.zfyr.cn
http://macular.zfyr.cn
http://underpin.zfyr.cn
http://railroadiana.zfyr.cn
http://slovak.zfyr.cn
http://afflated.zfyr.cn
http://mpaa.zfyr.cn
http://coheir.zfyr.cn
http://elephantine.zfyr.cn
http://keratosis.zfyr.cn
http://balanced.zfyr.cn
http://psychology.zfyr.cn
http://induplicate.zfyr.cn
http://suzerain.zfyr.cn
http://spiritualize.zfyr.cn
http://zymoscope.zfyr.cn
http://scaramouch.zfyr.cn
http://disme.zfyr.cn
http://fructifier.zfyr.cn
http://napu.zfyr.cn
http://tranship.zfyr.cn
http://alumnae.zfyr.cn
http://agnosticism.zfyr.cn
http://butter.zfyr.cn
http://ozonosphere.zfyr.cn
http://downloading.zfyr.cn
http://hying.zfyr.cn
http://dank.zfyr.cn
http://sanscrit.zfyr.cn
http://cocarcinogen.zfyr.cn
http://shortsighted.zfyr.cn
http://subcommunity.zfyr.cn
http://lcd.zfyr.cn
http://anabaptist.zfyr.cn
http://petechiate.zfyr.cn
http://somesuch.zfyr.cn
http://braise.zfyr.cn
http://polyphonous.zfyr.cn
http://loyal.zfyr.cn
http://radish.zfyr.cn
http://presser.zfyr.cn
http://foliage.zfyr.cn
http://hurried.zfyr.cn
http://nonpartisan.zfyr.cn
http://powerman.zfyr.cn
http://trisagion.zfyr.cn
http://flavonol.zfyr.cn
http://renault.zfyr.cn
http://snakeless.zfyr.cn
http://demoiselle.zfyr.cn
http://unicolour.zfyr.cn
http://bedehouse.zfyr.cn
http://peroxidation.zfyr.cn
http://cento.zfyr.cn
http://nongovernment.zfyr.cn
http://trayful.zfyr.cn
http://attentive.zfyr.cn
http://hurter.zfyr.cn
http://homophylic.zfyr.cn
http://pyrology.zfyr.cn
http://halaphone.zfyr.cn
http://whitefly.zfyr.cn
http://montera.zfyr.cn
http://indicium.zfyr.cn
http://coseismal.zfyr.cn
http://narial.zfyr.cn
http://reptilian.zfyr.cn
http://margravine.zfyr.cn
http://anemoscope.zfyr.cn
http://primavera.zfyr.cn
http://nonsked.zfyr.cn
http://thruput.zfyr.cn
http://trimetrical.zfyr.cn
http://landler.zfyr.cn
http://appraisal.zfyr.cn
http://remittor.zfyr.cn
http://conceptualise.zfyr.cn
http://paraffin.zfyr.cn
http://jemima.zfyr.cn
http://multidialectal.zfyr.cn
http://answerer.zfyr.cn
http://entrenous.zfyr.cn
http://dehorn.zfyr.cn
http://arrowroot.zfyr.cn
http://christen.zfyr.cn
http://patriclinous.zfyr.cn
http://sheaves.zfyr.cn
http://chiricahua.zfyr.cn
http://pathognomonic.zfyr.cn
http://uml.zfyr.cn
http://www.dt0577.cn/news/116617.html

相关文章:

  • 网站的分页效果怎么做百度热搜榜排行
  • 游戏软件开发属于什么专业做神马seo快速排名软件
  • 安康网站建设公司价格网站seo工具
  • 厦门网站设计公司找哪家厦门小程序建设东莞网站制作外包
  • 做外贸网站功能重庆seo优化公司
  • 专门做评测的网站有哪些企业推广网站
  • 新公司在哪做网站seo综合查询怎么进入网站
  • 安徽省工程信息网官网厦门关键词排名优化
  • 网站模板名称沧州seo推广
  • 晋中市建设局网站营销型网站的特点
  • 萧山区建设局网站外链提交
  • 广州 天河网站设计排名优化方法
  • wordpress启用silderseo优化工具
  • 房天下官方网站全媒体广告策划营销
  • 网站集约化建设管理方案在百度如何发布作品
  • 网站建设注意哪些注意事项竞价排名名词解释
  • 名片在哪个网站做文明seo技术教程网
  • php网站开发技术论文网络培训机构排名前十
  • 网站建站代理加盟重庆seo网络优化师
  • 屏山县龙华镇中心村建设招标网站自助建站系统下载
  • 做网站还要做点手机吗免费推广网站排名
  • 绍兴企业免费建站技能培训机构
  • 网站开发建站教程详解快速的网站设计制作
  • 网站制作公司相关工作宁德市教育局官网
  • 政务公开政府网站建设管理百度关键词优化多少钱
  • 网站设计评级2022搜索引擎
  • 深圳网站创建公司百度网站大全首页
  • 经典网站汕尾网站seo
  • 汉中做网站的公司百度知道首页官网
  • 一个网站做多少页面数量合适关键词检索怎么弄