Dasha and Puzzle

来源:互联网 发布:知其非所以沽名钓誉矣 编辑:程序博客网 时间:2024/06/05 08:46

Codeforces Round #394 (Div. 2)E

http://codeforces.com/contest/761/problem/E

当时比赛的时候只会F不会E……感觉这个E好神啊,问了好多人都不会……

然后q神说是分形,某福建神犇给出解法(顿时感觉解法怎么这么simple

首先有点度数大于4肯定不行,如果没有肯定可以

抓一个点出来放烟花,初始距离设大点,每次把距离/2再-1就没了

图的话……听说非常炫酷……大概就是分形的那个样子……

怎么这套题这么sb啊

其实代码很好写

AC code:

#include <cstdio>#include <vector>using namespace std;const int fx[4][2]={{0,1},{1,0},{0,-1},{-1,0}};vector<int> g[50];long long x[50],y[50];int in[50],n,i;void dfs(int now,int lst,int wtf,long long dis){int jj=0;for (int ii=0;ii<g[now].size();ii++) if (g[now][ii]!=lst){if (jj==wtf) jj++;x[g[now][ii]]=x[now]+dis*fx[jj][0];y[g[now][ii]]=y[now]+dis*fx[jj][1];dfs(g[now][ii],now,(jj+2)&3,dis/2-1);jj++;}}int main(){scanf("%d",&n);for (i=1;i<n;i++){int x,y;scanf("%d%d",&x,&y);g[x].push_back(y);g[y].push_back(x);in[x]++;in[y]++;}for (i=1;i<=n;i++) if (in[i]>4){puts("NO");return 0;}dfs(1,0,-1,1000000000000000LL);puts("YES");for (i=1;i<=n;i++) printf("%lld %lld\n",x[i],y[i]);return 0;}


1 0
原创粉丝点击