题目链接 题目大意 $$F[i]=F[i-1]+F[i-2]\ (\ F[1]=1\ ,\ F[2]=1\ )$$ $$T[i]=F[1]+2F[2]+3F[3]+...+nF[n]$$ 求$T[n]\ mod\ m$ $n,m<=2^{31}-1$ 这题的递推式推导有点神仙,完全想不到多用两个数组来形成递推式.研究了一下一本通上面的两个辅助数组的用途然后才会推出来这个转移矩阵 还是太菜了 题解 由题目可得  $$F[i]=F[i-1]+F[i-2]\ (\ F[1]=1\ ,\ F[2]=1\…
LOJ#10064. 「一本通 3.1 例 1」黑暗城堡 题目描述 你知道黑暗城堡有$N$个房间,$M$条可以制造的双向通道,以及每条通道的长度. 城堡是树形的并且满足下面的条件: 设$D_i$为如果所有的通道都被修建,第$i$号房间与第$1$号房间的最短路径长度: 而$S_i$为实际修建的树形城堡中第$i$号房间与第$1$号房间的路径长度: 要求对于所有整数$i(1\le i\le N)$,有$S_i= D_i$成立. 你想知道有多少种不同的城堡修建方案.当然,你只需要输出答案对$2^{31}…
LOJ #10131 「一本通 4.4 例 2」暗的连锁 给一棵 \(n\) 个点的树加上 \(m\) 条非树边 , 现在需要断开一条树边和一条非树边使得图不连通 , 求方案数 . $n \le 10^5 , m \le 2*10^5 $ , 保证答案在 \(int\) 范围内. 对于每条非树边 , 覆盖 \(x\) 到 \(LCA\) 和 \(y\)到 \(LCA\) 的边 , 即差分算出每个点和父亲的连边被覆盖了多少次 . 被覆盖 \(0\) 次的边可以和 \(m\) 条非树边搭配 , 被覆…
题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两种操作: K=1,读入l,r 表示在l  到 r 之间种上一种树,每次操作种的树的种类都不同: K=2,读入 l,r 表示询问 l 到 r 之间有多少种树. 注意:每个位置都可以重复种树. 输入格式 第一行  表示道路总长为 n,共有  m个操作:接下来 m 行为 m 个操作. 输出格式…
题目链接:https://loj.ac/problem/10065 题目描述 原题来自:Waterloo University 2002 北极的某区域共有 nnn 座村庄,每座村庄的坐标用一对整数 (x,yx, yx,y) 表示.为了加强联系,决定在村庄之间建立通讯网络.通讯工具可以是无线电收发机,也可以是卫星设备.所有的村庄都可以拥有一部无线电收发机, 且所有的无线电收发机型号相同.但卫星设备数量有限,只能给一部分村庄配备卫星设备. 不同型号的无线电收发机有一个不同的参数 ddd,两座村庄之间…
题目链接:https://loj.ac/problem/10106 题目描述 来自 ICPC CERC 1999/2000,有改动. 有 NNN 个盘子,每个盘子上写着一个仅由小写字母组成的英文单词.你需要给这些盘子安排一个合适的顺序,使得相邻两个盘子中,前一个盘子上单词的末字母等于后一个盘子上单词的首字母.请你编写一个程序,判断是否能达到这一要求.如果能,请给出一个合适的顺序. 输入格式 多组数据.第一行给出数据组数 TTT,每组数据第一行给出盘子数量 NNN,接下去 NNN 行给出小写字母字…
题目地址 LOJ 题解 神仙思路.思路参考自<算法竞赛进阶指南>. 考虑维护dfs序中相邻两个石头的距离,那么每次?的答案就是sum/2(首尾算相邻) 然后维护一下拿个平衡树/set维护一下前驱后缀分类讨论一下就行了. 具体的话就是 1.插入x 对ans减去\(dis(pre,nxt)\),再加上\(dis(pre,x)+dis(x,nxt)\),然后插入\(x\) 2.删除x 先删去\(x\),对ans减去\(dis(pre,x)+dis(x,nxt)\),再加上\(dis(pre,nxt)…
树链剖分模板题,详见这篇博客.…
前言 从现在开始,这个博客要写一些题解了.起初,开这个博客只是好玩一样,没事就写写CSS.JS,然后把博客前端搞成了现在这个样子.以前博客只是偶尔记录一些东西,刷题也从来不记录,最近受一些学长的影响,突然觉得写解题报告也很有意思,以后基本上做的题,除了太水的,都会在这上面更新. 一直很想买一个域名,然后用博客框架搭一个自己的博客,以前用 WordPress 和 Hexo 都搭过博客,但是域名续费.虚拟主机(虽然可以用 Hexo+GithubPage/CodingPage 搭静态博客,但更新不方便…
题面 解题思路 贪心,首先按右端点排序,然后从小往大扫,因为要求树最少,所以要尽量放在右端点.然后开个bool数组判断是否种过树即可. 代码 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int MAXN = 3e4+5; inline int rd(){ int x=0,f=1;char ch=getc…
题目描述 原题来自:CODECHEF September Challenge 2015 REBXOR 1​​≤r​1​​<l​2​​≤r​2​​≤N,x⨁yx\bigoplus yx⨁y 表示 xxx 和 yyy 的按位异或. 输入格式 输出格式 输出一行包含给定表达式可能的最大值. 样例 数据范围与提示 5​​,0≤A​i​​≤10​9​​. 题解 首先记录异或前缀和$s[i]=a[1]⊕a[2]⊕a[3] ...⊕a[i]$. 设$l[i]$为以$i$结尾的区间中,异或值的最大值. 因为异或…
题目描述 原题来自:HDU 2087 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? 输入格式 输入数据为多组数据,读取到 # 字符时结束.每组数据仅有一行,为由空格分开的花布条和小饰条.花布条和小饰条都是用可见 ASCII 字符表示的,不会超过 1000个字符. 注意:这个 # 应为单个字符.若某字符串开头有 #,不意味着读入结束! 输出格式 对于每组数据,输出一行一个整数,表示能从花纹布中剪出的最…
LOJ#10117. 「一本通 4.1 练习 2」简单题 题目描述 题目来源:$CQOI 2006$ 有一个$n$个元素的数组,每个元素初始均为$0$.有$m$条指令,要么让其中一段连续序列数字反转——$0$变$1$,$1$变$0$(操作$1$),要么询问某个元素的值(操作$2$). 例如当$n=20$时,$10$条指令如下: 操作 回答 操作后的数组 $1\ 1\ 10$ N/A $11111111110000000000$ $2\ 6$ $1$ $11111\underline{1}1111…
题目描述 在给定的 $N$ 个整数 $A_1,A_2,A_3...A_n$ 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数$N$. 第二行$N$个整数$A_i$. 输出格式 一个整数表示答案. 样例 样例输入 5 2 9 5 7 0 样例输出 14 数据范围与提示 对于$100%$的数据,$1≤N≤10^5$,$0≤Ai<2^{31}$. 题解 这位朋友,你看这道题这样简洁,必然是很能拓展的题啊. 首先把每个数拆分二进制,从最高位(31位)开始,往0位走,算作一个字符串…
题目描述 原题来自:CEOI 1999 给定一张无向图,求图中一个至少包含 333 个点的环,环上的节点不重复,并且环上的边的长度之和最小.该问题称为无向图的最小环问题.在本题中,你需要输出最小环的方案,若最小环不唯一,输出任意一个均可.若无解,输出 No solution..图的节点数不超过 100100100. 输入格式 第一行两个正整数 n,mn,mn,m 表示点数和边数.接下来 mmm 行,每行三个正整数 x,y,zx,y,zx,y,z,表示节点 x,yx,yx,y 之间有一条长度为 z…
题目描述 图书管理是一件十分繁杂的工作,在一个图书馆中每天都会有许多新书加入.为了更方便的管理图书(以便于帮助想要借书的客人快速查找他们是否有他们所需要的书),我们需要设计一个图书查找系统. 该系统需要支持 2 种操作: add(s) 表示新加入一本书名为 s 的图书. find(s) 表示查询是否存在一本书名为 s 的图书. 输入格式 第一行包括一个正整数 n n n,表示操作数. 以下 n n n 行,每行给出 2 种操作中的某一个指令条,指令格式为: add s find s 在书名 s…
题目链接:https://loj.ac/problem/10172 题目描述 Tyvj 两周年庆典要到了,Sam 想为 Tyvj 做一个大蛋糕.蛋糕俯视图是一个 N×MN×MN×M 的矩形,它被划分成 N×MN×MN×M 个边长为 1×11×11×1 的小正方形区域(可以把蛋糕当成 NNN 行 MMM 列的矩阵).蛋糕很快做好了,但光秃秃的蛋糕肯定不好看!所以,Sam 要在蛋糕的上表面涂抹果酱.果酱有三种,分别是红果酱.绿果酱.蓝果酱,三种果酱的编号分别为 1,2,31,2,31,2,3.为了保…
题意描述: 见原LOJ:https://loj.ac/problem/10084 题解: 假设所求的平均最小值为X,环上各个边的权值分别为A1,A2...Ak,可以得到: X=(A1+A2+A3+...+Ak)/K, A1+A2+A3+...+Ak=X*K, 移项可得:(A1-X)+(A2-X)+(A3-X)+...+(Ak-X)=0, 另外注意到式子中的等于号可以改为大于等于,那么我们可以二分结果ans,然后判断是否存在一组解满足(A1+A2+A3+...+Ak)/k<=ans, 即判断:(A…
https://loj.ac/problem/10072 针对无向图 因为Floyd是按照结点的顺序更新最短路的,所以我们在更新最短路之前先找到一个连接点k,当前的点k肯定不存在于已存在的最短路f[i][j]的路径上,因为我们还没用这个k去更新最短路,相当于 (i -> k -> j -> j到i的最短路 -> i)这样一个环就找到了,接下来我们要记录路径,用path[i][j]表示在最短路i到j的路径上j的前一个结点,所以我们在更新最短路时也要更新这个点,原来的最短路是i -&g…
今天做到一道最短路的题,原题https://loj.ac/problem/10081 题目大意为给一张有n个顶点的图,点与点之间有m1条道路,m2条航线,道路是双向的,且权值非负,而航线是单向的,权值可能为负,保证两点之间如果有航线就不会有道路.现给定起始点s,求s到每个点的最短路径,如果没有则输出“NO PATH”. 我当时看到这题那叫一个高兴啊,以为又是一道水题,因为有负权边,不能用Dijkstra,选择用SPFA.那么有没有负环呢?经过实测数据并没有负环,本以为可以轻松AC了,然而评测结果…
复习一下 扩展中国剩余定理 首先考虑两个同余方程 \[ x \equiv a_1\; mod\; m_1\\ x \equiv a_2\; mod\; m_2 \] 化成另一个形式 \[ x = n_1 * m_1 + a_1\\ x = n_2 * m_2 + a_2 \] 联立可得 \[ n_1 * m_1 + a_1 = n_2 * m_2 + a_2\\ n_1 * m_1 - n_2 * m_2 = a_2 - a_1 \] 有解的前提是 \[ \gcd(m_1, m_2) |(a_2…
题面 题目描述 给定一个正整数数列 $a_1, a_2, a_3, \dots , a_n$,每一个数都在 0~p-1之间.可以对这列数进行两种操作: 添加操作:向序列后添加一个数,序列长度变成 n+1: 询问操作:询问这个序列中最后 L 个数中最大的数是多少. 程序运行的最开始,整数序列为空.写一个程序,读入操作的序列,并输出询问操作的答案. 输入格式 第一行有两个正整数 m,p,意义如题目描述: 接下来 m 行,每一行表示一个操作.如果该行的内容是 Q L,则表示这个操作是询问序列中最后 L…
题面 传送门 Ural 州立大学的校长正在筹备学校的 8080 周年纪念聚会.由于学校的职员有不同的职务级别,可以构成一棵以校长为根的人事关系树.每个资源都有一个唯一的整数编号,从 $1$ 到 $N$ 编号,且对应一个参加聚会所获得的欢乐度.为使每个职员都感到快乐,校长设法使每个职员和其直接上司不会同时参加聚会. 你的任务是设计一份参加聚会者的名单,使总欢乐度最高. 第一行是一个整数 $N$ : 接下来 $N$ 行对应 $N$ 个职员的欢乐度,第 ii 行的一个整数为第 $i$ 个职员的欢乐度…
LINK solution 很简单的题 你就考虑实际上是对每一个边求出两端节点分别在两个子树里面的附加边的数量 然后这个值是0第二次随便切有m种方案,如果这个值是1第二次只有一种方案 如果这个值是2或者更大没有方案 然后就可以直接统计答案了 那么就对每一次查询的边 在两个节点++,lca处-2就可以了 #include<bits/stdc++.h> using namespace std; const int N = 2e5 + 10; struct Edge { int v, nxt; }…
#10056. 「一本通 2.3 练习 5」The XOR-longest Path 题目描述 原题来自:POJ 3764 给定一棵 nnn 个点的带权树,求树上最长的异或和路径. 输入格式 第一行一个整数 nnn,接下来 n−1n-1n−1 行每行三个整数 u,v,wu,v,wu,v,w,表示 u,vu,vu,v 之间有一条长度为 www 的边. 输出格式 输出一行一个整数,表示答案. 样例 样例输入 4 1 2 3 2 3 4 2 4 6 样例输出 7 样例解释 最长的异或和路径是 1→2→…
题目描述 不同的雪花往往有不同的形状.在北方的同学想将雪花收集起来,作为礼物送给在南方的同学们.一共有 n 个时刻,给出每个时刻下落雪花的形状,用不同的整数表示不同的形状.在收集的过程中,同学们不希望有重复的雪花.你可以从任意 a 时刻开始,在 b 时刻停止.a 到 b 时刻中间的雪花也都将被收集.他们希望收集的雪花最多. 输入格式 第一行一个正整数 n: 第 2 行 n 个非负整数表示 n个时刻雪花的形状. 输出格式 最多能收集雪花的数量. 样例 输入样例 5 1 2 3 2 1 输出样例 3…
题目描述 一个点每过一个单位时间就会向 444 个方向扩散一个距离,如图所示:两个点 a .b 连通,记作 e(a,b),当且仅当 a .b的扩散区域有公共部分.连通块的定义是块内的任意两个点 u.v都必定存在路径 e(u,a0),e(a0,a1),…e(ak,v). 给定平面上的 n 个点,问最早什么时候它们形成一个连通块. 输入格式 第一行一个数 nnn ,以下 nnn 行,每行一个点坐标. 输出格式 输出仅一个数,表示最早的时刻所有点形成连通块. 样例 样例输入 2 0 0 5 5 样例输…
题目:#10042. 「一本通 2.1 练习 8」收集雪花 看到网上没有这道题的题解,所以写一下. 要标记数字是否存在,看到x<=1e9,所以考虑用离散化,然后开一个last数组,last[i]表示数字i上次出现的位置,via数组记录数离散化过的数i是否出现过. 用双指针法,固定一端l,r++,如果r位置上的数字没有出现过,当前答案就++,如果出现过,就更新当前答案,维护一下via数组和左指针.记得即时更新答案最大值. 最后输出最大值. (我到底在讲什么 贴一下代码: #include<ios…
[LOJ 6030] 「雅礼集训 2017 Day1」矩阵 题意 给定一个 \(n\times n\) 的 01 矩阵, 每次操作可以将一行转置后赋值给某一列, 问最少几次操作能让矩阵全为 1. 无解输出 -1. \(n \le 1000\). 题解 首先手玩下样例就可以发现一个非常虾皮的明显性质: 因为操作是赋值而不是取或, 于是一定是先让某一行都为 1 然后用这一行去染所有不是全 1 的列. 对于构造一个全 1 的行, 如果行号为 \(k\), 那么显然是用某一行的第 \(k\) 列上的 1…
[LOJ 6031] 「雅礼集训 2017 Day1」字符串 题意 给定一个长度为 \(n\) 的字符串 \(s\), \(m\) 对 \((l_i,r_i)\), 回答 \(q\) 个询问. 每个询问会给定一个长度为 \(k\) 的字符串 \(w\) 以及一对 \(L,R\), 求所有满足 \(i\in [L,R]\) 的 \(w[l_i:r_i]\) 在 \(s\) 中的出现次数之和. \(n,m,k,q\le 1\times 10^5\), \(\sum |w|\le 1\times 10…