[题目描述] 给定一个序列,下标从0开始,分别为a0,a1,a2...an−1,有m个询问,每次给出l和r,求满足ai=aj且l<=i<=j<=r时j−i的最大值 本题强制在线,l和r均进行了加密,解密过程为 l′=min((l+ans)modn,(r+ans)modn) r′=max((l+ans)modn,(r+ans)modn) 其中ans为上次答案 [输入格式] 第一行,两个正整数n,m 第二行,n个非负整数a0,a1,a2...an−1 以下m行,每行两个数l,r,表示询问 […
Bitset简介 下面介绍C++ STL 中一个非常有用的东西: Bitset 类似于二进制状压,它可以把信息转化成一个01串存储起来 定义方法: 首先要#include<bitset>或#include<bits/stdc++.h> 然后定义一个长度为len的bitset S bitset<len>S; 一些操作 bitset还支持&,^,|三个运算 b._Find_first() 找到第一个1的位置 b._Find_next(x)找到x后面为1的第一个位置…
2287. [HZOI 2015]疯狂的机器人 题意:从原点出发,走n次,每次上下左右不动,只能在第一象限,最后回到原点方案数 这不煞笔提,组合数写出来发现卷积NTT,然后没考虑第一象限gg 其实就是卡特兰数 只不过这里\(C(i)\)是第\(\frac{i}{2}\)项,奇数为0 令\(f[n]\)为走n次回到原点方案数,\[ f[n]=\sum_{i=0}^{n}C(i)C(n-i)\binom{n}{i}=n!\sum_{i=0}^{n}C(i)\frac{1}{i!}C(n-i)\fra…
[题意][COGS 2287][HZOI 2015]疯狂的机器人 [算法]FFT+卡特兰数+排列组合 [题解]先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式. 设C(n)表示第n/2个卡特兰数,当n为奇数时为0,即: $$C_n=\binom{n}{\frac{n}{2}}-\binom{n}{\frac{n}{2}-1},n\%2=0$$ 卡特兰数可以通过预处理阶乘和逆元后O(1)计算. 设f[n]表示走n步回到原点的操作序列数,那么答案要求所有f[i],通过枚举纵向行…
[cogs2314][HZOI 2015]Persistable Editor - 可持久化平衡树 题目链接 首先吐槽扯淡几句 [题目描述] 维护一种可持久化的文本编辑器,支持下列操作: 1 p str 在当前版本的第p个字符后插入字符串str,并作为下一版本(数据保证0<=p<=当前字符串的长度,且插入的字符串中只有小写字母) 2 p c 在当前版本中删除从第p个字符开始的后c个字符,并作为下一版本(包含第p个字符,数据保证1<=p<=当前字符串的长度,且p+c-1<=当前…
2123. [HZOI 2015] Glass Beads ★★★   输入文件:MinRepresentations.in   输出文件:MinRepresentations.out   简单对比时间限制:1 s   内存限制:1024 MB [题目描述] 给定长度为n(n<=300000)的循环同构的字符串,定义最小表示为该字符串的字典序最小的同构表示,请输出这个表示. [输入格式] 第一行是串的长度,第二行是字符串. [输出格式] 串的最小表示. [样例输入] 10 helloworld…
COGS 2580. [HZOI 2015]偏序 II 题目传送门 题目大意:给n个元素,每个元素有具有4个属性a,b,c,d,求i<j并且ai<aj,bi<bj,ci<cj,di<dj的i,j对数有多少? a,b,c,d均为1~n的排列,即不会有i,j使得ai=aj or bi=bj or ci=cj or di=dj. 题目是离线的,cdq分治可以很好的解决这一类问题.cdq套cdq套cdq再加个bit就行了. 第一层的cdq处理a,保证a有序, 第二层在第一层的基础上处…
2320. [HZOI 2015]聪聪的世界 时间限制:6 s   内存限制:512 MB [题目描述] 背景: 聪聪的性取向有问题. 题目描述: 聪聪遇到了一个难题: 给出一个序列a1…an,完成以下操作: 1  x 询问从x向左数第一个<ax的数: 2  x 询问从x向左数第一个>ax的数: 3  x 询问从x向右数第一个<ax的数: 4  x 询问从x向右数第一个>ax的数: 5  x y 交换ax与ay: 6  x y w 给ax…ay加上w: 7  x y w 给ax…a…
分块,打标记,维护两个标记:乘的 和 加的. 每次 区间乘的时候,对 乘标记 和 加标记 都 乘上那个值. 每次 区间加的时候 对 加标记 加上那个值. (ax+b)*v=axv+bv.开 long long. #include<cstdio> #include<cmath> using namespace std; typedef long long ll; ],l[],r[],x,y,m,op; ll MOD,a[],sumv[],lzy1[],lzy2[],v; void m…
  题目描述: 给定n个数X1-Xn,求下面式子的值(整数部分): n<=107,xi<=109且互不相同. 分析: 其实一开始看见这道题我也吓傻了,k这么大,再说我又是数论鶸渣,打死也不会= = 后来看了各路神犇的题解,又仔细想了想,大概明白了. 首先,k这么大,已经不是高精乘和高精开方所能承受的了(当然,你也可以找个超级计算机算算试试) 所以我们可以把k视为∞(INF). 极限思想,由于xi互不相同,所以每个元素在比它稍微大一点点的数面前都是微乎其微,不会影响到整数部分的. (可以粗略验证…
[题目描述] 给定长度为n(n<=300000)的循环同构的字符串,定义最小表示为该字符串的字典序最小的同构表示,请输出这个表示. [输入格式] 第一行是串的长度,第二行是字符串. [输出格式] 串的最小表示. [样例输入] 10 helloworld [样例输出] dhelloworl [题目来源] HZOI2015 改编自poj1509 算法很显然,需要注意的是:s[len+1]要赋值成一个较大值. #include <iostream> #include <cstring&g…
for i386:wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpmrpm -ivh rpmforge-release-0.5.3-1.el6.rf.i686.rpm for x86_64:wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpmrp…
Description 题库链接 现在在二维平面内原点上有一只机器人,他每次可以选择向右走,向左走,向下走,向上走和不走(每次如果走只能走一格).机器人不能走到横坐标是负数或者纵坐标是负数的点上. 给定操作次数 \(n\) ,求有多少种不同的操作序列使得机器人在操作后会回到原点,输出答案模 \(998244353\) 后的结果. \(1\leq n\leq 100000\) Solution 应该不难想吧... 显然我们先考虑前四种走法...不走的情况可以组合数求出来. 对于一类操作(向上向下或…
Description 你还梦不梦痛不痛,回忆这么重你怎么背得动 ----序言 当年的战火硝烟已经渐渐远去,可仇恨却在阿凯蒂王子的心中越来越深 他的叔父三年前谋权篡位,逼宫杀死了他的父王,用铁血手腕平定了国内所有的不满 只有他一个人孤身逃了出来,而现在他组织了一只强大的军队,反攻的号角已经吹响 大战一触即发,作为他的机智又勇敢的指挥官,你必须要准确及时的完成他布置的任务 这个国家的布局是一棵树,每个城市都是树上的结点,其中每个结点上都有军队ai(人数) 树上的每条边有边权wi,表示通过这条边所需…
[题目描述] 现在在二维平面内原点上有一只机器人 他每次操作可以选择向右走,向左走,向下走,向上走和不走(每次如果走只能走一格) 但是由于本蒟蒻施展的大魔法,机器人不能走到横坐标是负数或者纵坐标是负数的点上 否则他就会big bang 给定操作次数n,求有多少种不同的操作序列使得机器人在操作后会回到原点 输出答案模998244353后的结果 注意如果两个操作序列存在某一时刻操作不同,则我们认为这两个操作序列不同 [输入格式] 输入n,表示操作次数 n<=100000 [输出格式] 按要求输出答案…
什么都别说了,咱心态已经炸了... question 题目戳这里的说... 其实就是叫你求下面这个式子的导函数: noteskey 其实是道板子题呢~ 刚好给我们弄个多项式合集的说... 各种板子粘贴的不亦乐乎结果一交发现自己 T 掉了,心态爆炸 斗胆把 YYB 大仙的代码交上去发现 A 掉了...(会不会被棕掉丫) 然后调了半天代码甚至还加了更多的优化结果发现跑得还是巨慢无比... 然后继续查 bug ,发现各种函数里面都没有区别,函数运行速度也差不了多少 于是只剩 NTT 里面的锅了,于是两…
题意:求n个点有向图其中SCC是一个的方案数 考虑求出若干个不连通的每个连通块都是SCC方案数然后再怎么做一做.(但是这里不能用Ln,因为推不出来) 设$f_n$为答案, $g_n$为n个点的有向图,分成若干个连通块,每个连通块都是一个SCC,且当连通块大小为奇数时候贡献1系数,偶数时候贡献-1系数.(这里把系数放进去可以避免再来一个函数的麻烦!) $h_n$表示n个点有向图个数$h_n=2^{n*(n-1)}$ $h_n=\sum_{i=1}^nC(n,i)\times g(i)\times…
传送门 CJOJ Solution 具体实现参考上一篇Blog(四维偏序) 代码实现1(cdq+cdq+cdq+BIT) /* mail: mleautomaton@foxmail.com author: MLEAutoMaton This Code is made by MLEAutoMaton */ #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #incl…
题目分析 n个点的二分染色图计数 很显然的一个式子 \[ \sum_{i=0}^n\binom{n}{i}2^{i(n-i)} \] 很容易把\(2^{i(n-i)}\)拆成卷积形式,前面讲过,不再赘述. n个点的二分图计数 设\(f_n\)表示n个点的二分染色图个数. 设\(g_n\)表示n个点的二分连通图个数. 设\(h_n\)表示n个点的二分图个数. 分别构造f,g,h的EGF\(F,G,H\). 显然有 \[ \begin{aligned} F&=\sum_i(2*G)^i=e^{2G}…
题目分析 来自2013年王迪的论文<浅谈容斥原理> 设\(f_{n,S}\)表示n个节点,入度为0的点集恰好为S的方案数. 设\(g_{n,S}\)表示n个节点,入度为0的点集至少为S的方案数. 对于\(g_{n,S}\),有递推式 \[ g_{n,S}=2^{|S|(n-|S|)}g_{n-|S|,\emptyset} \] f与g有如下关系 \[ g_{n,S}=\sum_{S\subseteq T}f_{n,T} \] 子集反演一下 \[ f_{n,S}=\sum_{S\subseteq…
[题目描述] 给定一棵树,要求维护以下操作: 1.M u 将u节点反色 2.Q u 查询u到所有黑色节点距离和 [输入格式] 第一行n,m 表示节点总数和操作次数 之后n-1行,每行u,v表示两个端点,w表示边权 之后m行,操作如题意 n,m<=200000,边权<=1000 一开始所有点均为白色 [输出格式] 输出每次Q的答案 [样例输入] 7 5 2 1 144 3 2 361 4 3 236 5 3 697 6 2 140 7 5 718 Q 4 M 4 Q 5 Q 1 Q 7 [样例输…
[题目描述] 你还梦不梦痛不痛,回忆这么重你怎么背得动 ----序言 当年的战火硝烟已经渐渐远去,可仇恨却在阿凯蒂王子的心中越来越深 他的叔父三年前谋权篡位,逼宫杀死了他的父王,用铁血手腕平定了国内所有的不满 只有他一个人孤身逃了出来,而现在他组织了一只强大的军队,反攻的号角已经吹响 大战一触即发,作为他的机智又勇敢的指挥官,你必须要准确及时的完成他布置的任务 这个国家的布局是一棵树,每个城市都是树上的结点,其中每个结点上都有军队ai(人数) 树上的每条边有边权wi,表示通过这条边所需要的时间…
[题目描述] 现在在二维平面内原点上有一只机器人 他每次操作可以选择向右走,向左走,向下走,向上走和不走(每次如果走只能走一格) 但是由于本蒟蒻施展的大魔法,机器人不能走到横坐标是负数或者纵坐标是负数的点上 否则他就会big bang 给定操作次数n,求有多少种不同的操作序列使得机器人在操作后会回到原点 输出答案模998244353后的结果 注意如果两个操作序列存在某一时刻操作不同,则我们认为这两个操作序列不同 [输入格式] 输入n,表示操作次数 n<=100000 [输出格式] 按要求输出答案…
★★   输入文件:B_Tree.in   输出文件:B_Tree.out   简单对比时间限制:2 s   内存限制:512 MB [题目描述] 给定一棵有根树,树根为1,一开始这棵树所有节点均为白色 之后给定一个染色序列,第i个数ai表示将ai这个点染黑 之后给定若干询问 询问第L到第R个染黑的黑点和u所有的LCA中深度最大的LCA的编号 [输入格式] 第一行n,m,q 表示节点总数,染色序列长度,询问个数 以下n-1行,每行u,v描述一条边的两个端点 之后m个正整数表示染色序列 之后q行,…
额,其实就是裸的三模数NTT,上一篇已经说过了 哦,还有一个就是对乘起来炸long long的数取模,用long double之类的搞一下就好,精度什么的,,(看出题人心情??) #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #define LL long long #define N 300005 using namespace std; inline in…
java数据结构系列之栈 手写栈 1.利用链表做出栈,因为栈的特殊,插入删除操作都是在栈顶进行,链表不用担心栈的长度,所以链表再合适不过了,非常好用,不过它在插入和删除元素的时候,速度比数组栈慢,因为它要维护自己的指针(Next)引用. package com.rsc.stack; import java.util.LinkedList; /** * 利用链表实现的栈 * @author 落雨 * http://ae6623.cn * @param <T> */ public class Li…
Codeforces 题目传送门 & 洛谷题目传送门 又独立切了道 *2900( 首先考虑 \(dp\),\(dp_i\) 表示以 \(i\) 为结尾的划分的方式,那么显然有转移 \(dp_i=\sum\limits_{j=0}^{i-1}dp_j[uni(j+1,i)\le k]\),其中 \(uni(l,r)\) 表示 \([l,r]\) 中出现恰好一次的数的个数. 暴力一脸过不去,考虑优化.我们实时维护一个数组 \(f_j=uni(j+1,i)\),那么上式可写作 \(dp_i=\sum\…
题面 给定一个长度为 n n n 的整数序列 A A A ,序列中每个数在 [ 1 , c ] [1,c] [1,c] 范围内.有 m m m 次询问,每次询问查询一个区间 [ l , r ] [l,r] [l,r],问有多少个数在该区间中出现了偶数次,强制在线. n , m , c ≤ 1 0 5 n,m,c\leq 10^5 n,m,c≤105. 题解 这道题的大方向是分块. 第一个做法是时间复杂度标准 O ( n n ) O(n\sqrt n) O(nn ​) 的做法. 预处理分块数组 有…
前言 编程语言有面向过程和面向对象之分,因此编程风格也有所谓的面向过程的编程和面向对象的编程,并且语言的性质不会限制编程的风格. 这里主要说一以下向过程的编程. "面向过程"(Procedure Oriented)是一种以过程为中心的编程思想. C语言是面向过程的编程语言,可是依旧能够写出面向对象的程序,相同C++也当然能够写出面向过程的程序咯. 假设我们把全部的程序代码都写在一个main函数里面.那么这个程序显然会显得非常不和谐吧. 理想一点的做法是我们把一些看起来和main函数逻辑…
catalogue . 引言 . Device Class Definition for Human Interface Devices (HID) . USB HID Report Descriptors . arduino USB Keyboard definition . USB Host Shield for Arduino分类 . USB Host Shield for Arduino datasheet . USB Host Library Rev.2.0 . USB Keyboar…