HDU5877 - Weak Pair

HDU5877 - Weak Pair


做法:dfs的时候,用树状数组维护当前节点到跟节点的权值树状数组,离散化一下即可,类似统计树上逆序对。此题数据范围好像是假的,节点数开到200000可过。

#include <bits/stdc++.h>
#define pb push_back
typedef long long ll;
const int N = 2e5 + 7;
const ll inf = LONG_MAX;
using namespace std;
struct edge{int e,nxt;}E[N];
int h[N], cc;
void adde(int u,int v) {E[cc].e=v;E[cc].nxt=h[u];h[u]=cc;++cc;
}
int n, rt, in[N];
ll k, a[N];
vector<ll> v;
int num;
ll B[N], num0 , ans = 0;
int id(ll x) {return lower_bound(v.begin(),v.end(),x) - v.begin() + 1;
}
void add(int x,ll v) {for(int i=x;i<=num;i+=(i&(-i))) B[i]+=v;
}
ll ask(int x) {ll ans = 0;for(int i=x;i;i-=(i&(-i))) ans+=B[i];return ans;
}
void dfs(int u) {for(int i=h[u];~i;i=E[i].nxt) {int v = E[i].e;if(a[v]) ans += ask(id(k/a[v]));else ans += ask(id(inf));add(id(a[v]),1LL);dfs(v);add(id(a[v]),-1LL);}
}
void dfs2(int u,ll dep,ll num0) {for(int i=h[u];~i;i=E[i].nxt) {int v = E[i].e;if(a[v] == 0) ans += dep;else ans += num0;dfs2(v,dep+1,num0+(a[v]==0));}
}
int T;
int main() {scanf("%d",&T);while(T--) {scanf("%d%lld",&n,&k);v.clear();cc = 0;for(int i = 1; i <= n; ++i) {scanf("%lld",&a[i]);if(a[i]) v.pb(a[i]), v.pb(k/a[i]);else v.pb(0), v.pb(inf);h[i] = -1; in[i] = 0;}sort(v.begin(),v.end()); v.erase(unique(v.begin(),v.end()),v.end());num = v.size();for(int i = 1; i < n; ++i) {int u, v;scanf("%d%d", &u, &v);adde(u,v); ++in[v];}for(int i = 1; i <= n; ++i) if(!in[i]) {rt = i; break;}ans = 0;if(k == 0) {dfs2(rt,1,(a[rt]==0));}else {add(id(a[rt]),1LL);dfs(rt);add(id(a[rt]),-1LL);}printf("%lld\n",ans);}
}

转载于:https://www.cnblogs.com/RRRR-wys/p/9706168.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jzoj5248-[NOIP2017提高A组模拟8.10]花花的聚会【倍增,树形dp】

正题 题目链接:https://gmoj.net/senior/#main/show/5248 题目大意 nnn个点的一棵树&#xff0c;有mmm张票(v,k,w)(v,k,w)(v,k,w)表示可以在点vvv买&#xff0c;可以走kkk步以内&#xff0c;价格为www。 一个时间只能有一个票&#xff0c;每次询问一个点到根节点需要的最少票…

【高精】Gift(jzoj(gz) 1763)

Gift jzoj&#xff08;gz&#xff09; 1763 题目大意&#xff1a; 有9个数&#xff1a;a,b,c……i,计算出2a2b……2hi2^a2^b……2^hi2a2b……2hi 输入样例 1 21 30 0 0 0 0 0 0 2147483647输出样例 3223322629数据范围 40% t<1000 100% t<100000 a,b,c,d,e,f,g,h&…

.net core 多版本如何选择

在讲述.net core多版本之前&#xff0c;我们先理解一下.net core sdk与.net core runtime之前的联系与区别&#xff0c;根据官网的解释我们可以简单地理解为&#xff1a;sdk是在开发过程中进行使用&#xff0c;而runtime是在项目发布后作为运行环境进行安装的&#xff0c;runti…

P3226-[HNOI2012]集合选数【状压dp】

正题 题目链接:https://www.luogu.com.cn/problem/P3226 题目大意 1∼n1\sim n1∼n选出一些组成集合&#xff0c;一个集合里如果有xxx则不能有2x,3x2x,3x2x,3x。求有多少合法集合。 解题思路 我们可以构造一个矩阵 13927…2618…412…8… 这样选择一个位置后它相邻的位置就不…

HDU5120 - Intersection

HDU5120 - Intersection 做法&#xff1a;答案就是\(A1 \cap B1 - A2 \cap B1 - A1 \cap B2 A2 \cap B2\)&#xff0c;圆形面积交码了好久&#xff0c;先把两个圆转到x轴上&#xff0c;大的放到原点&#xff0c;小的放在大圆的左边&#xff0c;计算一下交点坐标&#xff0c;然…

【结论】Number(jzoj(gz) 1781)

Number jzoj&#xff08;gz&#xff09; 1781 题目大意&#xff1a; 现在给出一个x&#xff0c;可以把x变为4x3或8x7&#xff0c;问最少变多少次可以把x变为1000000007的倍数 输入输出样例 输入样例#1 125000000输出样例#1 1输入样例#2 281250001输出样例#2 2输入样例…

好代码是管出来的——使用GitHub实现简单的CI/CD

软件开发一般来说是一项团队作业&#xff0c;在本系列文章开始就提到过软件的编码是由一个团队“并行”完成的&#xff0c;为了保证编码任务正常完成&#xff0c;首先引入版本控制工具来完成代码管理&#xff0c;为了保证代码质量引入了代码分析器以及代码测试。版本控制工具可…

