3727: PA2014 Final Zadanie Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 279  Solved: 121 Description 吉丽YY了一道神题,题面是这样的:“一棵n个点的树,每条边长度为1,第i个结点居住着a[i]个人.假设在i结点举行会议,所有人都从原住址沿着最短路径来到i结点,行走的总路程为b[i].输出所有b[i].”吉丽已经造好了数据,但熊孩子把输入文件中所有a[i]给删掉了.你能帮他恢复吗? Inpu…
[BZOJ3727]PA2014 Final Zadanie Description 吉丽YY了一道神题,题面是这样的:“一棵n个点的树,每条边长度为1,第i个结点居住着a[i]个人.假设在i结点举行会议,所有人都从原住址沿着最短路径来到i结点,行走的总路程为b[i].输出所有b[i].”吉丽已经造好了数据,但熊孩子把输入文件中所有a[i]给删掉了.你能帮他恢复吗? Input 第一行一个整数n(2<=n<=300000).接下来n-1行,每行两个整数x,y,表示x和y之间有连边.接下来一行由…
题目大意:给定一棵树,令一个点到全部点的距离与点权的乘积之和为b[i].求每一个点的权值a[i] 首先假设给定a[i]我们能够非常轻松的求出b[i] 可是反过来怎么搞?高斯消元?30W? 考虑已知a[i]求b[i]的情况 令这棵树的根为1 点i到根节点的距离为dis[i] 以i为根的子树的a值之和为size[i] 那么有递推式 b[1]=Σa[i]*dis[i] b[x]=b[fa[x]]-2*size[x]+size[1] 将上式变形得: 2*size[x]=b[fa[x]]-b[x]+siz…
1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3671  Solved: 1255[Submit][Status][Discuss] Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ax2 < … < axm).那么就称P为S的一个上升序列.如果有多…
好吧蒟蒻还是看题解的 其实看到汉诺塔就该想到是递推了 设f[i][j]表示i个在j杆转移到另一个杆的次数 g[i][j]表示i个在j杆转移到那个杆上 可得 f[i][j]=f[i-1][j]+1+f[i-1][g[i-1][j]] g[i][j]=6-j-g[i-1][j] (g[i-1][g[i-1][j]]==6-j-g[i-1][j]) 或 f[i][j]=f[i-1][j]+1+f[i-1][g[i-1][j]]+1+f[i-1][j] g[i][j]=g[i-1][j] (g[i-1]…
妙啊 这个题一上来就想的是莫比乌斯反演: \[ f(d)=\sum_{k=1}^{\left \lceil \frac{r}{d} \right \rceil}\mu(k)(\left \lceil \frac{r}{kd} \right \rceil-\left \lceil \frac{l-1}{kd} \right \rceil)^n \] 但是看到r的范围发现前缀和不能处理于是不能分块于是时间复杂度为\( O(rlog_2n) \)于是GG.(其实是可以处理的但是我不会比较麻烦,而且复杂…
题解:用a[i]表<=i时有几种树满足度数要求,那么这样就可以递归了,a[i]=a[i-1]^n+1.n个节点每个有a[i-1]种情况,那么将其相乘,最后加上1,因为深度为0也算一种.那么答案就是a[n]-a[n-1].然后就是高精度的问题了,发现很久没有现码高精度没手感了,连高进度加法进位都出了些问题,需要特别注意. #include <cstdio> #include <cstring> #include <algorithm> using namespace…
1009: [HNOI2008]GT考试 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3679  Solved: 2254[Submit][Status][Discuss] Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字. 他的不吉利数学A1A2...Am(0<=Ai<=9)有M位,不出现是指X1X2...Xn中没有恰好一段等于A1A2.…
我真是SB之神呢这么SB的题都不会 肯定是先无脑正向思考,罗列下关系式: b[1]=∑a[i]*dep[i]=∑tot[i] (i!=1) b[i]=b[fa]-tot[i]+(tot[1]-tot[i]) a[i]=tot[i]-∑tot[son] 画一下第二个,就变成2*tot[i]-tot[1]=b[fa]-b[i],那么i取遍2~n就有 2*∑tot[i](i!=1) - (n-1)*tot[1] = ∑b[fa]-b[i] 后面那个是可以算的,∑tot[i](i!=1)就是b1,那to…
HYSBZ(BZOJ) 4300 绝世好题(位运算,递推) Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). Input 输入文件共2行. 第一行包括一个整数n. 第二行包括n个整数,第i个整数表示ai. Output 输出文件共一行. 包括一个整数,表示子序列bi的最长长度. Sample Input 3 1 2 3 Sample Output 2 Http HYSBZ:http://www.lydsy…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4161 还是不能理解矩阵…… 关于不用矩阵理解的方法:https://blog.csdn.net/joker_69/article/details/80869814 关于这道题:https://blog.csdn.net/sdfzyhx/article/details/63697273 现在只会 O(k2logn) 的做法. 很多题解的写法是快速幂到多项式的 n-(k-1) 次,用递推式暴力…
3721: PA2014 Final Bazarek Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 645  Solved: 261[Submit][Status][Discuss] Description 有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价. Input 第一行一个整数n(1<=n<=1000000),表示商品数量.接下来一行有n个整数,表示每件商品的价格,范围在[1,10^9].接下来一行有一个整数m(1&l…
1019: [SHOI2008]汉诺塔 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 559  Solved: 341[Submit][Status] Description 汉诺塔由三根柱子(分别用A B C表示)和n个大小互不相同的空心盘子组成.一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体.  对汉诺塔的一次合法的操作是指:从一根柱子的最上层拿一个盘子放到另一根柱子的最上层,同时要保证被移动的盘子一定放在比它更大…
http://www.lydsy.com/JudgeOnline/problem.php?id=1089 题意:求深度为d的n元树数目.(0<n<=32, 0<=d<=16) #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream> #include <algorithm> #inclu…
Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一步研究.然而他很快发现工作量太大了,于是向你寻求帮助.你的任务很简单,小z会告诉你一个整数K,你需要回答他最大公约数刚好为K的选取方案有多少个.由于方案数较大,你只需要输出其除以1000000007的余数即可. Input 输入一行,包含4个空格分开的正整数,依次为N,K,L和H. O…
1002: [FJOI2007]轮状病毒 Description 给定n(N<=100),编程计算有多少个不同的n轮状病毒. Input 第一行有1个正整数n. Output 将编程计算出的不同的n轮状病毒数输出 Sample Input 3 Sample Output 16   分析:开始想用排列搞搞..发现里面判断边的端点是否重合才能得到几个外围的边的顶点个数..发现很无力: 一部分题解说要使用生成树计数-Matrix-tree定理: 详见:周冬<生成树的计数及其应用> 得到Kirc…
http://www.lydsy.com/JudgeOnline/problem.php?id=1088 脑残去想递推去了... 对于每一个第二列的格子,考虑多种情况,然后转移.....QAQ 空间可以降到O(1)...我就不优化了.. 至于题解说的枚举第一行...orz完全想不到. 做法就是:(好麻烦,不说了...就是对应三个格子的状态然后转移 #include <cstdio> #include <cstring> #include <cmath> #include…
什么都不说先甩题目 Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图所示 N轮状病毒的产生规律是在一个N轮状基中删去若干条边,使得各原子之间有唯一的信息通道,例如共有16个不同的3轮状病毒,如下图所示 现给定n(N<=100),编程计算有多少个不同的n轮状病毒   Input 第一行有1个正整数n Output 计算出的不同的n轮状病毒数输出 S…
挺好想的,就是一直没调过,我也不知道哪儿的错,对拍也拍了,因为数据范围小,都快手动对拍了也不知道 哪儿错了.... 我们定义w[i]代表深度<=i的严格n元树的个数 那么最后w[d]-w[d-1]就是答案 那么对于w[i],我们由w[i-1]递推来, 我们考虑新加一个根节点,然后根节点有n个子节点,每个子节点都可以建一颗深度<=i-1的树,那么每个 子节点都有w[i-1]种选法,那么n个子节点就有w[i-1]^n选法,再加上都不选,就是深度为0的情况 那么w[i]:=(w[i-1]^n)+1:…
I. Interesting Integers 传送门 应该是叫思维题吧,反正敲一下脑壳才知道自己哪里写错了.要敢于暴力. 这个题的题意就是给你一个数,让你逆推出递推的最开始的两个数(假设一开始的两个数为x和y),而且要求x<=y. 通过找规律可以发现,这个题就是求解a*x+b*y=k这个方程的x和y的值,并且要x和y为最小满足条件的解.可以找规律出一个公式fi[i]*x+(fi[i-1]+fi[i])*y=n.因为不知道n具体是在第几步推出来的,所以for循环跑一遍预处理出来的斐波那契数列(存…
3722: PA2014 Final Budowa Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 303  Solved: 108[Submit][Status][Discuss] Description Fancy爷宣布XJOI群将要选举下一任群主.候选人有两名,分别是XYW和吉丽.共有n个人(从1~n编号)参加这次投票.他们之间形成了一个树结构,根结点(1号结点)为Fancy.树上的结点有两种身份:专家(叶子结点)或领导(非叶子结点).每位专家…
题目大意:轮状病毒基定义如图.求有多少n轮状病毒 这个递推实在是不会--所以我选择了打表找规律 首先执行下面程序 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define M 110 using namespace std; struct abcd{ int to,next; bool ban; }table[M<<2]; int head[…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1677 题意: 给定n(n <= 10^6),将n分解为2的幂次方之和,问你有多少种方法. 题解: 两种方法. 一.无限背包 将1,2,4,8...看作物品体积就好. 复杂度O(n*k),k约为20. 二.递推 对于dp[i],有两种情况. (1)i为奇数.则分解结果中一定有1. 所以dp[i] = dp[i-1]. (2)i为偶数.再分两种情况: a. 分解结果中有1,所以dp[i] +…
并不会递推,不过板子挺好背的,只要是类似的递推都能用,但是注意c数组不能使负数 如果除了递推还有常数项的话,就用f[i]-f[i-1]的方式消掉常数项(然后多一个f[i-1]的项) #include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; const int N=4005,mod=1000000007; int n,m,a[N],ans…
传送门 解题思路 可以把原式移项得\(x\)^\(2x\)=\(3x\),而\(x+2x=3x\),说明\(x\)二进制下不能有两个连续的\(1\).那么第一问就是一个简单的数位\(dp\),第二问考虑递推按位做,设\(f(i)\)表示最后一位为\(0\)的答案,\(g(i)\)表示最后一位为\(1\)的答案,那么\(f(i)=g(i-1)+f(i-1)\),\(g(i)=f(i-1)\),整理一下发现\(f(i)=f(i-1)+f(i-2)\),就是斐波那契的形式,直接矩乘即可. 代码 #in…
题意:从编号为 1~N 的音阶中可选任意个数组成一个音乐片段,再集合组成音乐篇章.要求一个音乐篇章中的片段不可重复,都不为空,且出现的音符的次数都是偶数个.问组成 M 个片段的音乐篇章有多少种.答案取模1000000007(质数). 解法:先将题目模型化:N 个数组成 M 种组合,且要求组合之间互不相等,把各组合用二进制表示对 N 个数的取舍状态之后的异或和为0.   虽然求得是组合,但我们转化为排列来做计算时更方便.假设 f[i] 表示从 n 个数中选 i 种排列的方案数.那么就是"总的排列数…
常系数齐次线性递推 具体记在笔记本上了,以后可能补照片,这里稍微写一下,主要贴代码. 概述 形式: \[ h_n = a_1 h_{n-1}+a_2h_{n-2}+...+a_kh_{n-k} \] 矩阵乘法是\(O(k^3 \log n)\) 利用特征多项式可以做到\(O(k^2\log n)\) 特征多项式 特征值和特征向量 特征多项式 \[ f(\lambda) = \mid M - \lambda I\mid \] 是关于\(\lambda\)的\(n\)次多项式 根据\(Cayley-…
题目大意 有一个\(1001\times n\)的的网格,每个格子有\(q\)的概率是安全的,\(1-q\)的概率是危险的. 定义一个矩形是合法的当且仅当: 这个矩形中每个格子都是安全的 必须紧贴网格的下边界 问你最大的合法子矩形大小为\(k\)的概率是多少. \(n\leq {10}^9,k\leq 1000\) 吉老师:这题本来是\(k\leq 20000\) 题解 一道好题. 我们计算最大子矩形不超过\(i\)的答案\(s_i\),那么答案就是\(s_k-s_{k-1}\). 显然最后一行…
[BZOJ4161]Shlw loves matrixI (常系数齐次线性递推) 题面 BZOJ 题解 \(k\)很小,可以直接暴力多项式乘法和取模. 然后就是常系数齐次线性递推那套理论了,戳这里 #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MOD 1000000007 #define MAX 5000 void add(int &x,int…
Description Solution 我们考虑将问题一步步拆解 第一步求出\(F_{S,i}\)表示一次旅行按位与的值为S,走了i步的方案数. 第二步答案是\(F_{S,i}\)的二维重复卷积,记答案为\(S_{S,i}\),那么\(F_{S,i}\times S_{T,j}\)能够贡献到\(S_{S\&T,i+j}\). 上下两部分是两个问题,我们分开来看. 考虑第一步 设原矩阵为A 根据定义,\[F_{S,i}=\sum\limits_{x\&y=T}A^i_{x,y}\] 容易看…