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

模板网站如何引擎收录百度深圳总部

模板网站如何引擎收录,百度深圳总部,vue做的网站有什么,网站建设报价登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;有一长度为n的数组a&#xff0c;有q次询问&#xff0c;每次要求将[l,r]的区间分成k个连续区间&#xff0c;满足每个区间和都是偶数&#xff0c;能满足要求就输出YES 1<n,q<1e5;0<ai<1e10;1<l<r&l…

登录—专业IT笔试面试备考平台_牛客网

题目大意:有一长度为n的数组a,有q次询问,每次要求将[l,r]的区间分成k个连续区间,满足每个区间和都是偶数,能满足要求就输出YES

1<=n,q<=1e5;0<=ai<=1e10;1<=l<=r<n;1<=k<=1e5

思路:要想和为偶数,那么奇数的数量必须是偶数个,所以我们把数组中的数都变成%2后的结果,也就是整个数组只有0和1构成,每个0可以作为一个合法的区间,而每个1必须要和其相邻的一个1组合才能构成一个最小的合法区间,而如果一个1和其相邻的一个1组成一个区间,那这两个1中间的0都不能作为合法的区间。

所以我们要分两种情况讨论,一种是数组中从左往右第二个1和第一个1组合,另一种是第二个和第三个1组合,然后分别对合法区间数求前缀和,每个0的贡献都是1,每个含有两个1的区间,整个区间贡献是1,例如对于0 0 1 0 0 1 0 0 1 0 0 1 0这个数组,第一个前缀和数组sum1求出来的是1 2 3 3 3 3 4 5 6 6 6 6 7,第二个数组sum2是0 0 0 1 2 3 3 3 3 4 5 6 6,另外,还要特判一下每个区间内1的数量是否是偶数,如果是奇数就可以直接输出no了。

对于其他情况,我们要看每个询问的区间适用于哪个数组,如果a[r]是1,那么哪个数组的sum[r]=sum[r-1],说明哪个数组是合法的,如果a[r]是0,那么就看哪个sum[r]!=sum[r-1],不等的那个数组提供贡献

#include<bits/stdc++.h>
//#include<__msvc_all_public_headers.hpp>
using namespace std;
typedef long long ll;
const int N = 1e5 + 5;
const ll MOD = 998244353;
ll a[N];
ll sum[N];
ll sum2[N];
ll sum3[N];
void solve()
{int n, q;cin >> n >> q;for (int i = 1; i <= n; i++){cin >> a[i];a[i] %= 2;//将数组按奇偶转换成1和0sum[i] = sum[i - 1] + a[i];//统计区间奇偶性sum2[i] = sum3[i] = 0;}int flag = 0;for (int i = 1; i <= n; i++){if (!a[i]){if(!flag)sum2[i] = 1;//在两个1中间以外的0贡献为1}else{if (!flag){flag = i;//记录上一个1的位置}else{sum2[flag]++;//上一个1到这一个1之间总共贡献1flag = 0;}}	}if (flag)//末尾没有匹配的1要+1贡献与前面的0区分开sum2[flag]++;flag = 0;int fi=0;for (int i = 1; i <= n; i++){if (!a[i]){if(!fi)//在遇到第一个1之前不记录贡献continue;if (!flag)sum3[i] = 1;}else{if(!fi){fi=i;//遇到第一个1之后,后面的统计与上一个数组相同continue;}if (!flag){flag = i;}else{sum3[flag]++;flag = 0;}}}if (flag)sum3[flag]++;for (int i = 2; i <= n; i++){//求前缀和得到区间内的合法区间数sum2[i] = sum2[i - 1] + sum2[i];sum3[i] = sum3[i - 1] + sum3[i];}for (int i = 1; i <= q; i++){int l, r, k;cin >> l >> r >> k;if ((sum[r] - sum[l - 1]) % 2!=0){cout << "NO" << endl;continue;}ll ans3 = sum3[r] - sum3[l - 1];ll ans2 = sum2[r] - sum2[l - 1];if (a[r] == 1){//右端点是1,哪个数组r=r-1就说明哪个合法if (sum2[r] == sum2[r - 1]){cout << (ans2 >= k ? "YES" : "NO") << endl;}else{cout << (ans3 >= k ? "YES" : "NO") << endl;}}else{//右端点是0,哪个数组r!=r-1就说明哪个合法if (sum2[r] != sum2[r - 1]){cout << (ans2 >= k ? "YES" : "NO") << endl;}else{cout << (ans3 >= k ? "YES" : "NO") << endl;}}}
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin >> t;while (t--){solve();}return 0;
}

http://www.hrbkazy.com/news/56002.html

相关文章:

  • 什么软件是做网站的上海网站优化
  • php做网站开发有什么框架万网登录入口
  • 网页模板wordpresswindows优化大师会员兑换码
  • 做网站用什么语言开发中国万网域名注册免费
  • 免费做电子相册的网站关键词检测工具
  • 建站系统做的网站百度可以搜索到吗潍坊seo教程
  • wordpress qq分享插件山西seo排名
  • 汽车4s店网站模板怎么申请网站空间
  • 哪个网站推广比较好自助建站系统个人网站
  • wordpress 搭配keycdn太原关键词优化报价
  • 宝安网站设计公司万网官网入口
  • 松江建设新城有限公司网站seo数据统计分析工具有哪些
  • 如何在线实现手机版网站建设网上永久视频会员是真的吗
  • 呼和浩特网站建设小程序网站注册搜索引擎的目的是
  • 专业做电脑系统下载网站好seo竞价
  • 建设医院官方网站电商的推广方式有哪些
  • 外贸网站建站案例seo优化博客
  • 国外的工业设计网站百度seo网站在线诊断
  • 网址大全快捷怎么来的seoul national university
  • 合肥网络推广公司哪家专业seo关键字优化价格
  • 化妆品网站建设流程图软件开发网站
  • 做网站可以赚多少钱互联网运营推广
  • 仿淘宝电商网站开发报价app推广多少钱一单
  • 综合电子商务型企业网站有哪些培训学校
  • 微站电池哪些平台可以免费打广告
  • 防伪码做网站的还能没导入吗怎样让自己的网站排名靠前
  • 新材料 东莞网站建设seo搜索引擎优化薪资
  • 集团企业网站设计方案seo网站优化快速排名软件
  • 宁波新亚建设公司网站营销公司排行
  • 网站广告的图片怎么做搜索推广开户