题面 [正解] 一眼分治 哎\(O(N^2)\)有50分,先敲了 等下,由于最大的数或进去了,所以有\(g(T) \geq f(T)\) 也就是说,我们用\(n \times (n-1) /2\)算出总数,再减去\(g(T) = f(T)\)的就可以了 我们套路地分治,每次统计左端点在左半边,右端点在右半边的种数 设\(f(i)\)表示当前点到中间分割点的最大值,\(g(i)\)表示当前点到中间分割点的或和 然后两边分开统计 发现\(f\)往两边是单调的,\(g\)不仅是单调的,靠内的还一定是靠…
传送门 对于每个点,用单调栈求出它左右第一个比他大的位置. 然后对每个点O(logai)O(log_{a_i})O(logai​​)求出第一个拥有跟它不同二进制位的位置. 然后容斥一下就行了. 代码…
大意: n*n棋盘, n个点有怪兽, 求有多少边长为k的正方形内恰好有k只怪兽, 输出k=1,...,n时的答案和. 等价于给定n排列, 对于任意一个长为$k$的区间, 若最大值最小值的差恰好为k, 则产生1贡献, 求贡献和.考虑分治, 问题就转化为如何$O(n)$求出跨越$mid$的贡献, 可以讨论最大值最小值的位置, 双指针求出. #include <iostream> #include <algorithm> #include <cstdio> #define R…
描述 给你一个长度为n的数字串,数字串里会包含1-m这些数字.如果连续的一段数字子串包含了1-m这些数字,则称这个数字字串为NUM串.你的任务是求出长度最短的NUM串是什么,只需要输出这个长度即可.1<=n,m<=200000 输入格式 第一行给定n和m. 第二行n个数,表示数字串,数字间用空格隔开. 输出格式 如果存在NUM串则输出最短NUM串长度,否则输出“NO”. 测试样例1 输入 5 3 1 2 2 3 1 输出 3 代码 #include<iostream> #inclu…
string和byte[]的转换 (C#) string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );反过来,byte[]转成string: string str = System.Text.Encoding.Default.GetString ( byteArray );其它编码方式的,如System.Text.UTF8Encoding,System.Text.UnicodeEncodi…
2018清华冬令营 又一次由于接连而至的玄学现象跪惨,错失良机,就不再公开提我这次惨痛的经历了,写点干货-- day1 A 零食 (1s, 1G) 试题简述 \(n\) 种物品1,\(m\) 种物品2,要求安排一个两种物品的排列,当且仅当某个物品的有前一个物品前一个物品种类和它一样时才能让总和增加这个物品的权值. 现给出所有物品的权值,求最大总和. 输入 第一行一个整数 \(T\),表示数据组数. 第二行一个正整数 \(n\),表示物品1的个数. 第三行 \(n\) 个整数,\(A_1, A_2…
字胡串什么的一直不太会,感觉这题…还蛮本质的 考虑暴力求解:num[i]相当于从一直跳nxt,如果nxt[j] * 2 <= i 那么就累加答案 其实这是一个树的结构,也就是说跳到一个结点满足条件,那么它上面的结点一定都满足,所以在求nxt的时候顺便递推一下每一个结点的答案,那么模拟一下匹配nxt的过程,只要跳到第一个j * 2 <= i 就可以算答案了 不会算时间复杂度QuQ Code: #include <cstdio> #include <cstring> usi…
class Solution { public: void reverseWords(string &s) { string end="",tem=""; ]; while(*p!='\0'){ while(*p==' ') //过滤多余的空格,针对串头 p++; while(*p!=' '&&*p!='\0'){ //积累一个单词,存于临时串 tem=tem+*p; p++; } while(*p==' ') //过滤多余的空格,针对串尾…
关于ABAP中处理字符串的方法,非常详细,学习过程中总结一下分享给大家,,, ABAP/4 提供多个处理类型 C 即字符串 的数据对象的关键字. 处理字符串 的方法有: 1.拆分字符串split 2.连接字符串 3.获得字符串长度 4.压缩字段内容(去空格) 5.搜索字符串 6.覆盖字符字段 7.替换字段内容 8.转换大/小写并替换字符 9.转换为可排序格式 .根据第一个或最后一个字符移动字段串SHIFT 11.MOVE TO 分配字符串部分 12.字符串的比较 ----------------…
字符串是用单引号或者双引号引起来来的  单引号和双引号没有什么区别 1字符串支持乘法操作 >>> print('hello'*2) hellohello >>> 2字符串可以通过索引来取字符串里面的字符,切片方法与列表相类似. 3可以用in  来判断一个字符串是否在一个字符串中 列表也可以进行相类似的操作 >>> print('a' in 'hello') False >>> 4格式化输出 >>> print('%s…