传送门

文章目录

  • 题意:
  • 思路:

题意:

给你一颗nnn个点的树,让你在二维平面中构造一颗树,保证相邻点的距离正好为111,并且线段不能有相交,坐标绝对值≤3e3\le3e3≤3e3。

n≤1e3n\le1e3n≤1e3

思路:

其实样例已经给了提示了,当时光听队友说了句是菊花图,也就没多看,其实要是把第一个样例怎么来的搞明白我感觉这个题就有了。

不按照题解的想法,我们考虑以(0,0)(0,0)(0,0)为原点,让后将第一、二象限分成n−1n-1n−1条直线,我们只需要在dfsdfsdfs的过程中依次从小到大选择相应斜率的直线即可,这样保证了线不相交,考虑怎么保证距离为111呢?根据初中知识可知,sin⁡2a+cos⁡2b=1\sin^2 a+\cos^2 b=1sin2a+cos2b=1,所以对于uuu的下一个点vvv,对应的(x,y)(x,y)(x,y)应该是(xu+cos⁡(ang),yu+sin⁡(ang))(x_u+\cos(ang),y_u+\sin(ang))(xu​+cos(ang),yu​+sin(ang)),其中angangang是对应的角度。

所以这个题就完事啦。

// Problem: C - Circuit Board Design
// Contest: Virtual Judge - Namomo Summer Camp Day 4
// URL: https://vjudge.net/contest/455214#problem/C
// Memory Limit: 262 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#include<random>
#include<cassert>
#define pb push_back
using namespace std;typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6,PI=acos(-1);int n;
vector<int>v[N];
double x[N],y[N];
int cnt;void dfs(int u,int fa) {for(auto xx:v[u]) {if(xx==fa) continue;double reg=cnt/(n-1.0)*PI;x[xx]=x[u]+cos(reg);y[xx]=y[u]+sin(reg);cnt++;dfs(xx,u);}
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);scanf("%d",&n);for(int i=1;i<=n-1;i++) {int a,b; scanf("%d%d",&a,&b);v[a].pb(b); v[b].pb(a);}dfs(1,0);for(int i=1;i<=n;i++) printf("%.10lf %.10lf\n",x[i],y[i]);return 0;
}
/**/

NWERC 2018 C. Circuit Board Design 树 + 构造相关推荐

  1. 2018-2019 ICPC Northwestern European Regional Programming Contest (NWERC 2018)

    2018-2019 ICPC Northwestern European Regional Programming Contest (NWERC 2018) 题号 题目 知识点 难度 A Access ...

  2. 2018-2019 ICPC Northwestern European Regional Programming Contest (NWERC 2018)记录

    A. Access Points 待更 B. Brexit Negotiations 题意:给一个 DAG,最小化[每个点点权与其在拓扑序内的编号之和的最大值],输出这个最小值. 解法:反向建图,然后 ...

  3. 统计学习方法第三章作业:一般k邻近、平衡kd树构造、kd树邻近搜索算法代码实现

    一般k邻近 import numpy as np import matplotlib.pyplot as pltclass K_near:def __init__(self,X,Y,K=5,p=2): ...

  4. pat根据中序遍历和先序遍历_[leetcode/lintcode 题解] 前序遍历和中序遍历树构造二叉树...

    [题目描述] 根据前序遍历和中序遍历树构造二叉树. 在线评测地址: 九章算法 - 帮助更多中国人找到好工作,硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧​www.jiuzhang.com [样例 ...

  5. LintCode-73.前序遍历和中序遍历树构造二叉树

    前序遍历和中序遍历树构造二叉树 根据前序遍历和中序遍历树构造二叉树. 注意事项 你可以假设树中不存在相同数值的节点 样例 给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 ...

  6. 72 中序遍历和后序遍历树构造二叉树

    原题网址:https://www.lintcode.com/problem/construct-binary-tree-from-inorder-and-postorder-traversal/des ...

  7. 哈夫曼树构造以及代码实现

    哈夫曼树构造以及代码实现 什么是哈夫曼树 理解哈夫曼树 哈夫曼树的构造 哈夫曼树构造-代码实现 什么是哈夫曼树 构造一颗二叉树,该树的带权路径长度达到最小,称为最优二叉树,也称为哈夫曼树(Huffma ...

  8. 哈夫曼树构造哈夫曼编码

    在传输文字时,经常要将文字转换成二进制字符串.所以我们希望编码最短,但是又想保证它的唯一性.哈夫曼树具有最小带权路径长度,用来实现编码就可以编码最短,所以用哈夫曼树来构造编码.而前缀编码就可以保证在解 ...

  9. C语言:哈夫曼树构造及编码(核心代码每一行都有注释)

    一.[实验目的及要求] 理解Huffman树的概念及其存储结构: 熟悉Huffman树的构造: 掌握Huffman树的编码方法. 二.[实验内容] 1.代码实现Huffman编码 2.请统计每个字符出 ...

最新文章

  1. 杨元庆:兔子要变成狼靠的是体制的激励
  2. java-Random类
  3. 《图解CSS3:核心技术与案例实战》
  4. yang模型中rpc_领域驱动模型(DDD)设计讲解
  5. python 描述性分析_描述性分析-1对被解释变量进行描述
  6. html左右分隔可调整,CSS实现可拖拽分割面板
  7. C++ 实现简易 log 日志系统
  8. 2.抽象工厂(Abstract Factory)
  9. 暴增14倍!这家港股最大基金公司,1年净利20亿,竟是因为这个!
  10. 有哪些值得推荐的 Java 练手项目?
  11. PreparedStatement 防止 SQL 注入原理
  12. File和IO流应用,剪切文件夹
  13. 阿里巴巴-飞猪 电话面试
  14. 计算机组成原理常见英文缩写
  15. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
  16. vue中watch的详解
  17. AcWing Round #14
  18. 获取IP地址信息的API合集
  19. 在线配色网,方便实用!
  20. 查询电话号码归属地的PHP接口(处理过可供前端使用的)

热门文章

  1. 电脑配置java编译报错_java 编译错误
  2. mysql enum_MySQL数据库中关于ENUM类型的详细解释
  3. rowspan 动态变化_使用colspan和rowspan动态删除html表中的多个列
  4. mysql in优化_MySQL 探秘: 1 整体架构
  5. 华为二面!!!被问常用API,这也太偏门了吧,我秀了一波hhhh~
  6. linux安装toncat环境变量,linux下JDK,tomcat的安装与环境变量配置
  7. kswapd0 挖矿_bioset linux_linux bioset 进程 腾讯云
  8. mysql安装目录centos_CentOS mysql安装系统方法
  9. python中可以表示任意大的整数_Python无法表示99999999999999999999这样大的整数。
  10. 360 屏蔽ajax,怎么在easy ui做全局Ajax拦截啊?