题解 [APIO2014]连珠线】的更多相关文章

题解 [APIO2014]连珠线 题面 解析 首先这连成的是一棵树啊. 并且\(yy\)一下,如果钦定一个根, 那么这上面的蓝线都是爸爸->儿子->孙子这样的,因为像下图这样的构造不出来: (兄弟到兄弟的特殊情况不用考虑,因为会在一个端点作为根的情况考虑的) 那么首先还是来简单的写法, 设\(f[i][0/1]\)表示\(i\)是否为一根蓝线的中点的最大分数, 也可以理解为从\(i\)的一个儿子到\(i\)在上去还有没有蓝线. 并且,\(f[i][1]\)要算上它到父亲的边权. 然后再设\(c…
[BZOJ3677][Apio2014]连珠线 Description 在列奥纳多·达·芬奇时期,有一个流行的童年游戏,叫做“连珠线”.不出所料,玩这个游戏只需要珠子和线,珠子从1到礼编号,线分为红色和蓝色.游戏开始时,只有1个珠子,而接下来新的珠子只能通过线由以下两种方式被加入: 1.Append(w,杪):-个新的珠子w和一个已有的珠子杪连接,连接使用红线. 2.Insert(w,u,v):-个新的珠子w加入到一对通过红线连接的珠子(u,杪)之间,并将红线改成蓝线.也就是将原来u连到1的红线…
[LG3647][APIO2014]连珠线 题面 洛谷 题解 首先考虑一下蓝线连起来的情况,一定是儿子-父亲-另一个儿子或者是儿子-父亲-父亲的父亲. 而因为一开始只有一个点在当前局面上,将一条红边变为两条蓝边也只能在一对有父子关系的点之间加,所以第一种"儿子-父亲-另一个儿子"的情况实际上是不存在的. 假设我们当前已经选定根节点,设\(f[i][0/1]\)表示当前位于以\(i\)为根的子树\(i\)不作为/作为中转点(即中间的父亲节点)的最大答案. 那么有转移: \(f[i][0]…
3677: [Apio2014]连珠线 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 434  Solved: 270[Submit][Status][Discuss] Description 在列奥纳多·达·芬奇时期,有一个流行的童年游戏,叫做“连珠线”.不出所料,玩这个游戏只需要珠子和线,珠子从1到礼编号,线分为红色和蓝色.游戏 开始时,只有1个珠子,而接下来新的珠子只能通过线由以下两种方式被加入: 1.Append(w,杪):-个新的珠子w…
Description 在列奥纳多·达·芬奇时期,有一个流行的童年游戏,叫做“连珠线”.不出所料,玩这个游戏只需要珠子和线,珠子从1到礼编号,线分为红色和蓝色.游戏 开始时,只有1个珠子,而接下来新的珠子只能通过线由以下两种方式被加入: 1.Append(w,杪):-个新的珠子w和一个已有的珠子杪连接,连接使用红线. 2.Insert(w,u,v):-个新的珠子w加入到一对通过红线连接的珠子(u,杪) 之间,并将红线改成蓝线.也就是将原来u连到1的红线变为u连到w的蓝线与W连到V的蓝线. 无论红…
题目链接:戳我 换根DP 由于蒟蒻不会做这个题,所以参考了大佬. 本来想的是有三种情况,一种是该节点不作为两个蓝线的中点(我们称这种不是关键节点),一种是该节点作为关键点.连两个子节点,一种是作为关键节点.一个连子节点一个连父亲节点. 然后有一个不换根的树形DP,但是正确性emmm尚待商榷. 对于一个这样的图-- 我们可以发现,如果想要连起来的话,我们需要不止一个根节点,而这与题目中提到的每次加入一个节点不符. 所以我们考虑换根.这样的话我们发现,就只有两种情况了--一种是该节点不作为关键节点,…
题目大意 有一种生成\(n\)个点的树的方法为: 一开始有一个点,\(n-1\)次操作,每次可以有两种操作:1.选一个点,用一条红边将它与新点连接:2.将新点放在一条红边上,新点与这条红边两端点直接的连边变成蓝色 给出一个\(n(n\leq 2\times10^5)\)个点的树,问如何分配边的颜色使这棵树能用上述方法生成,而且蓝边权值之和最大 题解 (想要简明且优秀的题解点这里) 考虑那种生成方法,发现每条蓝边肯定是由一条红边"分裂"的,那就可以把"连红边"和&qu…
参考:http://www.cnblogs.com/mmlz/p/4456547.html 枚举根,然后做树形dp,设f[i][1]为i是蓝线中点(蓝线一定是父子孙三代),f[i][0]为不是,转移很好想,但是这是n方的 考虑优化换根,记录最小值和最大值就能换根了 #include<iostream> #include<cstdio> #include<vector> using namespace std; const int N=1000005,inf=1e9; i…
题目 换根dp. 显然对于给定的一棵有根树,蓝线都不能拐弯. 设\(f_{u,0}\)表示\(u\)不是蓝线中点时子树内的答案,\(f_{u,1}\)表示\(u\)是蓝线中点时子树内的答案.(以\(1\)为根的情况下) 那么显然有\(f_{u,0}=\sum\limits_{v\in son_u}\max(f_{v,0},f_{v,1}+d_v)\). (\(son_u\)表示\(u\)的儿子集合,\(d_u\)表示\((u,fa_u)\)的长度) 但是\(f_{u,1}\)如何求? 我们这样考…
正解:换根$dp$ 解题报告: 传送门! 谁能想到$9102$年了$gql$居然还没写过换根$dp$呢,,,$/kel$ 考虑固定了从哪个点开始之后,以这个点作为根,蓝线只可能是直上直下的,形如"父-子-孙"这样的. 所以先考虑一个$O(n^2)$的做法,就枚举根节点,然后跑个$dfs$,设$f_{i,1}$表示点$i$是蓝线上"子"的最大答案,$f_{i,0}$表示点$i$不是蓝线上"zi"的最大答案 然后对于$f_{i,0}$,它不是&quo…
题面传送门 题意: 桌子上有 \(1\) 个珠子,你要进行 \(n-1\) 次操作,每次操作有以下两种类型: 拿出一个新珠子,并选择一个桌子上的珠子,在它们之间连一条红线 选择两个由红线相连的珠子 \(u,v\),并拿出一个新珠子 \(w\),将原来连接 \(u,v\) 的红线断开,并在 \(u,w\) 和 \(v,w\) 之间各连一条蓝线. 显然最后 \(n\) 个珠子会形成一棵由 \(n-1\) 条线的树,给出最终每条线的长度,但你不知道它们的颜色. 你的得分为所有蓝线长度之和,求在所有可能…
题面 https://www.luogu.com.cn/problem/P3647 不重复地取树中相邻的两条边,每次得分为两条边权和,问最大得分 分析 容易想到状态 f[i][0/1] 分别表示 i 号点不作为/作为两条边的经过点的以 i 为根子树中的最大得分 显然有 $f[i][0]=/sum max(f[j][0],f[j][1]+w_{i,j})$ 又因为显然只可能有一对相邻边穿过 i ,转移时减去 f[i][0] 中 j 的贡献再加上连接 i,j 的贡献即可 $f[i][1]=f[i][…
Description 在达芬奇时代,有一个流行的儿童游戏称为连珠线.当然,这个游戏是关于珠子和线的.线是红色或蓝色的,珠子被编号为\(1\)到\(n\).这个游戏从一个珠子开始,每次会用如下方式添加一个新的珠子: \(Append(w, v)\):一个新的珠子\(w\)和一个已经添加的珠子\(v\)用红线连接起来. \(Insert(w, u, v)\):一个新的珠子\(w\)插入到用红线连起来的两个珠子\(u,v\)之间.具体过程是删去\(u,v\)之间红线,分别用蓝线连接\(u,w\)和\…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
[APIO2014]连珠线 考虑一组以 \(x\) 为中点的蓝边,有两种可能: \[son[x]->x->fa[x] \] \[son[x]->x->son[x] \] 其中若有两个儿子间连边的点不存在祖先关系,那么它们就无法被连接到一起 因此所有的儿子间连边的点一定在一条链上 因此,若以链的最低点为根,那么所有儿子间连边的点的情况可以归纳为 \(son[x]->x->fa[x]\) 的情况 换根 \(dp\) 即可 点击查看代码 #include<bits/st…
http://www.lydsy.com/JudgeOnline/problem.php?id=3076 https://www.luogu.org/problemnew/show/P3081#sub 有N(1 <= N <= 100,000)座小山,每座山所占的区域用直线(x1, y1) 到 (x2, y2)来表示(x1 < x2 并且 y1 < y2).也就是说这些山用笛卡尔坐标系里的线段来表示,这些用于表示小山的线段都没有任何交点,第一座山的一端位于(x1, y1) = (0…
思路:悬线法\(or\)单调栈 提交:2次 错因:正方形面积取错了\(QwQ\) 题解: 悬线法 讲解:王知昆\(dalao\)的\(PPT\) 详见代码: #include<cstdio> #include<iostream> #define ull unsigned long long #define ll long long #define R register int using namespace std; #define pause (for(R i=1;i<=1…
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-F.html 题目传送门 - https://www.nowcoder.com/acm/contest/148/F 题意 给定一个完全图 $G$ ,有边权. 定义其线图的一条边的权值为“该边连接的两个点,在原图中对应的边 的权值和”. 在图 $L(G)$ 上,定义 $dis(i,j)$ 为节点 $i,j$ 之间的最短路. 求 $\sum_{i=1}^{n…
题面 传送门 题解 我对线代一无所知 如果下面有啥说错的地方请说出来省的我一辈子都搞不明白 如果你没看懂以下在讲什么不要紧,因为我也没看懂 首先,关于\(A\times B \equiv C \pmod{2}\)的方程的一组合法解,\(C\)的列向量必定在\(A\)的列向量的线性空间里 那么\(B\)就可以看成一个方程组-- 设\(A\)的秩为\(x\),那么\(B\)的合法的解的个数就是\((2^{q-x})^s\) 大概意思就是说因为\(A\)的秩只有\(x\),每一列对应一个异或方程组,有…
题面 传送门 题解 我的线代学得跟屎一样看题解跟看天书一样所以不要指望这题我会写题解 这里 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i) #define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i) #define go(u) for(int i=head[u],v=e[i].v;i;i=e[i]…
牛客多校第一场 B Inergratiion 传送门:https://ac.nowcoder.com/acm/contest/881/B 题意: 给你一个 [求值为多少 题解: 根据线代的知识 我们可以将分母裂项,然后根据 \(\int_{0}^{\infty} \frac{1}{1+x^2}dx=\frac{\pi}{2}-->\int_{0}^{\infty} \frac{1}{1+\frac{x}{a_i}^2}d\frac{x}{a_i}=\frac{\pi}{2}\) 可以推得 我们的…
树和图上的dp. 4. 简单树形dp 这些是最为简单的树形dp. 一般来说,树形dp是通过子树的dp值推出当前点的dp值. 在这里,我们默认当前节点为u,它的儿子节点为v,树的根为rt. 例题4.1 luoguP1122 最大子树和 状态转移方程:\(dp[u]=a[u]+\sum\max\{0,dp[v]\}\) 然后dfs就行了.答案为\(\max\{dp[u]\}\) 代码: void dfs(int u) { vis[u]=1; for(int i=h[u];i;i=e[i].nxt)…
## [JZOJ]2109 清兵线 题解 **FIRST 题目大意** 给你一些正整数,这些正整数为数轴上若干个点代表的数.现求:假设从原点出发,走m以内(包括m)的距离最多能够访问多少个点,输出m-每个点到达时已经走过的距离的累加和. **** **NEXT 前置结论** ![P1](https://img-blog.csdnimg.cn/20201006204224958.png#pic_center) 如图所示,首先我们假设数轴上有x,y两点,杀一个士兵的时间是$t_i$ ∵$t_i \e…
题目描述: 华华刚刚帮月月完成了作业.为了展示自己的学习水平之高超,华华还给月月出了一道类似的题: Ans=⊕Ni=1(iNmod(109+7))Ans=⊕i=1N(iNmod(109+7)) ⊕⊕符号表示异或和,详见样例解释. 虽然月月写了个程序暴力的算出了答案,但是为了确保自己的答案没有错,希望你写个程序帮她验证一下.1≤N≤1.3×107 输入描述: 输入一个正整数N. 输出描述: 输出答案Ans. 样例: 输入 2005117 输出 863466972 链接:https://ac.now…
次元传送门:洛谷P1169 思路 浙江省选果然不一般 用到一个从来没有听过的算法 悬线法: 所谓悬线法 就是用一条线(长度任意)在矩阵中判断这条线能到达的最左边和最右边及这条线的长度 即可得到这个矩阵的最大值 那么我们定义3个数组 l[i][j]表示(i,j)能到达最左边的坐标 r[i][j]表示(i,j)能到达最右边的坐标 up[i][j]表示(i,j)能向上最大距离 即线的长度 那么状态转移方程得出: l[i][j]=max(l[i][j],l[i-][j]);//满足条件的最大值为左边(因…
1107 斜率小于0的连线数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题   二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4,6),其中(1,5)同(2,3)(3,4)的连线斜率 < 0,因此斜率小于0的连线数量为2.   Input 第1行:1个数N,N为点的数量(0 <= N <= 50000…
https://www.lydsy.com/JudgeOnline/problem.php?id=3675 https://www.luogu.org/problemnew/show/P3648 http://uoj.ac/problem/104 PS:题面与题解针对于洛谷与uoj版本,bzoj请自觉把“输出做法”删去. 小H最近迷上了一个分隔序列的游戏.在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列.为了得到k+1个子序列,小H需要重复k次以下的步骤: 1.小H首…
哇哦~想不到我有生之年竟然能够做出字符串的题目ヾ(✿゚▽゚)ノ虽然这题比较裸但依然灰常开心! 首先有一个棒棒的性质:本质不同的回文串最多有 O(n) 个.首先 manacher 把它们都找出来,然后问题就变成了给定 n 个子串,求它们在原串中出现的次数.求出 height 然后二分一下即可(这个好像是SA 的基础操作?). #include <bits/stdc++.h> using namespace std; #define maxn 601550 #define CNST 22 int…
题目链接:https://www.luogu.org/problemnew/show/P2952 分析: 这道题非常适合练习deque双端队列,~~既然是是练习的板子题了,建议大家还是练练deque,下面来简单讲解一下deque的一些操作. clear()clear()clear():清空队列 pushpushpush_back()back()back():从尾部插入一个元素. pushpushpush_front()front()front():从头部插入一个元素. deque双端队列的先进就…
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我没看,看不懂. 基本思路:我不会. 参考代码:找Oyk老师和Czj老师去. B. The background of water problem 题目大意(大写加粗的水题):给定$N$个学生和他们$K$个科目的成绩$S_i$,再给出各科目$K_i$的权重顺序$Q_i$,求排名之后,拥有id为$X$的…