Building Forest CodeForces - 195E
Building Forest CodeForces - 195E
这题意真是难懂啊...话说"An oriented weighted forest is an acyclic weighted digraph in which from each vertex at most one edge goes."这句话到底什么意思...
题意:有n个点要按照1-n的顺序依次插入一个带边权的森林(森林一开始没有任何点、边),第i+1行描述第i个点插入后的操作。如果某一行为(k, v1, x1, v2, x2, ... , vk, xk),那么k表示要连的边的数量,(vj,xj)表示要从第vj个点连一条边到i,其权值为vj到其原来所在树的根节点的路径总长加上xj。(保证数据不产生重边)
做法:看懂了题,就会发现这是一个非常正常(shui)的加权并查集。
#include<cstdio>
#define md 1000000007
typedef long long LL;
LL fa[];
LL hei[];//记录点i到父亲节点的路径总长
LL ans,n;
LL find(LL x)
{
if(fa[x]==x) return x;
LL t=find(fa[x]);
hei[x]=(hei[fa[x]]+hei[x])%md;
fa[x]=t;
return fa[x];
}
int main()
{
LL i,j,k,v,x,f1;
scanf("%I64d",&n);
for(i=;i<=n;i++)
fa[i]=i;
for(i=;i<=n;i++)
{
scanf("%I64d",&k);
for(j=;j<=k;j++)
{
scanf("%I64d%I64d",&v,&x);
f1=find(v);
//if(f1==i) continue;
fa[f1]=i;
hei[f1]=(x+hei[v])%md;
ans=(ans+hei[f1])%md;
}
}
printf("%I64d",(ans+md)%md);
return ;
}
曾经犯过的错:
1.答案未取模,输出了负数(写了两次,错了两次)
2.误区:12行
#include<cstdio>
#define md 1000000007
typedef long long LL;
LL fa[];
LL hei2[];//记录点i连向其父亲节点的边的权值
LL hei[];//记录点i到父亲节点的路径总长
LL ans,n;
LL find(LL x)
{
if(fa[x]==x) return x;
LL t=find(fa[x]);
hei[x]=(hei[fa[x]]+hei2[x])%md;
fa[x]=t;
return fa[x];
}
int main()
{
LL i,j,k,v,x,f1;
scanf("%I64d",&n);
for(i=;i<=n;i++)
fa[i]=i;
for(i=;i<=n;i++)
{
scanf("%I64d",&k);
for(j=;j<=k;j++)
{
scanf("%I64d%I64d",&v,&x);
f1=find(v);
if(f1==i) continue;
fa[f1]=i;
hei2[f1]=(x+hei[v])%md;
}
}
for(i=;i<=n;i++)
ans=(ans+hei2[i]+md)%md;
printf("%I64d",ans);
return ;
}
Building Forest CodeForces - 195E的更多相关文章
- Codeforces Round #123 (Div. 2)
A. Let's Watch Football 记时间为\(t\), 则\(bt+(b-a)c>=0\),可得\[t \ge \frac{c(a-b)}{b}\] B. After Traini ...
- codeforces285C
Building Permutation CodeForces - 285C Permutation p is an ordered set of integers p1, p2, ..., p ...
- 多校联训 DS 专题
CF1039D You Are Given a Tree 容易发现,当 \(k\) 不断增大时,答案不断减小,且 \(k\) 的答案不超过 \(\lfloor\frac {n}{k}\rfloor\) ...
- Codeforces Round #192 (Div. 1) B. Biridian Forest 暴力bfs
B. Biridian Forest Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/329/pr ...
- [Codeforces Round #192 (Div. 2)] D. Biridian Forest
D. Biridian Forest time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 图论/位运算 Codeforces Round #285 (Div. 2) C. Misha and Forest
题目传送门 /* 题意:给出无向无环图,每一个点的度数和相邻点的异或和(a^b^c^....) 图论/位运算:其实这题很简单.类似拓扑排序,先把度数为1的先入对,每一次少一个度数 关键在于更新异或和, ...
- 水题 Codeforces Round #285 (Div. 2) C. Misha and Forest
题目传送门 /* 题意:给出无向无环图,每一个点的度数和相邻点的异或和(a^b^c^....) 图论/位运算:其实这题很简单.类似拓扑排序,先把度数为1的先入对,每一次少一个度数 关键在于更新异或和, ...
- 【codeforces 755C】PolandBall and Forest
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- codeforces 501C. Misha and Forest 解题报告
题目链接:http://codeforces.com/problemset/problem/501/C 题目意思:有 n 个点,编号为 0 - n-1.给出 n 个点的度数(即有多少个点跟它有边相连) ...
随机推荐
- Seesion和Cookie详解2
转载来自: https://www.toutiao.com/a6693986851193094664/?tt_from=weixin&utm_campaign=client_share& ...
- 十天学习PHP之第二天
学习目的:学会构建数据库 在ASP中,假设是ACCESS数据库你能够直接打开ACCESS来编辑MDB文件,假设是SQL SERVER你能够打开企业管理器来编辑SQL SERVER数据库.可是在PHP ...
- forEach、for-in与for-of的区别
forEach.for-in与for-of的区别 forEach介绍 objArr.forEach(function (value) { console.log(value); }); foreach ...
- JS是否确认提示 +页面跳转
JS友好提示 +页面跳转 function logout()...{if (confirm("你确定要注销身份吗?是-选择确定,否-选择取消"))...{window.locati ...
- IDHTTP用法详解 good
一.IDHTTP的基本用法 IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快.更节约资源,缺点是需要手动维护cook,连接等 IDHttp的创建,需要引入ID ...
- 基于MATLAB的滤波算法
目前比较经典的图像去噪算法主要有以下三种: 均值滤波:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度 的平均值来代替每个像素的灰度.有效抑制加性噪声,但容易引起图像模糊, 可以对其进行改进, ...
- ES6 一些新特性的总结
一.箭头函数 ES6中新增了一个箭头函数 ()=>,箭头函数通俗点讲就是匿名函数.箭头函数还有不同点在于改变函数中this,和js中的.bind 的方法差不多,继承后指向的不是最新的函数, ...
- java 简单贪吃蛇
1. [代码]java 简单程序 跳至 [1] [全屏预览]package com.snake;import java.awt.*;import javax.swing.*;import ja ...
- 原:maven+springMVC+mybatis+junit详细搭建过程
阅读目录 1. 工程目录结构整理清楚 2. 引入依赖包 3. 配置数据库连接属性 4. 配置spring配置文件 5. java代码编写(model,dao,service层代码) 6. m ...
- 非旋treap (BZOJ1895)
记个板子,还是挺好用的. #include <bits/stdc++.h> using namespace std; ]; int rt,n,m,l,r,x,A,B,C,t; struct ...