HDU5119 - Happy Matt Friends

HDU5119 - Happy Matt Friends 做法&#xff1a;拆成两堆数&#xff0c;分别暴力出两组的所有异或值A,B&#xff0c;枚举A, 将B全部插入Trie树&#xff0c;通过枚举的数每一位的值,确定异或后构成的新树&#xff0c;然后在新树上统计比m大的值的个数即可。 #include <bits/s…

jzoj4739-[雅礼联考GDOI2017模拟9.2]Ztxz16学图论【LCT,树状数组】

正题 题目链接:https://gmoj.net/senior/#main/show/4739 题目大意 nnn个点mmm条边的一张图&#xff0c;qqq次询问一个区间的边可以形成多少连通块。 解题思路 询问按照右端点排序&#xff0c;然后边权就是编号&#xff0c;这样询问最大生成树后判断有多少个边权大于lll即可。…

【状压DP】最优配对问题(jzoj 3420)

最优配对问题 jzoj 3420 题目大意&#xff1a; 在平面上有n个点&#xff0c;现在要把他们拼成n/2对&#xff0c;拼接两个点的代价是他们的平面距离&#xff0c;现在问代价总和最小是多少 输入样例 4 8730 9323 -3374 3929 -7890 -6727 1257 4689输出样例 20366.60数据范围…

数据告诉你:中年并不只有危机,创业或许正当时

人们普遍认为最成功的企业家都是年轻人。比尔?盖茨、史蒂夫?乔布斯和马克?扎克伯格都在自己20岁出头的时候&#xff0c;建立起了日后改变世界的伟大公司。这些著名的案例是否反映了一种可以被普遍推广的模式呢&#xff1f;风险投资机构和媒体似乎赞成一点。我们分析了过去十…

HDU6223 - Infinite Fraction Path

HDU6223 - Infinite Fraction Path 做法1&#xff1a;枚举每个串取最大值&#xff0c;只用判断前20位&#xff0c;如果前20位都相同&#xff0c;可以认定两个串相同。因为很容易进入循环节&#xff0c;且循环节不太大。 #include <bits/stdc.h> #define pb push_back typ…

P4219-[BJOI2014]大融合【LCT】

正题 题目链接:https://www.luogu.com.cn/problem/P4219 题目大意 nnn个点&#xff0c;每次有操作 加入一条边&#xff0c;保证该边连接了两个不同的连通块询问经过一条边的路径数量 解题思路 考虑如何用LCTLCTLCT维护虚子树信息&#xff0c;只要在断边的时候把虚子树的信息…

【区间DP】甲虫(luogu 4870)

甲虫 luogu 4870 题目大意&#xff1a; 在一个坐标轴上有n个露珠&#xff0c;每个露珠有m个水分&#xff0c;露珠会每隔一个时间单位就消失一点水分&#xff0c;现在有一只甲虫从原点出发&#xff0c;甲虫的移动速度是一个单位时间移动一个单位的距离&#xff0c;甲虫没碰到…

GYM 101669F - Binary Transformations

GYM 101669F - Binary Transformations 做法&#xff1a;如果不存在一个位置p \((a[p]1,b[p]1)\)&#xff0c;那么答案就是贪心的先把所有的1&#xff0c;按价值从大到小变为0,所有的0,按价值从小到大变为1。如果存在一些位置p&#xff0c;我们就枚举一开始把多少p转成0,显然价…

2020牛客NOIP赛前集训营-提高组(第六场)A-袜子分配【组合数学,结论】

正题 题目链接:https://ac.nowcoder.com/acm/contest/7615/A?&headNavacm&headNavacm 题目大意 nnn对颜色一样的袜子&#xff0c;每次随机拿出两个&#xff0c;求拿完之后颜色一样的期望对数。 解题思路 考虑一对袜子的贡献&#xff0c;因为这一对要绑在一起所以贡献…

【线段树】FREQUENT - Frequent values(luogu-SP1684 / poj 3368)

FREQUENT - Frequent values luogu-SP1684 poj 3368 题目大意&#xff1a; 有一个单调不降序列&#xff0c;让你求出某些区间内的出现次数最多的数出现的次数&#xff08;有多组数据&#xff0c;以0结尾&#xff09; 输入样例 10 3 -1 -1 1 1 1 1 3 10 10 10 2 3 1 10 5 …

ASP.NET Core 2.0 MVC项目实战

一、前言毕业后入职现在的公司快有一个月了&#xff0c;公司主要的产品用的是C/S架构&#xff0c;再加上自己现在还在学习维护很老的delphi项目&#xff0c;还是有很多不情愿的。之前实习时主要是做.NET的B/S架构的项目&#xff0c;主要还是用的那种传统的开发模式&#xff0c;…

Codeforces1045I

Codeforces1045I 做法&#xff1a;如果至多有一种字母出现奇数次&#xff0c;则合法&#xff0c;因此把整个串用一个26位2进制数表示&#xff0c;对于每一个数&#xff0c;枚举可能的对应串的状态即可。 #include <bits/stdc.h> typedef long long ll; inline int read()…

[2020.10.30NOIP模拟赛]字符串水题【SA,树状数组】

正题 题目大意 一个字符串SSS。 若干个询问&#xff0c;每次询问一个串TTT和l,rl,rl,r。询问有多少个TTT和SSS的公共子串满足和为[l,r][l,r][l,r] 解题思路 考虑枚举子串左端&#xff0c;那么右串一定在一个范围内&#xff0c;考虑如何求出一个范围。 考虑用后缀数组解决这…