#计数#A 古老谜题
From NOIP2020 模拟赛 B 组 Day4
题目
给定一个长度为\(n\)的01序列\(a\),
问有多少个三元组\((l,p,r),1\leq l<p<r\leq n\)
满足\(a_p=1且s[l,p]=s[p,r](1的个数)\)
分析
由于确定\([l,r]\)就能确定\(p\),且实际上的限制条件为
\(s[l,r]\bmod 2=1且r-l>2\)
枚举右端点。
- 若当前位置为1,若前缀1的个数为奇数,实际上的贡献为之前前缀1的个数为偶数的位置,反之亦然
考虑用双指针维护区间1的个数必须超过2才能产生贡献 - 若当前位置为0,那就不只是上面的统计,有可能是两段连续的0夹着一个1,这个单独统计一下即可
代码
#include <cstdio>
#define rr register
using namespace std;
const int N = 1000011;
long long ans;
int a[N], n, tot, s1, s2, even, odd, now, last;
signed main() {
freopen("puzzle.in", "r", stdin);
freopen("puzzle.out", "w", stdout);
scanf("%*d%d", &n);
for (rr int i = 1; i <= n; ++i) {
rr char c = getchar();
while (c != 48 && c != 49) c = getchar();
a[i] = c ^ 48;
}
for (rr int r = 1, l = 0; r <= n; ++r) {
s1 += a[r];
while (s1 - s2 - a[l] > 2) s2 += a[l++], (s2 & 1) ? ++even : ++odd;
if (a[r]) {
(s1 & 1) ? ans += (now = odd) : ans += (now = even);
last = tot, tot = 0;
} else
++tot, ans += now + last;
}
return !printf("%lld", ans);
}
#计数#A 古老谜题的更多相关文章
- JVM虚拟机知识点
java -version 显示JDK 版本 Java HotSpot Client:1.5版本之后,热点探测,对加载的class文件做标记,对于频繁使用的class即时编译JIT本地缓存,不再重新进 ...
- 《algorithm puzzles》——谜题
这篇文章开始正式<algorithm puzzles>一书中的解谜之旅了! 狼羊菜过河: 谜题:一个人在河边,带着一匹狼.一只羊.一颗卷心菜.他需要用船将这三样东西运至对岸,然而,这艘船空 ...
- (20)Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)
引用计数 引用计数是c/c++项目中一种古老的内存管理方式.当我8年前在研究一款名叫TCPMP的开源项目的时候,引用计数就已经有了. iOS SDK把这项计数封装到了NSAutoreleasePool ...
- 【vijos】1770 大内密探(树形dp+计数)
https://vijos.org/p/1770 不重不漏地设计状态才能正确的计数QAQ 虽然可能最优化是正确的,但是不能保证状态不相交就是作死.... 之前设的状态错了... 应该设 f[i][0] ...
- java实现汉诺塔计数
** 汉诺塔计数** 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具. 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下 ...
- 计数排序(counting-sort)——算法导论(9)
1. 比较排序算法的下界 (1) 比较排序 到目前为止,我们已经介绍了几种能在O(nlgn)时间内排序n个数的算法:归并排序和堆排序达到了最坏情况下的上界:快速排序在平均情况下达到该上界. ...
- Objective-C内存管理之引用计数
初学者在学习Objective-c的时候,很容易在内存管理这一部分陷入混乱状态,很大一部分原因是没有弄清楚引用计数的原理,搞不明白对象的引用数量,这样就当然无法彻底释放对象的内存了,苹果官方文档在内存 ...
- 最小生成树计数 bzoj 1016
最小生成树计数 (1s 128M) award [问题描述] 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一 ...
- swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- [LeetCode] Count and Say 计数和读法
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
随机推荐
- SpringBoot使用令牌桶算法+拦截器+自定义注解+自定义异常实现简单的限流
令牌桶 在高并发的情况下,限流是后端常用的手段之一,可以对系统限流.接口限流.用户限流等,本文就使用令牌桶算法+拦截器+自定义注解+自定义异常实现限流的demo. 令牌桶思想 大小固定的令牌桶可自行以 ...
- 类型注解Callable
from collections.abc import Callable """ Callable[[ParamType1, ParamType2], ReturnTyp ...
- Effective C++ 第一章:让自己习惯C++
Effective C++ 第一章:让自己习惯C++ 引言 最近在阅读这本<effective C++ 改善程序与设计的55个具体做法>这本书,为了以后忘记的时候回顾,写一些笔记,每次笔记 ...
- 快速带你入门css
css复习笔记 1. css样式值 1.1 文字样式 1 p{ 2 font-size: 30px;/*设置文字大小*/ 3 font-weight: bold;/*文字加粗*/ 4 font-sty ...
- Spring状态机(FSM),让订单状态流转如丝般顺滑
引言 在复杂的应用程序设计中,尤其是那些涉及多个状态变迁和业务流程控制的场景,有限状态机(Finite State Machine, FSM)是一种强大而有效的建模工具.Spring框架为此提供了Sp ...
- 基于泰凌微TLSR825x的物联网解决方案之ibeacon开发总结
一 概念 iBeacon 是苹果公司2013年9月发布的移动设备用OS(iOS7)上配备的新功能.其工作方式是,配备有 低功耗蓝牙(BLE)通信功能的设备使用BLE技术向周围发送自己特有的ID,接 ...
- javascript import maps 特性现已被全部主流浏览器支持
值得庆祝 Import maps 特性现在可以在全部三个主要浏览器内使用 现在主流现代web 应用 引入和利用javascript 是通过 Es module 模块实现. 在开发javascript上 ...
- json转化总结
最近对接个老接口,返回的信息格式十分清奇,为此折腾了一会,简单记录下 先贴下这个接口返回的格式样子 在本地我使用idea的debug模式调试返回的信息,方式:进入debug模式,请求达到断点处,按组合 ...
- 【jQuery】(8)---jquery Ajax
jquery ajax 一.AJAX 概述 1.什么是 AJAX? 特点 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使 ...
- Hexo Next主题vercel页面NOT_FOUND
前端时间将博客部署到了Vercel上,使用的是Hexo Next主题.发现某些博文点进去以后会出现找不到的情况: 404: NOT_FOUND Code: NOT_FOUND ID: ... ... ...