【BZOJ】【2435】【NOI2011】道路修建
DFS/DP
本来以为是一道傻逼题,然而跪了好久……一直RE……
直接dfs就好了……x->y val=c : ans+=abs(n-size[y]-size[y])*c;
然而为啥会一直RE呢?
后来改成dfs返回当前节点的size就过了……过了……
100W的节点难道linux下也会爆栈嘛= =?sad
/**************************************************************
Problem: 2435
User: Tunix
Language: C++
Result: Accepted
Time:5292 ms
Memory:73348 kb
****************************************************************/ //BZOJ 2435
#include<vector>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
inline int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>''){ if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<=''){ v=v*+ch-''; ch=getchar();}
return v*sign;
}
const int N=,INF=~0u>>;
typedef long long LL;
/******************tamplate*********************/ int to[N<<],nxt[N<<],head[N],cnt,l[N<<];
void add(int x,int y,int z){
to[++cnt]=y; nxt[cnt]=head[x]; head[x]=cnt; l[cnt]=z;
to[++cnt]=x; nxt[cnt]=head[y]; head[y]=cnt; l[cnt]=z;
}
int n,s[N];
LL ans; int dfs(int x,int fa){
s[x]=;
for(int i=head[x];i;i=nxt[i])
if (to[i]!=fa){
s[x]+=dfs(to[i],x);
ans+=(LL)abs(n-s[to[i]]*)*l[i];
}
return s[x];
}
int main(){
#ifndef ONLINE_JUDGE
freopen("2435.in","r",stdin);
freopen("2435.out","w",stdout);
#endif
n=getint();
F(i,,n){
int x=getint(),y=getint(),z=getint();
add(x,y,z);
}
dfs(,);
cout <<ans<<endl;
return ;
}
2435: [Noi2011]道路修建
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 2477 Solved: 753
[Submit][Status][Discuss]
Description
在 W 星球上有 n 个国家。为了各自国家的经济发展,他们决定在各个国家
之间建设双向道路使得国家之间连通。但是每个国家的国王都很吝啬,他们只愿
意修建恰好 n – 1条双向道路。 每条道路的修建都要付出一定的费用,
这个费用等于道路长度乘以道路两端的国家个数之差的绝对值。例如,在下图中,虚线所示道路两端分别有 2 个、4个国家,如果该道路长度为
1,则费用为1×|2 – 4|=2。图中圆圈里的数字表示国家的编号。
由于国家的数量十分庞大,道路的建造方案有很多种,同时每种方案的修建
费用难以用人工计算,国王们决定找人设计一个软件,对于给定的建造方案,计
算出所需要的费用。请你帮助国王们设计一个这样的软件。
Input
输入的第一行包含一个整数n,表示 W 星球上的国家的数量,国家从 1到n
编号。接下来 n – 1行描述道路建设情况,其中第 i 行包含三个整数ai、bi和ci,表
示第i 条双向道路修建在 ai与bi两个国家之间,长度为ci。
Output
输出一个整数,表示修建所有道路所需要的总费用。
Sample Input
1 2 1
1 3 1
1 4 2
6 3 1
5 2 1
Sample Output
HINT
n = 1,000,000 1≤ai, bi≤n
0 ≤ci≤ 10^6
Source
【BZOJ】【2435】【NOI2011】道路修建的更多相关文章
- bzoj 2435: [Noi2011]道路修建 树上 dp
2435: [Noi2011]道路修建 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...
- BZOJ 2435: [Noi2011]道路修建( dfs )
NOI的水题...直接一遍DFS即可 ------------------------------------------------------------------------- #includ ...
- BZOJ 2435: [Noi2011]道路修建 dfs搜图
2435: [Noi2011]道路修建 Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他 ...
- bzoj 2435: [Noi2011]道路修建
Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1条双向道 ...
- bzoj 2435: [Noi2011]道路修建【树形dp】
dp求size和deep,然后对每条边模拟求代价即可 #include<iostream> #include<cstdio> #include<algorithm> ...
- 2435: [Noi2011]道路修建
2435: [Noi2011]道路修建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2188 Solved: 639[Submit][Status ...
- 2435: [Noi2011]道路修建(树上操作)
2435: [Noi2011]道路修建 题目:传送门 题解: 建完边之后以1为根建树,统计深度和各个点的子树大小(包括自己) 询问的时候:答案=长度*abs(n-深度大的点的子树大小*2) ans+= ...
- 【BZOJ】2435: [Noi2011]道路修建(树形dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=2435 我怎么感觉那么水.. 坑的是,dfs会爆...好吧..用bfs.. //upd:我的智商也是醉 ...
- 2435: [Noi2011]道路修建 - BZOJ
Description 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿意修建恰好 n – 1条双向道路. ...
- BZOJ 2435 NOI2011 道路建设 BFS/DFS
标题效果:给定一个树(直接将树.不要贪图生成树图!).寻找每条边权值*分差的两侧之间 BFS水必须是能 竟DFS能够住...系统堆栈可能有些不够,我们可以使用内联汇编手册中大型系统堆栈 详见代码 这个 ...
随机推荐
- codeforces 354 D. Transferring Pyramid
D. Transferring Pyramid time limit per test 3 seconds memory limit per test 256 megabytes input stan ...
- JMeter导入jmx运行脚本时出现这样的错误jmeter.save.SaveService: Conversion error com.thoughtworks.xstream.converters.ConversionException:
2016/12/20 13:51:55 ERROR - jmeter.save.SaveService: Conversion error com.thoughtworks.xstream.conve ...
- Python入门3(赋值)
[一:*,-1的作用] 给大家两个例子: a,b,c,d='spam' print(a) print(b) print(c) print(d) a,*b='spam' print(a) print(b ...
- SQL注入备忘录
备忘录(一) 拿起小本本记下常考知识点. 常用连接词 and && %23%23 且 or || %7c%7c 或 xor 非 Access 数据库: 只能爆破表名.列名获取数据.无法 ...
- nova event
nova处理neutron发送过来的event事件.暂时追踪nova event部分代码 tail -f /var/log/nova/nova-api.log 下面就是一个事件 Creating ...
- Django快速创建博客,包含了整个框架使用过程,简单易懂
创建工程 ...
- 2018haoi总结
AM T1 写了40分,有50分的暴力分,只看到n=1能用费马小定理,没看到还有一个mod质数也能用费马小定理的10分. AM T2 写了10分,60分异或方程求自由元. AM T3 现在还没搞清楚题 ...
- Vue-router浅识
一.router-link及router-view :用来做导航,通过传入to属性来指定链接 :用来做路由出口,路由匹配到的组件都会渲染在这里 const router = new VueRouter ...
- Codeforces Round #283 (Div. 2) B. Secret Combination 暴力水题
B. Secret Combination time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- 读书笔记_Effective_C++_条款三十四:区分接口继承和实现继承
这个条款书上内容说的篇幅比较多,但其实思想并不复杂.只要能理解三句话即可,第一句话是:纯虚函数只继承接口:第二句话是:虚函数既继承接口,也提供了一份默认实现:第三句话是:普通函数既继承接口,也强制继承 ...