题目描述 解题思路 可以求得通项公式:an = 2n + 1,所以问题就变成等差数列求异或和,这个具体为什么对我还不能很好地解释清楚,先挖坑吧. 附:c++代码 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 typedef unsigned long long llt; 7 8 llt Cal(llt x, llt d, llt P, llt Num) 9 { 10 llt ret =…
题目描述 长度为偶数的回文串被称为偶回文串.如果一个字符串重新排序之后能够成为一个偶回文串,则称为可回文的. 给一个字符串,求可回文的子串个数.字符串只含小写字母,单个字符串长度不超过10^5,所有数据字符串长度之和不超过2*10^6. 时间限制:3000ms   内存限制:131072kb 解题思路 由于可以重新排序,所以一个子串只要任一字母出现偶数次即可.于是将字母编号,h(c) = ±1 << (c - 'a'),第奇数次出现为正,第偶数次出现为负.于是问题转化为求某一子区间的编号和为0…
题目描述 一张n*m的地图,每个格子里面有一定数量的神奇宝贝,求一个最优位置,使得所有神奇宝贝到该位置的曼哈顿距离最小. 一共有T组数据,每组数据包含两行,第一行是n和m(1<=n,m<=2000),第二行是三个整数x,y,q,表示处于(i,j)(1<=i<=n,1<=j<=m)的神奇宝贝的数量为((x^i) + (y^j))mod q,其中1<=x,y<=2000,1<=q<=10. 输出最小的曼哈顿距离和. 解题思路 这道题与2015编程之美…
题目描述 (1,--,n)的一个排列S,定义其对应的权值F[S]为:将S划分为若干段连续子序列,每个子序列都是上升序列,F[S]的值等于能划分出的最小段数. 求n的全排列的F[S]的和,答案mod(10^9+7). 解题思路 刚拿到题目时,我没什么思路,于是决定列举情况找找规律. 当n == 1时,F[1] = 1,结论是平凡的. 当n == 2时,全排列如下: (1,2):1个子序列 (2,1):2个子序列 可以得出F[2] = 3. 当n == 3时,考虑在n == 2的情况下插入数字3.…
题目描述 给一个长度为n(1<=n<=100000)的正整数列,分成尽量多的非空段,使得每一段的最大公约数相等.一个数的最大公约数是它本身. 解题思路 要求每一段子列的gcd相等,不妨设为d,可以知道d是所有数的最大公约数,即d=(a[1],a[2],--,a[n]).于是我们先求出d,然后从前往后扫描,记st=1,移动ed,计算d1=(a[st],--,s[ed]),直到d1==d,得到的区间[st,ed]就是一个符合题目要求的子列:记st=ed+1,重复上述操作,直至数列扫完.算法时间复杂…
题目描述 输入一个学号,判断是计算机系or软件学院or其他院系. 解题思路 水题,直接判断or除以10000都可以.不废话,直接上代码. 1 #include <iostream> 2 #include <cstdio> 3 4 using namespace std; 5 6 int main() 7 { 8 char s[20]; 9 while(scanf("%s", s) != EOF) 10 { 11 if(s[2] == '0' &&…
https://buaacoding.cn/contest-ng/index.html#/188/problems 其实这题挺简单的. 注意到答案的大小最多是22 二分,check长度是mid的不同子串有多少个,然后,如果不是1 << mid个,那么肯定是不行的. 想到了这个,我居然用了字符串hash去判,傻逼了,注意到是01串,相当于二进制. #include <bits/stdc++.h> #define IOS ios::sync_with_stdio(false) usin…
Internet of Lights and Switches Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 3  Solved: 3[Submit][Status][Web Board] Description You are a fan of "Internet of Things"(IoT, 物联网), so you build a nice Internet of Lights and Switches in your huge…
题目链接:https://www.nowcoder.com/acm/contest/105/H 题意:两个操作,一个在[l,r]区间放颜色为c的球,一个统计在[l,r]里有多少不同颜色的球. 题解:哎,线段树嘛.板子嘛.把求和操作改一改嘛.当时没用lazy操作T了嘛.谢谢大佬的板子.小萌新知道lazy是个啥玩意儿了.emmm..最后统计一下1的个数就是答案啦. #include<iostream> #include<cstdio> #include<algorithm>…
1008: 偷袭 时间限制: 1.000 sec 内存限制: 128 MB 武林要以和为贵,张麻子不讲武德来偷袭马老师的亲传弟子. 马老师有n个亲传弟子,每个弟子有一个武力值a[i]. n个弟子中只有某些弟子学会了闪电鞭,张麻子想知道如果自己的武力值为W可以打败多少个会闪电鞭的亲传弟子(只有W严格大于a[i],才可以打败第i个弟子). 输入 第一行一个整数T(1<=T<=100),表示数据组数 每组数据第一行两个整数n(1<=n<=100000),m(1<=m<=100…