题意:给你一棵边权都为1的树,要求选择互不相交的若干条路径,这些路径包含有所有点。

在每一条路径上选择一条边,放置一个动点,设置一个方向,它开始在该路径上来回运动,速度为1。每个点上都有一个停表,当有一个动点经过这个点时它清零。设res_i表示i停表的历史最大显示时间。设得res_1,res_2,res_3,……序列的字典序最小。

n<=100。(数据范围有时候是唬人的)

标程:

 #include<bits/stdc++.h>
using namespace std;
const int N=;
int n,u[N],v[N],head[N],rd[N],cnt,To[N];
double ans[N];
struct node{int to,next;}num[N*];
void add(int x,int y)
{num[++cnt].to=y;num[cnt].next=head[x];head[x]=cnt;}
void dfs(int x,int fa,double lst)
{
double e=2.0/rd[x];//注意用2.0/而不是2/!
for (int i=head[x];i;i=num[i].next)
if (num[i].to!=fa)
{
lst+=e;while (lst>) lst-=;
int id=(i+)/;
if (lst<=) To[id]=x,ans[id]=lst;
else To[id]=num[i].to,ans[id]=lst-;
dfs(num[i].to,x,lst+);
}
}
int main()
{
scanf("%d",&n);
for (int i=;i<n;i++) scanf("%d%d",&u[i],&v[i]),add(u[i],v[i]),add(v[i],u[i]),rd[u[i]]++,rd[v[i]]++;
dfs(,-,);
printf("%d\n",n-);
for (int i=;i<n;i++) printf("1 %d %d %d %.8lf\n",i,u[i]+v[i]-To[i],To[i],ans[i]);
return ;
}

易错点:1.注意double的除法。

2.注意lst表示到动点到儿子的距离。往下一层dfs的时候注意变更。

题解:贪心+构造

发现当每一条边都独立为一条路径时,经过路径上每一个点的时间间隔是最小的。

因此发现某动点一来一回时间间隔为2,对于i点的停表,历史最大时间为2/deg[i]。一定可以构造出来。

dfs按照树的结构构造一下即可。

CF822F Madness的更多相关文章

  1. Javascript Madness: Mouse Events

    http://unixpapa.com/js/mouse.html Javascript Madness: Mouse Events Jan WolterAug 12, 2011 Note: I ha ...

  2. 【BZOJ3958】[WF2011]Mummy Madness 二分+扫描线+线段树

    [BZOJ3958][WF2011]Mummy Madness Description 在2011年ACM-ICPC World Finals上的一次游览中,你碰到了一个埃及古墓. 不幸的是,你打开了 ...

  3. 【BZOJ 3958】 3958: [WF2011]Mummy Madness (二分+扫描线、线段树)

    3958: [WF2011]Mummy Madness Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 96  Solved: 41 Descripti ...

  4. JavaScript Madness: Dynamic Script Loading

    Introduction I've developed some pretty seriously Javascript intensive sites, where the sheer quanti ...

  5. BZOJ4065 : [Cerc2012]Graphic Madness

    因为两棵树中间只有k条边,所以这些边一定要用到. 对于每棵树分别考虑: 如果一个点往下连着两个点,那么这个点往上的那条边一定不能用到. 如果一个点往下连着一个点,那么这个点往上的那条边一定不能用到. ...

  6. BZOJ 3958 Mummy Madness

    Problem BZOJ Solution 算法:二分+扫描线 快要2019年了,就瞎写一篇博客来凑数,不然感觉太荒凉了-- 答案是可二分的,那么二分的依据是什么呢?不妨设当前二分的答案为\(mid\ ...

  7. Codeforces 1464F - My Beautiful Madness(树的直径)

    Codeforces 题面传送门 & 洛谷题面传送门 树上数据结构大杂烩(?) 首先考虑什么样的点能够在所有路径的 \(d\) 邻居的交集内.显然如果一个点在一条路径的 \(d\) 邻居内则必 ...

  8. openswan-ipsec.conf配置说明

    Name ipsec.conf - IPsec configuration and connections Description The optional ipsec.conf file speci ...

  9. Canvas实例

    <!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...

随机推荐

  1. 《深入理解Java虚拟机》- 重载与重写

    这一节打算从“方法调用”的主题进行分析. 方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不设计方法内部的具体运行过程. 一.概念 解析调用:所有 ...

  2. 天道神诀--samba和NFS部署

    samba yum -y install samba samba-client rpm -qa |grep samba service smb start(445端口) service nmb sta ...

  3. what have we learnt in day five

    what is file? virtual unit offered by operation system steps to open file 1.find the file_path(file_ ...

  4. <python基础>python继承机制

    子类在调用某个方法或变量的时候,首先在自己内部查找,如果没有找到,则开始根据继承机制在父类里查找. 根据父类定义中的顺序,以深度优先的方式逐一查找父类! class D: def show(self) ...

  5. Xn数列

     题目描述 Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输 ...

  6. C++与JAVA语言区别

            转载自:http://www.cnblogs.com/cnryb/archive/2011/01/04/2004141.html "作为一名C++程序员,我们早已掌握了面向对 ...

  7. java中Class.getMethods()和Class.getDeclaredMethods()的区别

    在java中,可以根据Class类的对象,知道某个类(接口)的一些属性(成员 ,方法,注释,注解)等.由于最近的工作中用到了这些,其中需要在代码中格局反射知道某些类的方法,查看文档的时候,看到了get ...

  8. 用python 编写redis 暴力破解密码的程序

    本文摘自http://blog.knownsec.com/2015/11/analysis-of-redis-unauthorized-of-expolit/ import redisimport l ...

  9. python 客户端 httplib 、 requests分别post数据(soap)

    httplib import httplib soapbody =''' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap ...

  10. leetcode-159周赛-5232-替换子串得到平衡字符串*

    题目描述: 方法: 另: class Solution: def balancedString(self, s: str) -> int: n, req = len(s), len(s) // ...