HDU4812】的更多相关文章

题目大概说给一棵有点权的树,输出字典序最小的点对,使这两点间路径上点权的乘积模1000003的结果为k. 树的点分治搞了.因为是点权过根的两条路径的LCA会被重复统计,而注意到1000003是质数,所以这个用乘法逆元搞一下就OK了.还有要注意“治”的各个实现,把时间复杂度“控制”在O(nlogn). WA了几次,WA在漏了点到子树根的路径,还有每次分治忘了清空数组. #include<cstdio> #include<cstring> #include<algorithm&g…
vjudge 题意:给一棵树,每个点上有一个权值,求一条路径使得路径上权值的乘积膜\(10^6+3\)的结果为\(K\),输出路径的两个端点\(x,y\).如有多解,设\(x<y\),输出\(x\)最小的,若仍有多解输出\(y\)最小的. sol 点分. 每次考虑所有过重心的路径,开一个桶\(T[x]\)表示到根路径权值乘积(不算根的权值)为\(x\)的最小节点编号. 注意要先查出所有点到根的权值乘积,全部更新答案,再去更新桶\(T\) 更新答案的时候用逆元.逆元可以线性预处理出来. 记得要设\…
树分治 求逆元请递推,不然会TLE 开桶记录即可 注意常数 # pragma comment(linker,"/STACK:102400000,102400000") # include <stdio.h> # include <stdlib.h> # include <iostream> # include <algorithm> # include <string.h> # include <vector> #…
逆元链接:https://www.cnblogs.com/zzqc/p/7192436.html 经典的树分治题 #pragma comment("linker,"/STACK:102400000,102400000) #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define MAXN 100005 #define mod 1000003 t…
D树 时间限制:10000/5000 MS(Java / Others)内存限制:102400/102400 K(Java / Others) 总共提交5400个已接受的提交1144 问题描述 南京理工大学的操场上站着一棵高大的树.在树的每个分支上是一个整数(树可以被看作是一个有N个顶点的连通图,而每个分支可以被当作一个顶点).今天,树下的学生正在考虑一个问题:我们可以在树上找到这样一个链,使链上所有整数(mod 10 6 + 3)的乘积等于K? 你能帮助他们解决这个问题吗?   输入 有几个测…
思路比较裸,但是要把答案存到哈希表里面,这里需要一定技巧,否则会被K=1且点权全是1的数据卡飞.预处理乘法逆元.TLE了一天.换了种点分治的姿势…… #pragma comment(linker,"/STACK:102400000,102400000") #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int Res;char C; inline…
题意:问有多少条路径,符合路径上所有节点的权值乘积模1000003等于k. 解题关键:预处理阶乘逆元,然后通过hash和树形dp$O(1)$的判定乘积存在问题,注意此道题是如何处理路径保证不重复的,具有启发意义. 代码:2340ms,这段代码最重要的可取点就是如何通过操作省去memset的过程 复杂度:$O(n\log n)$ #pragma comment(linker,"/STACK:102400000,102400000") #include<cstdio> #inc…
各种填坑资料(qwq) 主席树(by YL)戳 树套树(by ZSY)戳 不要问我这些题咋来的(查大佬的水表呗) 题目列表: [HDU5977]Garden of Eden [BZOJ2752][HAOI2012]高速公路 [SPOJ TLE]Time Limit Exceeded [NOI2008]假面舞会 [BZOJ3460] Jc的宿舍 [Luogu1456]Monkey King [HNOI2007]紧急疏散evacuate [BZOJ2442]修建草坪 [SCOI2012]滑雪与时间胶…
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noip前的杂题训练,我也很无奈啊 做完了的扔最后,欢迎好题推荐 这么多题肯定是完不成了,能多做一道是一道吧 DP yyb真是强得不要不要的辣:http://www.cnblogs.com/cjyyb/category/1036536.html [ ] [SDOI2010]地精部落 https://www…
https://vjudge.net/problem/HDU-4812 点分就没一道不卡常的? 卡常记录: 1.求逆元忘开longlong 2.把solve中分离各个子树的方法,由“一开始全部加入,处理某个子树前先删除该子树”,变为“逐渐加入,每一次加入某个子树之前处理该子树,不用删除“(由于点对是无序的,只要一个方向处理过就行了,另一个方向不需要处理) //%:pragma GCC optimize(3) #include<cstdio> #include<algorithm>…
题目链接:https://vjudge.net/problem/HDU-4812 题意:给定一颗带点权的树,求是否存在一条路经的上点的权值积取模后等于k,如果存在多组点对,输出字典序最小的. 思路: 点分治模板题.按照套路,找重心,求出子树中节点到重心的权值积取模后的值dis[i](包括重心的权值,也不可以不包括,一样的),用id[j]记录该路径的端点,用的是点分治的第二种写法.递归时,用桶mine[i]记录到重心权值积为i的最小编号.然后查找时,对dis[j],满足要求的tmp为:tmp*di…
点分治题单(来自XZY) 静态点分治 [x] 洛谷 P3806 [模板]点分治1 [x] 洛谷 P4178 Tree [x] 洛谷 P2634 [国家集训队]聪聪可可 [x] 洛谷 P4149 [IOI2011]Race [ ] [Luogu2664]树上游戏 [ ] [WC2010]重建计划 [ ] [HDU4812]D Tree [ ] [SPOJ1825]Free tour II [ ] [HDU5977]Garden of Eden [ ] [HDU5909]Tree Cutting […