首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
CSP2019 树上的数 题解
】的更多相关文章
CSP2019 树上的数 题解
题面 这是一道典型的部分分启发正解的题. 所以我们先来看两个部分分. Part 1 菊花图 这应该是除了暴力以外最好想的一档部分分了. 如上图(节点上的数字已省略),如果我们依次删去边(2)(1)(3)(4),那么操作完后2号点上的数字就会跑到1号点上,1号点数字会跑到3号点上,3号点数字跑到4号点上--依此累推.那么我们相当于把五个节点连成了一个环( 5 -> 2 -> 1 -> 3 -> 4 -> 5 ),每一个结点上的数字都会跑到环上的下一个结点上去,我们就是要求能使最…
[CSP-S2019]树上的数 题解
CSP-S2 2019 D1T3 考场上写了2h还是爆零……思维题还是写不来啊 思路分析 最开始可以想到最简单的贪心,从小到大枚举每个数字将其移动到最小的节点.但是通过分析样例后可以发现,一个数字在移动的过程中也可能有无关的边的删除,很难处理.显然直接贪心是不可能的. 分析删边对图的影响.可以发现,一条边删去之后,边两端的部分将不会产生任何影响.也就是说,两边的关系只有这一条边.于是还是之前那个贪心的想法,将边的问题转化为点的问题.现在来分析怎么求解. 具体实现 分析样例后可以发现以下性质: 若…
【CSP2019】树上的数
[CSP2019]树上的数 题面 洛谷 题解 我们设每个点上的编号分别为\(a_1,a_2...a_n\). 10pts ... 菊花 假设现在菊花中心编号是\(rt\),设你依次拆边\((p_1,rt),(p_2,rt)...(p_{n-1},rt)\),那么最后你会发现\(a_{rt}\)到了点\(p_1\),\(a_{p_1}\)到了点\(p_2...a_{p_{n-1}}\)到了\(rt\). 我们把点按照\((rt,p_1,p_2...p_{n-1})\)排出来,那么操作就相当于每个点…
C#版 - Leetcode 504. 七进制数 - 题解
C#版 - Leetcode 504. 七进制数 - 题解 Leetcode 504. Base 7 在线提交: https://leetcode.com/problems/base-7/ 题目描述 给定一个整数,将其转化为7进制,并以字符串形式输出. 示例 1: 输入: 100 输出: "202" 示例 2: 输入: -7 输出: "-10" 注意: 输入范围是 [-1e7, 1e7] . ● 题目难度: 简单 通过次数:707 提交次数:1.8K 贡献者:…
C#版 - Leetcode 306. 累加数 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - Leetcode 306. 累加数 - 题解 306.Additive Number 在线提交: https://leetcode-cn.com/problems/additive-number/ 累加数是一个字符串,组成它的数字可以形成累加序列. 一个有效的累加序列必须至少包含 3 个数.除了最开始…
C#版(打败97.89%的提交) - Leetcode 202. 快乐数 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - Leetcode 202. 快乐数 - 题解 Leetcode 202.Happy Number 在线提交: https://leetcode-cn.com/problems/happy-number/ 或 LintCode 488 https://www.lintcode.com/problem/h…
CSP2019 D1T3 树上的数 (贪心+并查集)
题解 因为博主退役了,所以题解咕掉了.先放个代码 CODE #include<bits/stdc++.h> using namespace std; const int MAXN = 2005; int n, ps[MAXN], ans[MAXN], fir[MAXN], to[MAXN<<1], nxt[MAXN<<1], cntE, Mn; int f[MAXN][MAXN<<1], cnt[MAXN]; bool bf[MAXN<<1],…
BZOJ3930:[CQOI2015]选数——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3930 https://www.luogu.org/problemnew/show/P3172#sub 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公约数,以便进一步研究.然而他很快发现工作量太大了,于是向你寻求帮助.你的任务很简单,小z会告诉你一个整数K,你需要回答他最…
洛谷P1037 产生数 题解 搜索
题目链接:https://www.luogu.com.cn/problem/P1037 题目描述 给出一个整数 \(n(n<10^{30})\) 和 \(k\) 个变换规则 \((k \le 15)\) . 规则: 一位数可变换成另一个一位数: 规则的右部不能为零. 例如:\(n=234\).有规则(\(k=2\)): \(2\)->\(5\) \(3\)->\(6\) 上面的整数\(234\)经过变换后可能产生出的整数为(包括原数): \(234\) \(534\) \(264\) \…
洛谷P1036 选数 题解 简单搜索/简单状态压缩枚举
题目链接:https://www.luogu.com.cn/problem/P1036 题目描述 已知 \(n\) 个整数 \(x_1,x_2,-,x_n\) ,以及 \(1\) 个整数 \(k(k<n)\) . 从 \(n\) 个整数中任选 \(k\) 个整数相加,可分别得到一系列的和. 例如当 \(n=4,k=3\) , \(4\) 个整数分别为 \(3,7,12,19\) 时,可得全部的组合与它们的和为: \(3+7+12=22\) \(3+7+19=29\) \(7+12+19=38\)…
pongo英雄会-幸运数题解
显然我们只要知道1~x范围有多少幸运数(用f(x)表示),lucky(x,y)=f(y)-f(x-1). 解法1. 计算排列数 由于y<=1000000000这个规模,我们不能暴力验证每个数是否是幸运数.可以想到,对于同样的数字组成,不同的数字排列对应不同的幸运数,比如12,21.那么就只需枚举合法的数字组成,算出相应的排列数.设数字i有a[i]个,n=Σa[i],则对应的排列数是n!/∏a[i]!. 接下来就只要枚举那些合法的数字组成了.我们希望枚举时对每位的可取数字是没有限制的,可以分类来进…
洛古P1036 选数 题解
[我是传送门] 这是一道很经典的深搜与回溯(难度一般) 可是就这个"普及-" 让本蒟蒻做了一晚上+半个上午(实际我不会深搜回溯,全靠框架+去重); 下面让我分享下本蒟蒻的(全排列+暴搜去重) #include<bits/stdc++.h> using namespace std; int n,r,ttt;//n是总数,r是选的数,ttt是答案 ],b2[],c[][];//a用来储存排列的编号,b2用来储存输入的数,c用来去重(储存符合条件的数组的编号) ];//用来判断是…
P1036 选数 题解
题目链接https://www.luogu.org/problemnew/show/P1036 题目描述 已知 nnn 个整数 x1,x2,-,xnx_1,x_2,-,x_nx1,x2,-,xn ,以及 111 个整数 kkk ( k<nk<nk<n ).从 nnn 个整数中任选 kkk 个整数相加,可分别得到一系列的和.例如当 n=4,k=3n=4,k=3n=4,k=3 , 444 个整数分别为 3,7,12,193,7,12,193,7,12,19 时,可得全部的组合与它们的和…
FJUT 聪明的商人(树上倍增)题解
思路:求树上两点的距离,显然是dep[u] + dep[v] - 2 * dep[lca],用树上倍增去写. 参考:树上倍增的写法和应用(详细讲解,新手秒懂) 代码: #include<set> #include<map> #include<stack> #include<cmath> #include<queue> #include<vector> #include<cstdio> #include<cstring…
洛谷 P1609 最小回文数 题解
这题其实并不难,重点在你对回文数的了解,根本就不需要高精度. 打个比方: 对于一个形如 ABCDEFGH 的整数 有且仅有一个比它大的最小回文数 有且仅有一个比它小的最大回文数 而整数 ABCDDCBA 一定是其中之一 ~ 如:99299是比99200大的最小回文数 10101 是比 10201 小的最大回文数 所以可以得出结论: ~ 输入一个整数 ABCD ,若整数ABBA 比 ABCD 大,则 ABBA 就是比它大的最小回文数,然后就可以直接输出这个答案了. ~ 而如果 ABBA 比 ABC…
BZOJ3530:[SDOI2014]数数——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3530 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运数. 给定N和S,计算不大于N的幸运数个数. 参考:https://www.luogu.org/blog/user17952/solution-p3311 绝对(对我来说)是道难题,尤其是很久不写AC自…
BZOJ4299 & CC FRBSUM:ForbiddenSum & BZOJ4408 & 洛谷4587 & LOJ2174:[FJOI2016]神秘数——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4299 https://www.lydsy.com/JudgeOnline/problem.php?id=4408 https://www.luogu.org/problemnew/show/P4587 https://loj.ac/problem/2174 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3…
BZOJ1026:[SCOI2009]windy数——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1026 Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? Input 包含两个整数,A B. Output 一个整数 Sample Input [输入样例一] 1 10 [输入样例二] 25 50 Sample Output [输出样例一] 9 [输出样…
C++ 洛谷 P2657 [SCOI2009]windy数 题解
P2657 [SCOI2009]windy数 同步数位DP 这题还是很简单的啦(差点没做出来 个位打表大佬请离开(包括记搜),我这里讲的是DP!!! 首先Cal(b+1)-Cal(a),大家都懂吧(算了,复制一遍吧<<((因为当前的Cal(k)是计算出从1到k-1的符合条件的数的个数,所以要计算a~b的个数要用Cal(b+1)-Cal(a).))>>) f[i][j]定义一样,以j开始的且符合条件的总位数为i的答案个数.(好绕啊) 预处理转移不用讲吧:f[i][j]+=f[i-1]…
9.22考试 crf的数数 题解
这道题当时第一反应是线段树,但没有继续想,因为当时打完第一题打算这道题和第二道题并列做,打完第二道题状压后时间还有两个小时多,先打完暴力再说,打完之后又接着去想,然后想了5分多钟吧,扑街. 然后就发现这题似曾相识,有点像指针恒给我讲的分块“数颜色”,于是如获至宝的打了一个标准的分块.然后满心期待的以为至少能拿60分以上,结果被丝薄数据卡的一分没得,好无良的出题人啊. 考完试后发现好多人拿莫队打了70分,才反应过来这道题可以拿莫队打,然而之前只是听Q某犇讲过莫队的原理,具体实现也没打过,于是乎在自…
yzoj P2349 取数 题解
题意 1到n个自然数中选k个自然数要求两两不相邻,问有多少种方法,模m eg(1 3 5 ) 又是一道打表规律题,正常解法dp可以通过前缀和优化到O(N* K).另外我们可以重新定义F[I,J]表示从1到I中选择J个不连续数的方案数.通过考虑I选还是不选来进行状态转移. 1.如果不选I:则方案数为F[I-1,J]; 2.如果选I:由于不能选相邻两个数,所以I-1不能选,则剩余的J-1个数只能在1到I-2中选,即F[I-2,J-1]; f[i][j]=f[i-1][j]+f[i-2][j-1] (…
CSP2019 树的重心 题解
本题当然可以通过大力讨论每棵子树的size的大小关系,然后用各种数据结构暴力维护.但是我更倾向于用一种更为性质的做法. 首先讲一下我在考场上想到的做法(没写).就是考虑换根,在换根的过程中计算每一条边删去后得到的两棵子树的重心, 由于重心的一些性质,如果我们把以点v的所有儿子为根的子树的重心求了出来,那么我们要求以点v为根的子树的重心时,可以保证重心一定在v的重儿子子树的重心到v的链上,那么我们就可以通过链上倍增来实现对多棵子树的重心的合并.在换根时维护每个点子树size,以及子树内的重心,换根…
洛谷 P1004 方格取数 题解
P1004 方格取数 题目描述 设有 \(N \times N\) 的方格图 \((N \le 9)\),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字\(0\).如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0 15 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B 某人从图的左上角的\(A\…
luogu2657-Windy数题解--数位DP
题目链接 https://www.luogu.org/problemnew/show/P2657 分析 第一道数位DP题,发现有点意思 DP求\([L,R]\)区间内的XXX个数,很套路地想到前缀和,先求\([1,R],[1,L]\)相减就好了 状态转移也明确,发现状态只和上一位数位的数有关,\(f[i][j]\)表示第\(i\)位放\(j\)的话有多少个windy数,注意的这里的windy数是在钦定一个数字最高位是多少情况下所有的windy数的数量和(即[1,i-1]位放数情况都被算了一遍)…
洛谷P3413 SAC#1 - 萌数 题解 数位DP
题目链接:https://www.luogu.com.cn/problem/P3413 题目大意: 定义萌数指:满足"存在长度至少为2的回文子串"的数. 求区间 \([L,R]\) 范围内萌数的数量. 解题思路: 使用 数位DP 进行求解. 定义状态 \(f[pos][p1][p2]\) 表示满足如下条件时的方案数: 当期数位在第 \(pos\) 位: 前面那个数的前面那个数是 \(p1\): 前面那个数是 \(p2\). 则可以开函数 dfs(int pos, int p1, int…
[CSP day1T3]树上的数
题面 题解 这道题由于是求字典序最小的,所以要贪心地枚举数字,然后找可以走到的编号最小的点,处理这条路径. 这条路径有一些特性. 以下是特别精炼的结论: 所以一旦选好了路径,这些边的先后顺序就被定死了,后面的路径肯定不能与他冲突 于是我们只要记录边的先后关系,然后进行非常严密的逻辑判断选择一条不冲突的路径. 复杂度O(n^2) Code 你们看不懂的 #include<cstdio> #include<iostream> #include<cstring> #inclu…
p1012拼数题解
#include<iostream> #include<algorithm> using namespace std; bool cmp(string b,string a) { return b+a>a+b;}//灵魂在这 int main() { ]; int n; cin>>n; ;i<=n;i++) cin>>a[i]; sort(a+,a+n+,cmp); ;i<=n;i++)cout<<a[i]; } 就是这样看标记…
【luogu P3178 [HAOI2015]树上操作】 题解
题目链接:https://www.luogu.org/problemnew/show/P3178 模板题 菜 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define lson left, mid, rt<<1 #define rson mid + 1, right, rt<<1|1 #define ll long lon…
洛谷P2657 [SCOI2009]windy数 题解 数位DP
题目链接:https://www.luogu.com.cn/problem/P2657 题目大意:找区间 \([A,B]\) 范围内 不含前导零 且 相邻两个数字之差至少为2 的正整数的个数. 题目分析: 这道题目使用 数位DP 进行求解. 这里有两个条件: 不含前导零: 相邻两个数字之差至少为2. 所以我们需要确定的是,对于当前状态: 他的前一位的数字是啥: 他的前面是不是都是前导0. 我们可以开一个函数 dfs(int pos, int pre, bool all0, bool limit)…
【CSP2019】括号树 题解(递推+链表)
前言:抽时间做了做这道题,把学长送退役的题. ----------------- 题目链接 题目大意:定义$()$是合法括号串.如果$A,B$是合法括号串,那么$(AB),AB$为合法括号串.现给定根节点为$1$的一棵树,每个节点有一个括号.定义$s_i$是从根节点到$i$结点的括号串,$k_i$是$s_i$的合法子串,求$1*k_1 \ xor \ 2*k_2 \ xor \cdots \ n*k_n$. 这道题其实实现起来并不难,重要的是思维.我也是想了快一个小时才推出来式子QAQ. 可以发…