【codeforces 761E】Dasha and Puzzle
【题目链接】:http://codeforces.com/contest/761/problem/E
【题意】
给你一棵树,让你在平面上选定n个坐标;
使得这棵树的连接关系以二维坐标的形式展现出来;
【题解】
dfs来搞;
显然如果某个点的度数大于4就无解。
初始坐标为(0,0)然后每一层的边的长度变为上一层长度的1/2
初始层的长度为2 30
这样可以保证每层节点都不会和上一层的相交;
因为2 i >2 1 +2 2 +...+2 i−1
又因为最多只有30个节点,所以这么做肯定是可以的,且不会超过题目的限制10 18
写dfs的时候,控制一下行走的方向就好;
不要走回头路。。
然后第一个点是4个方向都可以走的。不要写错了。
【Number Of WA】
2
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define ps push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%lld",&x)
#define ref(x) scanf("%lf",&x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,0,-1,0,-1,-1,1,1};
const int dy[9] = {0,0,-1,0,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 30+5;
struct point{
LL x,y;
};
int n,du[N];
vector <int> G[N];
point ans[N];
void dfs(int v,int fa,LL x0,LL y0,LL len,int fx)
{
ans[v].x = x0,ans[v].y = y0;
int l = G[v].size();
int now = 0;
rep1(i,0,l-1)
{
if (G[v][i]==fa) continue;
now++;
int tnow = now+2;
if (tnow>4) tnow-=4;
if (tnow==fx) now++;
LL x1 = x0+1LL*dx[now]*len;LL y1 = y0+1LL*dy[now]*len;
dfs(G[v][i],v,x1,y1,len>>1,now);
}
}
int main()
{
//freopen("D:\\rush.txt","r",stdin);
rei(n);
rep1(i,1,n-1)
{
int x,y;
rei(x),rei(y);
du[x]++,du[y]++;
G[x].ps(y),G[y].ps(x);
}
rep1(i,1,n)
if (du[i]>4) return puts("NO"),0;
puts("YES");
dfs(1,0,0,0,1<<30,0);
rep1(i,1,n)
cout << ans[i].x<<' '<<ans[i].y<<endl;
//printf("\n%.2lf sec \n", (double)clock() / CLOCKS_PER_SEC);
return 0;
}
【codeforces 761E】Dasha and Puzzle的更多相关文章
- 【codeforces 761A】Dasha and Stairs
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【codeforces 761B】Dasha and friends
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【codeforces 761C】Dasha and Password(动态规划做法)
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【codeforces 761C】Dasha and Password(贪心+枚举做法)
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【codeforces 761D】Dasha and Very Difficult Problem
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
- 【66.47%】【codeforces 556B】Case of Fake Numbers
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【codeforces 707E】Garlands
[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...
- 【codeforces 707C】Pythagorean Triples
[题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...
随机推荐
- CSS里面position:relative与position:absolute 区别
position:absolute这个是绝对定位:是相对于浏览器的定位.比如:position:absolute:left:20px;top:80px; 这个容器始终位于距离浏览器左20px,距离浏览 ...
- 用回调函数创建一个XMLHttpRequest,并从一个TXT文件中检索数据。
<script> var xmlhttp; function loadXMLDoc(url,soyo) { if (window.XMLHttpRequest) {// IE7+, Fir ...
- 入门activiti-------1简单运行
1.下载原料 2.放置位置 3.运行 4.成功页面和测试数据
- Magnetic Storms
http://acm.timus.ru/problem.aspx?space=1&num=1126 简单的线段树求区间最值 #include <stdio.h> #include ...
- Euclid(几何)
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2831 题意:已知A,B,C,D,E,F的坐标, ...
- php字符串读取函数
function cc_msubstr($str, $length, $start=0, $charset="utf-8", $suffix=true){ if(function_ ...
- 关于 node.js的request事件
下面展示的是一个ajax一部提交的服务器端处理过程.node创建一个web服务器,并侦听8080端口.对于服务器,我们为其绑定了request事件,对于请求对象,我们为它绑定了data和end事件: ...
- P2068 统计和
P2068 统计和 这题真的非常水了 如果不会 右转[模板]树状数组 2 基本上是一模一样的 #include <bits/stdc++.h> #define lowbit(x) x&am ...
- Spring Cloud (14) 服务网关-过滤器
Spring Cloud Zuul作为网关所具备的最基本的功能:路由,还具备另外一个核心的功能:过滤器. 过滤器 通过Spring Cloud Zuul实现的路由功能,我们的微服务可以通过统一的API ...
- Android 串口驱动和应用测试
这篇博客主要是通过一个简单的例子来了解Android的串口驱动和应用,为方便后续对Android串口服务和USB虚拟串口服务的了解.这个例子中,参考了<Linux Device Drivers& ...