题目链接:https://www.luogu.org/problemnew/show/P3931 肉眼观察题目感觉可以跑最大流. 证明是如果拆断一棵树,可以最小割,最小割等于最大流. 注意: 图是无向边,在网络流里建两次边,即四次. 统计一下叶子节点,再建一个超级汇点,所有距离为inf. #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <…
原题传送门 题目几乎告诉你要用最大流 先进行搜索,将树的叶子节点都连到一个虚拟点T上,流量为inf(这样不会干扰到前面部分的最大流) 其他边按树的形态连边,以根节点为S,跑一变最大流即可求出答案 #include <bits/stdc++.h> #define N 100005 #define M 200005 #define inf (1<<30) #define getchar nc using namespace std; inline char nc(){ static c…
题目大意:给你一棵带权有根树,可以切断一些边,问使得根和叶子节点不连通的最小代价. 题解:做了一天的网络流,这道题显然可以用最小割来做,但是也可以用树形$DP$,基本同[SDOI2011]消耗战,这道题一次询问,只需要那个$O(n)$的$DP$就行了. 卡点:无 C++ Code: #include <algorithm> #include <cstdio> #define maxn 100010 const long long inf = 0x3f3f3f3f3f3f3f3f;…
传送门 简单dp题. f[i]表示以i为根的子树被割掉的最小值. 那么有: f[i]=min(∑vf[v],dist(i,fa))" role="presentation" style="position: relative;">f[i]=min(∑vf[v],dist(i,fa))f[i]=min(∑vf[v],dist(i,fa)) 直接树形dp就行了. 代码: #include<bits/stdc++.h> #define N 10…
题目背景 冴月麟和魏潇承是好朋友. 题目描述 冴月麟为了守护幻想乡,而制造了幻想乡的倒影,将真实的幻想乡封印了.任何人都无法进入真实的幻想乡了,但是她给前来救她的魏潇承留了一个线索. 她设置了一棵树(有根).树的每一条边上具有割掉该边的代价. 魏潇承需要计算出割开这棵树的最小代价,这就是冴月麟和魏潇承约定的小秘密. 帮帮魏潇承吧. 注:所谓割开一棵有根树,就是删除若干条边,使得任何任何叶子节点和根节点不连通. 输入输出格式 输入格式: 输入第一行两个整数\(n\),\(S\)表示树的节点个数和根…
P3931 SAC E#1 - 一道难题 Tree 题目背景 冴月麟和魏潇承是好朋友. 题目描述 冴月麟为了守护幻想乡,而制造了幻想乡的倒影,将真实的幻想乡封印了.任何人都无法进入真实的幻想乡了,但是她给前来救她的魏潇承留了一个线索. 她设置了一棵树(有根).树的每一条边上具有割掉该边的代价. 魏潇承需要计算出割开这棵树的最小代价,这就是冴月麟和魏潇承约定的小秘密. 帮帮魏潇承吧. 注:所谓割开一棵有根树,就是删除若干条边,使得任何任何叶子节点和根节点不连通. 输入输出格式 输入格式: 输入第一…
圆原题面 我环顾四周,发现大佬们的写法都好高端! 比较差劲的我,只能交上一份DFS的题解 思路: DFS(当然了,其他算法也行) 要想切断叶子节点到根节点的连接 就是在叶子节点和根节点之间砍掉一条边 这明显就很符合DFS的性质,一条路一直走下去,遇到分枝就分开走 于是我们DFS每一条路径,然后求答案 复杂度为O(n) 但是--还没完! 我们可以发现DFS有三种情况 1.该节点为叶子节点,此时只能删去连接它和父节点的边 2.该节点为枝节点,有父节点和子节点,需要选择性的删除 3.该节点为根节点,只…
Problem is here \(\text{Solution:}\) 首先,一眼看出这是最小割,只要叶子节点对汇点\(T\)连接流量为\(inf\)的边就可以一遍最大流搞定了. 剩下的问题在于,如何判断边的方向. 可以用\(dfs\)实现,方向由源点\(S\to T.\)而边权,注意到我们连的边是双向边,且编号连续.利用这一点我们可以在\(dfs\)里面对边进行赋值. #include<bits/stdc++.h> using namespace std; const int MAXN=5…
题目背景 冴月麟和魏潇承是好朋友. 题目描述 冴月麟为了守护幻想乡,而制造了幻想乡的倒影,将真实的幻想乡封印了.任何人都无法进入真实的幻想乡了,但是她给前来救她的魏潇承留了一个线索. 她设置了一棵树(有根).树的每一条边上具有割掉该边的代价. 魏潇承需要计算出割开这棵树的最小代价,这就是冴月麟和魏潇承约定的小秘密. 帮帮魏潇承吧. 注:所谓割开一棵有根树,就是删除若干条边,使得任何任何叶子节点和根节点不连通. 输入输出格式 输入格式: 输入第一行两个整数n,S表示树的节点个数和根. 接下来n-1…
题目背景 冴月麟和魏潇承是好朋友. 题目描述 冴月麟为了守护幻想乡,而制造了幻想乡的倒影,将真实的幻想乡封印了.任何人都无法进入真实的幻想乡了,但是她给前来救她的魏潇承留了一个线索. 她设置了一棵树(有根).树的每一条边上具有割掉该边的代价. 魏潇承需要计算出割开这棵树的最小代价,这就是冴月麟和魏潇承约定的小秘密. 帮帮魏潇承吧. 注:所谓割开一棵有根树,就是删除若干条边,使得任何任何叶子节点和根节点不连通. 输入输出格式 输入格式: 输入第一行两个整数n,S表示树的节点个数和根. 接下来n-1…
problem #include <bits/stdc++.h> #define rep(i,j,n) for(register int i=j;i<=n;i++) #define Rep(i,j,n) for(register int i=j;i>=n;i--) #define low(x) x&(-x) using namespace std ; typedef long long LL ; const int inf = INT_MAX >> 1 ; in…
P3926 SAC E#1 - 一道不可做题 Jelly [链接]:https://www.luogu.org/problem/show?pid=3926 题目背景 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢吃蒟蒻果冻.而SOL菌也很喜欢蒟蒻果冻. 有一天,他们在一起搓炉石,而SOL菌则要拿出蒟蒻果冻招待他的客人. 蒟蒻果冻一般在a度下保存在冰箱里.但是刚拿出来的时候太冰了,需要加热.SOL菌打算用一种神奇的电炉加热蒟蒻果冻.根据观察,它有一个特点:…
P3926 SAC E#1 - 一道不可做题 Jelly 题目背景 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢吃蒟蒻果冻.而SOL菌也很喜欢蒟蒻果冻. 有一天,他们在一起搓炉石,而SOL菌则要拿出蒟蒻果冻招待他的客人. 蒟蒻果冻一般在a度下保存在冰箱里.但是刚拿出来的时候太冰了,需要加热.SOL菌打算用一种神奇的电炉加热蒟蒻果冻.根据观察,它有一个特点: 1.蒟蒻果冻小于c度的时候,每p单位时间加热1单位温度: 2.当蒟蒻果冻等于c度的时候,需要q单位…
[题解] Luogu P5446 [THUPC2018]绿绿和串串 ·题目大意 定义一个翻转操作\(f(S_n)\),表示对于一个字符串\(S_n\), 有\(f(S)= \{S_1,S_2,...,S_{n-1},S_n,S_{n-1},...S_2,S_1 \}\). 现在给定一个长度为\(n\)的字符串\(S^{'}\)表示原字符串\(S\)经过若干次(可能为0)旋转之后的一个前缀, 求原来字符串可能的长度\(l\). 显然当\(l > n\)时一定可行,所以只需要输出所有的\(l\leq…
二次联通门 : luogu P3690 [模板]Link Cut Tree 莫名RE第8个点....如果有dalao帮忙查错的话万分感激 #include <cstdio> #include <iostream> #define Max 4000002 void read (int &now) { now = ; bool temp = false; register char word = getchar (); ') { if (word == '-') temp =…
[题目]洛谷10月月赛R1 提高组 [题意]给定n*n棋盘和<=16个棋子,给几个棋子种类和攻击范围,现我方只有一马,求能否吃王. [算法]状压+BFS [题解]16种棋子中,马不能吃马,直接处理马和王,那么就剩13个棋子,可以压成2^13表示棋盘现有棋子存活状态. 然后对vis[2^13][n][n]进行bfs. 细节: 1.攻击直到碰到其它棋子,那个碰到的棋子也算攻击范围内. 2.判断碰到棋子时,注意该棋子是否在当前局面存活. 3.多组数据,Q中途退出要清空. 学到了: 1.一份长代码要细心…
[题目]洛谷10月月赛R1 提高组 [题意]求n!在k进制下末尾0的个数,n<=1e18,k<=1e16. [题解]考虑10进制末尾0要考虑2和5,推广到k进制则将k分解质因数. 每个质因数在n!中的数量,以2为例是n/2+n/4+n/8...这样统计.(含x个就被统计x次) 最后得到凑出的k的个数就可以得到末尾0的个数. 分解质因数复杂度O(√k),也使用pollard rho算法可以加速. #include <iostream> #include <stdlib.h>…
[题目]洛谷10月月赛R1 提高组 [算法]递推DP+树状数组 [题解]列出DP递推方程,然后用树状数组维护前后缀和. #include<cstdio> #include<cstring> #include<cctype> #include<cmath> #include<algorithm> #define lowbit(x) (x&-x) #define ll long long using namespace std; int re…
关于这道题, 我们可以发现移动顺序不会改变答案, 具体来说, 我们有以下引理成立: 对于一个移动过程中的任意一个移动, 若其到达的位置上有一个棋子, 则该方案要么不能将所有棋子移动到最终位置, 要么可以通过改变顺序使这一次移动合法 证明: 考虑到达位置上的那个棋子, 如果它没有到达最终位置, 则我们考虑将该棋子移至下一步, 如果下一步还有没有到达最终位置的棋子, 则也移动它 否则直接调换这两个棋子的移动顺序即可 好的我们去除了题目中的要求: 「移动过程中不能出现多颗棋子同时在某一格的情况」, 接…
Description 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 今天他萌上了组合数.现在他很想知道simga(C(n,i))是多少:其中C是组合数(即C(n,i)表示n个物品无顺序选取i个的方案数),i取从0到n所有偶数. 由于答案可能很大,请输出答案对6662333的余数. Input 输入仅包含一个整数n. Output 输出一个整数,即为答案. Sample Input 3 Sample Output 4 Hint 对于20%的数据,n <= 20: 对于50%的数据,n <= 1…
本蒟蒻也来发一次题解第一篇请见谅 这个题有几个要点 1.无向无权图,建图的时候别忘记建来回的有向边[因此WA掉1次 2.无权嘛,那么边长建成1就好了2333333 3.最短路采用迪杰斯特拉(别忘用堆优化)来做,计数操作改装进去,ans[1]=1;迪杰斯特拉更新边长的时候如果大于号(具体见代码)就覆盖,相等的话就加上 4.%楼上SPFA,BFS大佬 具体见代码,其实就是在迪杰斯特拉里面填了几笔(逃 代码巨丑(捂脸) #include<cstdio> #include<cstring>…
题目传送门:https://www.luogu.org/problemnew/show/P3927 题目大意:给你两个正整数n,k,求n!在k进制下末尾零的数量. 我们通过简单的数学分析,便可以发现,n!可以化为x*k^y(x,y∈N),而末尾零的数量,正是y. 经过进一步化简,$n! = x*\prod_{1}^{d(k)}d_{i}*y_{i}$,其中$d_{i}$为k的素因子,此处d(k)表示k的素因子个数,在已知d的情况下,求$y$并不复杂. 同时,我们也可以将k也化为这个格式,$k =…
题意 求sigma(C(n,i))其中C是组合数(即C(n,i)表示n个物品无顺序选取i个的方案数),i取从0到n所有偶数. 由于答案可能很大,请输出答案对6662333的余数. (n<=1018) 题解 其实就是一个快速幂.2n-1 为什么呢. 因为可以考虑假设当前要求n的答案. 对于每一个n-1个数的选择情况.你都可以通过对第n个数到底选还是不选来形成一个合法情况. 所以答案为2n-1 #include<iostream> #include<cstring> #inclu…
这道题刚开始正向思维,然后处理重复的时候咕咕了. 参考了@巨型方块 大佬的题解后AC了,在这里就说几个我觉得比较重要或是容易被忽略的点,然后补充一些跳过的证明. 这道题的状态可以设为$dp[i][j][k]$,意思是长度为$i$,然后第$i$位为$j$,第$i-1$位为$k$的不是萌数的数量. 那么为什么我们只需要枚举两位呢? 这是因为所有的回文数都必定可以简化为$aa$和$aba$中的一种,证明如下: I. 对于长度小于等于3的回文数,显然即为以上两种中的一种.(一位数忽略) II. 对于长度…
感谢 @cmy962085349 提供的hack数据,已经改对了. 先声明,我好像是题解里写双$fhq$ $treap$里唯一能过的...(最后两个点啊) 思路:首先看题目,$MIN_GAP_SORT$ 明显是求它的前驱与后继(可能有相同的),所以就用平衡树,但是又要求两个相邻的数的差,就可以有再开一个平衡树存放差值 实现:抛开奇奇怪怪的的题面,主要考虑这三个操作: 1.$INSERT$ $i$ $k$: 这个很简单,用链表就行了(数组模拟的),但是要注意,插入的时候,要接着上一个在这插入的,还…
讲讲这题的几种做法: 暴力匹配法 rt,暴力匹配,即把字符串存起来一位一位判相等 时间复杂度$ O(n^2·m) $ 再看看数据范围 \(n\le10^5,m\le10^3\) 当场爆炸.当然有暴力分 代码(20pts): #include <bits/stdc++.h> using namespace std; char c[100001][1001]; bool pd(int x, int y) { int l1 = strlen(c[x]), l2 = strlen(c[y]); if(…
妈妈我终于会这道题了! 设\(n\)个点的有根仙人掌个数的指数型生成函数(EGF)为\(F(x)\), 令\(f_i = [x^n]F(x)\) 对于\(f_i\), 我们考虑钦点\(1\)号点为根, 然后考虑与\(1\)相邻的是什么 \(1\)不在环上: 对于这种情况, 我们可以发现与它相邻的还是一颗仙人掌, 于是它的生成函数还是\(F(x)\) \(1\)不在环上: 对于这种情况, 我们考虑环的大小\(i\), 那么去除点\(1\), 它的生成函数就是\(F^i(x)\), 但是考虑到对称的…
题目描述 辣鸡蒟蒻SOL是一个傻逼,他居然觉得数很萌! 好在在他眼里,并不是所有数都是萌的.只有满足“存在长度至少为2的回文子串”的数是萌的——也就是说,101是萌的,因为101本身就是一个回文数:110是萌的,因为包含回文子串11:但是102不是萌的,1201也不是萌的. 现在SOL想知道从l到r的所有整数中有多少个萌数. 由于答案可能很大,所以只需要输出答案对1000000007(10^9+7)的余数. 输入输出格式 输入格式: 输入包含仅1行,包含两个整数:l.r. 输出格式: 输出仅1行…
题目背景 小强和阿米巴是好朋友. 题目描述 小强很喜欢数列.有一天,他心血来潮,写下了一个数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种:波动数列. 一个长度为n的波动数列满足对于任何i(1 <= i < n),均有: a[2i-1] <= a[2i] 且 a[2i] >= a[2i+1](若存在) 或者 a[2i-1] >= a[2i] 且 a[2i] <= a[2i+1](若存在) 阿米巴把他的喜好告诉了小强.小强便打算稍作修改,以让这个数列成为波动数列.他想知道…
题目背景 小强和阿米巴是好朋友. 题目描述 小强喜欢数列.有一天,他心血来潮,写下了三个长度均为n的数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种,波动数列. 阿米巴把他的喜好告诉了小强.小强便打算找出这三个数列内的最长波动数列. 也就是说,如果我们将三个数列记做a[n][3],他必须要构造一个二元组序列:<p[i], q[i]>,使得对于任何 i>1 有: p[i] > p[i-1] 若q[i] = 0,a[p[i]][q[i]] >= a[p[i-1]][q[i-1]]…