题面

【正解】

一眼分治

哎\(O(N^2)\)有50分,先敲了

等下,由于最大的数或进去了,所以有\(g(T) \geq f(T)\)

也就是说,我们用\(n \times (n-1) /2\)算出总数,再减去\(g(T) = f(T)\)的就可以了

我们套路地分治,每次统计左端点在左半边,右端点在右半边的种数

设\(f(i)\)表示当前点到中间分割点的最大值,\(g(i)\)表示当前点到中间分割点的或和

然后两边分开统计

发现\(f\)往两边是单调的,\(g\)不仅是单调的,靠内的还一定是靠外的的子集

每次for一遍,另一边可以二分,这样是\(O(Nlog_N^2)\)的……80就80吧

然后答案少了很多

发现两边很多重复的,就把右边的删了

过样例了

然后大样例死循了

debug一下,发现二分边界很多,各种特判,最后乱得不成样子

突然意识到“没根据的乱搞不可能是正解”,毅然决定把它删了

然后换了种二分,每次记录ans

嗯过了

哎大样例怎么多了5?

等下,好像可以双指针?

for的时候因为\(g(i)\)是不断或进去的,那右边就是单调往右的

没毛病,这样\(O(NlogN)\)了……完美

把二分删了

五六行写完,过了小样例

……怎么还是多5

仔细检查了一下,没问题啊

对拍对拍

把之前写的50分挪出来,写了个\(N=10\),\(a \le 31\)的generator,run

……第一个就挂了

debug一下,发现在查左边时右边有个31把它挡住了,而右边的31又没有统计到

但两边都跑有重复啊……

哎不对,必须要保证正在枚举的是最大的

那判下大小?

小样例过了

第二个4个3的,6

……好像要小于等于

然后成了-6

……好像是一个小于一个小于等于

过了小样例

哇大样例对了

继续对拍,没问题

改成N=3000,没挂

然后AC此题

代码

【20181030T2】字胡串【分治+双指针】的更多相关文章

  1. 2018.10.30 NOIP模拟 字胡串(单调栈+容斥)

    传送门 对于每个点,用单调栈求出它左右第一个比他大的位置. 然后对每个点O(logai)O(log_{a_i})O(logai​​)求出第一个拥有跟它不同二进制位的位置. 然后容斥一下就行了. 代码

  2. Pudding Monsters CodeForces - 526F (分治, 双指针)

    大意: n*n棋盘, n个点有怪兽, 求有多少边长为k的正方形内恰好有k只怪兽, 输出k=1,...,n时的答案和. 等价于给定n排列, 对于任意一个长为$k$的区间, 若最大值最小值的差恰好为k, ...

  3. TYVJ P1063 数字串 Label:双指针 线性扫描

    描述 给你一个长度为n的数字串,数字串里会包含1-m这些数字.如果连续的一段数字子串包含了1-m这些数字,则称这个数字字串为NUM串.你的任务是求出长度最短的NUM串是什么,只需要输出这个长度即可.1 ...

  4. C​#​字​符​串​与​ ​b​y​t​e​数​据​的​互​相​转​换

    string和byte[]的转换 (C#) string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( s ...

  5. THUWC2018 题解

    2018清华冬令营 又一次由于接连而至的玄学现象跪惨,错失良机,就不再公开提我这次惨痛的经历了,写点干货-- day1 A 零食 (1s, 1G) 试题简述 \(n\) 种物品1,\(m\) 种物品2 ...

  6. Luogu 2375 [NOI2014]动物园

    字胡串什么的一直不太会,感觉这题…还蛮本质的 考虑暴力求解:num[i]相当于从一直跳nxt,如果nxt[j] * 2 <= i 那么就累加答案 其实这是一个树的结构,也就是说跳到一个结点满足条 ...

  7. LeetCode Reverse Words in a String 将串中的字翻转

    class Solution { public: void reverseWords(string &s) { string end="",tem="" ...

  8. SAP ABAP 处理字符串串串串串串串串(详细)

    关于ABAP中处理字符串的方法,非常详细,学习过程中总结一下分享给大家,,, ABAP/4 提供多个处理类型 C 即字符串 的数据对象的关键字. 处理字符串 的方法有: 1.拆分字符串split 2. ...

  9. python学习笔记08-字符串

    字符串是用单引号或者双引号引起来来的  单引号和双引号没有什么区别 1字符串支持乘法操作 >>> print('hello'*2) hellohello >>> 2 ...

随机推荐

  1. tomcat集群及session共享

    一般来说,java web app主要用作两个领域: 1.api.api一般是无状态的,所以无需考虑session共享的问题 2.传统web应用和网站,如crm,oa,erp,b2c,bbs等.尤其b ...

  2. Java编程思想 4th 第3章 操作符

    有了数据,还需要进行数据间的运算,因此Java中也有数据间运算的各种符号,书本称之为操作符,正确的翻译应该是运算符. Java中的运算符同C++相同,运算符同运算符对象构成表达式,表达式是运算对象及运 ...

  3. [转]坐在马桶上看算法:只有五行的Floyd最短路算法

    此算法由Robert W. Floyd(罗伯特·弗洛伊德)于1962年发表在“Communications of the ACM”上.同年Stephen Warshall(史蒂芬·沃舍尔)也独立发表了 ...

  4. VM虚拟机上连接usb无反映

    主机的usb连接又是正常的,排除了usb3.0的接口原因后,突然想到了是不是虚拟机的什么服务没有开?进入到控制面板->管理工具->服务,找到 V开头的,发现原来确实是虚拟机有关usb的服务 ...

  5. solr4.10.3部署到tomcat——(十)

    0. 准备环境:

  6. 2 - django-urls路由系统基本使用

    目录 1 路由系统(urls控制) 1.1 正则字符串参数 1.2 url的分组 1.2.1 无名分组 1.2.2 有名分组 1.3 URLconf 在什么上查找 1.4 include(路由分发) ...

  7. USB descriptor【转】

    struct usb_device_descriptor { __u8 bLength;//设备描述符的字节数大小,为0x12 __u8 bDescriptorType;//描述符类型编号,为0x01 ...

  8. ADB安装

    1,下载解压 http://adbshell.com/downloads 2,配置路径 比如解压后我放在了C:\Program Files\adb 电脑-->属性-->高级系统设置--&g ...

  9. Android调试大法 自定义IDE默认签名文件==>微信支付、微信登录、微信分享,debug时调试通过,release时调不起微信

    转载地址:http://blog.yanzhenjie.com Android调试大法之自定义IDE默认签名文件,你是否为调试第三方SDK时debug签名和release签名发生冲突而烦恼?你是否在d ...

  10. DOS命令基础,包涵DOS库说明书

    20种常用的DOS命令小结 作者: 字体:[增加 减小] 类型:转载   DOS命令总共大约有一百个(包括文本编辑.查杀病毒.配置文件.批处理等),我们这里详细介绍二十个常用的DOS命令     先介 ...