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

优化网站推广网站/seo优化推广教程

优化网站推广网站,seo优化推广教程,wordpress二级菜单排列,优秀seo网站题意 你有一个长度为nnn,且仅包含111和−1-1−1的序列aaa,即a[i]∈{−1,1}a[i] \in \{-1,1\}a[i]∈{−1,1} 给你一个数QQQ,表示QQQ次询问 每次询问给定两个数l,rl,rl,r,要找到[l,r][l,r][l,r]内最少删除多少个数,使…

题意

你有一个长度为nnn,且仅包含111−1-11的序列aaa,即a[i]∈{−1,1}a[i] \in \{-1,1\}a[i]{1,1}

给你一个数QQQ,表示QQQ次询问

每次询问给定两个数l,rl,rl,r,要找到[l,r][l,r][l,r]内最少删除多少个数,使得其余数拼接后满足

∑i=1n(−1)i−1∗a[i]=0\sum_{i=1}^n(-1)^{i-1}*a[i]=0i=1n(1)i1a[i]=0 或者∑i=1n(−1)i∗a[i]=0\sum_{i=1}^n(-1)^{i}*a[i]=0i=1n(1)ia[i]=0

思路

因为要求区间内数的加权和为000,所以要么两种条件都符合,要么都不符合

sum[i]sum[i]sum[i]表示a[i]a[i]a[i]的前缀加权和

sum[r]−sum[l−1]==0sum[r] -sum[l-1] == 0sum[r]sum[l1]==0 不用删除数,直接输出即可

否则当区间长度为奇数时,只需要删除一个数(后面tipstipstips为证明),假设删除的数位置为pospospos

即有sum[r]−sum[pos]==sum[pos−1]−sum[l−1]sum[r] - sum[pos] == sum[pos-1] - sum[l-1]sum[r]sum[pos]==sum[pos1]sum[l1]

移项后即为sum[r]+sum[l−1]==sum[pos]+sum[pos−1]sum[r] + sum[l-1] == sum[pos]+sum[pos-1]sum[r]+sum[l1]==sum[pos]+sum[pos1]pos∈[1,n]pos \in [1,n]pos[1,n]

由于区间[l,r][l,r][l,r]给定,只需要预处理出所有的sum[pos]+sum[pos−1]sum[pos]+sum[pos-1]sum[pos]+sum[pos1]值的位置即可

当区间长度为偶数时,任意选择一个位置删除,再当作奇数时处理即可

tips

给定区间[l,r][l,r][l,r]

如果区间长度为偶数,那么我们一定能找到一个分割点kkk,使得sum[r]−sum[k]==sum[k]−sum[l−1]sum[r] - sum[k] == sum[k] - sum[l-1]sum[r]sum[k]==sum[k]sum[l1]

为什么 ? sumsumsum数组是连续的(每次最多变化1),且区间长度为偶数,那sum[r]−sum[l−1]sum[r]-sum[l-1]sum[r]sum[l1]一定是偶数

即一定能找到(sum[r]−sum[l−1])/2(sum[r]-sum[l-1])/2(sum[r]sum[l1])/2的位置,以此作为分割即可

Code

//D2
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
#pragma GCC optimize(3)
typedef long long ll;
#define INF 0x3f3f3f3f
const int mod = 1e9 + 7;
const int maxn = 1e5 + 5;
#define iss ios::sync_with_stdio(false)
#define debug(x) cout << #x << ": " << x << endl;
inline ll read() {ll s = 0, w = 1;char ch = getchar();while (ch < 48 || ch > 57) {if (ch == '-') w = -1;ch = getchar();}while (ch >= 48 && ch <= 57)s = (s << 1) + (s << 3) + (ch ^ 48), ch = getchar();return s * w;
}
int sum[300005];//加权前缀和
char s[300005];
map<int, vector<int>> mp;//mp[i]为sum[pos]+sum[pos-1]==i的所有pos
int main() {int t = read();while (t--) {mp.clear();int n = read(), Q = read();scanf("%s", s + 1);for (int i = 1; i <= n; ++i) {int op = s[i] == '+' ? 1 : -1;if (i & 1) op = -op;sum[i] = sum[i - 1] + op;}for (int i = 1; i <= n; ++i) {mp[sum[i] + sum[i - 1]].push_back(i);}while (Q--) {int l = read(), r = read();if (sum[r] - sum[l - 1] == 0) {puts("0");} else {if ((r - l + 1) & 1) {int val = sum[r] + sum[l - 1];auto it = mp[val];int pos = lower_bound(it.begin(), it.end(), l)-it.begin();//只需要找到[l,r]内的任意posprintf("1\n%d\n",it[pos]);} else {int val = sum[r - 1] + sum[l - 1];auto it = mp[val];int pos = lower_bound(it.begin(), it.end(), l) - it.begin();printf("2\n%d %d\n",it[pos],r);//偶数随意删除即可,我这里删除最后一个位置}}}}
}
http://www.lbrq.cn/news/1406287.html

相关文章:

  • 做pc端网站价位/seo教程百度网盘
  • 做营销型网站/云搜索下载
  • wordpress 营销模板下载/seo免费培训视频
  • 大连日文网站设计/10000个免费货源网站
  • 推广论坛有哪些/搜索优化引擎
  • 网站开发常见方法/深圳优化公司找高粱seo服务
  • 网站开发设计语言/网站设计是做什么的
  • 自己建网站 知乎/seo网络营销推广公司
  • ui设计师可以做到多少岁/seo网站推广是什么
  • 打电话沟通做网站/竞价外包
  • 虎门做网站公司/域名收录查询工具
  • 自己搭建服务器做视频网站/如何获取网站的seo
  • app开发导入网站模板/中文搜索引擎排名
  • drupal做新闻网站/查看域名每日ip访问量
  • 长沙做网站建设公司排名/免费建设网站平台
  • 电商网站建设的步骤/百度关键词流量查询
  • 网站怎么做301跳转/公众号软文怎么写
  • 重庆给商家企业做网站/深圳网络推广代理
  • 如何创建一个网站链接/windows优化大师有用吗
  • 做的网站百度搜不到/唐山seo
  • 电子商务网站设计代做/域名查询网站
  • 交通运输局网站建设方案/seo自动优化软件下载
  • 深圳设计网站开发/qq推广引流网站
  • 赣州优化/百度seo关键词优化电话
  • 大学生兼职网站的融资方案/锦州网站seo
  • 漯河做网站的/军事新闻头条
  • 郴州网站建设较好的公司/纯注册app拉新挣钱
  • java网站开发新技术/百度销售
  • 深圳做义工的网站/今日新闻摘抄二十条
  • 成功的营销型网站设计特点/收录网站查询
  • STM32 vscode 环境, 官方插件
  • Ansible 角色管理
  • 决策树算法学习笔记
  • 【GNSS定位原理及算法杂记5】​​​​PPK(后处理动态定位)深度解析:后处理的艺术与 RTK 的互补
  • Linx--MySQL--安装笔记详细步骤!
  • 【笔记ing】考试脑科学 脑科学中的高效记忆法