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

响应式网站如何实现seo快速优化软件

响应式网站如何实现,seo快速优化软件,上海华谊集团建设有限公司网站,搜索引擎优化平台不错的分块好题,记录一下 Problem - 1920D - Codeforces 当k的取值范围达到1e18时,由于每次2操作至少会复制数组,可以发现很快就会出现无效操作。实际上,有效的2操作次数不会超过log2(1e18)次。因此,针对每个查询&…

不错的分块好题,记录一下

Problem - 1920D - Codeforces

当k的取值范围达到1e18时,由于每次2操作至少会复制数组,可以发现很快就会出现无效操作。实际上,有效的2操作次数不会超过log2(1e18)次。因此,针对每个查询,我们可以枚举可能的2操作。

采用分块处理的方法,将每个区块定义为一次2操作及其后续的一系列1操作。针对每个区块,我们使用三个数组来维护数据:

  • app[i]:第 i 块里遇到的所有 type 1 收集的元素。

  • mul[i]:第 i 块结束时(遇到 type 2)要把「之前的所有内容+本块 app[i]」复制的倍数。

  • len[i]:在第 i 块开始前,已有内容(不算本块的 app[i] 和 mul[i])的长度。

每个区块 = [ 之前内容 (长度 = len[i]) ] × mul[i]   +   app[i] (长度 = app[i].size())

可以模拟一下这个过程:
 

假设有 5 步操作(共两种类型):

步骤操作类型参数 x数组 a 变化(为了演示我们先写出真实数组)
1type 11[1]
2type 12[1, 2]
3type 22先把当前 [1,2] 复制 2 份拼接 → [1,2,1,2,1,2]
4type 13在尾部再 append 3 → [1,2,1,2,1,2,3]
5type 21把当前所有再复制 1 份 → 长度翻倍,变成长度 14

块0: [  app[0]  ]×1[1,2]块1: ( 前面所有 )×3 ▶ + app[1]= [1,2]×3 + [3]= [1,2,1,2,1,2, 3]块2: ( 前面所有 )×2 ▶ + app[2]= [1,2,1,2,1,2,3]×2= 长度 7×2 = 14

理解了这个分块步骤,查询就很好处理了,我们从后往前枚举可能的2操作,然后缩短当前k值的范围,将每个块看成两部分:一部分是进行了一次2操作后的前半段的总长度 len[i] * mul[i],紧跟一部分是一段连续的1操作 app[i]。如果在紧跟着的app[i]这小段里,直接可以输出这个数,否则我们缩短k的范围,然后往前遍历

一些细节写在注释上了

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 10;
const int mod = 1E9 + 7;
#define pii pair<int, int>
#define lowbit(x) (x & (-x))
void solve()
{int n, q;cin >> n >> q;vector<vector<int>> app(1);vector<int> len{0};vector<int> mul{1};// 总共有app.size个分块// 每个分块长这样// [ 之前内容 (长度 = len[i]) ] × mul[i]   +   app[i]的长度 (长度 = app[i].size())for (int i = 0; i < n; i++){int b, x;cin >> b >> x;if (b == 1){app.back().push_back(x);}else{if (len.back() < 1e18){if (mul.back() <= 1e18 / len.back())len.push_back(mul.back() * len.back() + app.back().size());elselen.push_back(1e18);mul.push_back(x + 1);app.push_back({});}}}while (q--){int k;cin >> k;k--;// k下标从0开始,取模运算的时候下标不会乱for (int i = app.size() - 1; i >= 0; i--){//[ 之前内容 (长度 = len[i]) ] × mul[i]   +   app[i]的长度 (长度 = app[i].size())// 将这个块看成两部分,一部分是进行了一次2操作后的前半段的总长度 len[i] * mul[i],紧跟着一段连续的1操作 app[i]。// k>=len[i]*mul[i],判断当前的全局索引 k 是落在第 i 块的那段复制出来的「前面内容」里,还是在紧跟着的 app[i] 这小段里?if (k / mul[i] >= len[i]) // 如果在紧跟着的app[i]这小段里,直接可以输出这个数{cout << app[i][k - len[i] * mul[i]] << ' ';break;}else // 如果在len[i]*mul[i]这段里,我们可以跳到第一份len[i]的位置,即k%=len[i],比如,对于mul数组a: 1234 1234 1234,找第9个位置,实际上是找第9%4=1也就是a[1]=2的位置(下标从0开始){k %= len[i];}}}cout << endl;
}
signed main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;cin >> t;while (t--)solve();
}

代码实现借鉴了jls的代码,非常优美

http://www.dtcms.com/wzjs/198030.html

相关文章:

  • 企业网站制作教程视频站群优化公司
  • 做网站分为哪几个岗位如何成为app推广代理
  • 两学一做的做题网站是多少长沙有实力的关键词优化价格
  • 好的网站首页建设公司线上营销的优势
  • 电子商务的网站建设分析百度知道入口
  • 免费建网站的服务器培训心得体会500字
  • 网站建设每年需要交多少钱谷歌chrome浏览器官方下载
  • 随意设计一个网站江苏百度推广代理商
  • 迁安社会信用体系建设官方网站seo外链推广平台
  • 做的网站里面显示乱码怎么解决关键词seo资源
  • 360做网站荆州新产品推广方式有哪些
  • 深圳做网站行业重庆网站推广软件
  • 满分作文网站济宁seo推广
  • 做网站需要哪些技术支持北京seo站内优化
  • 对单位网站的要求最近一周国内热点新闻
  • 织梦可以做B2B信息发布网站吗指数基金
  • 简单的网站设计怎么做seo网络优化
  • 飞速网站排名百度seo最成功的优化
  • 中国建设工程招标网官方网站要怎么网络做推广
  • 网站seo日常工作内容夜夜草
  • 西安做网站优化的公司招聘网络营销推广人员
  • 网站建设企业服务器百度热搜榜排名今日第一
  • 班级网站设计模板seo关键词排名优化怎么样
  • 营销型网站建设需要有什么功能search搜索引擎
  • 营销网站建设的原则网店运营推广平台
  • 哪里做网站便宜哪些浏览器可以看禁止访问的网站
  • 红豆网梧州论坛襄阳seo
  • 简洁大气企业网站欣赏百度小说搜索排行榜
  • 网站建设有什么出路百度seo优化是什么
  • 广州建设职业学校广州校区武汉seo排名优化公司