CF #394 5/6

Posted 掉血菜鸡煮熟中

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF #394 5/6相关的知识,希望对你有一定的参考价值。

Codeforces Round #394 (Div. 2)

总结:有毒的一场比赛。做了三题,结果A被叉,B、C挂综测,还hack失败一发,第一次在CF体会到了-50分的感觉。。不知道是不是人品好,比赛时room炸了,然后,unrated。。

A  水题,判一下0 0,然后abs(a-b)<=1

B  水题,组个间距比较一下,但一个数的时候要判一下

C  直接暴力上的题

D  也是xjb暴力

题意:给出n,l,r, a[], p[],另有两个数组b[], c[],ci=bi-ai。l<=ai,bi<=r,p[]数组存储c[]的大小顺序,c[]不会有相等的。求b[]。  题解:就是按p[]顺序排一下,每次确定出符合的ci, bi即可。如bi>r,则不可行。

  读懂题目,dfs搞一下就好了

题意:就是一棵树要你平铺在二维平面上,点不能重合,边不能交叉,而且边要与x轴或y轴平行。  题解如果有点的度大于4,那肯定不行。 边可以任意长,所以第一层的边取尽量大,后面每层取其一半。可以脑补出来,只有这样才能符合条件。另外方向要处理一下,不能和这个点上一层方向相同。

#include<bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:102400000,102400000")
#define F(i,a,b)  for (int i=a;i<b;i++)
#define FF(i,a,b) for (int i=a;i<=b;i++)
#define mes(a,b)  memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
typedef long long ll;
const int N = 50;

ll x[N], y[N];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int n;
vector<int >G[N];
void dfs(int fa, int u, int dir, ll len)
{
    if(fa==0) x[u]=y[u]=0;
    else x[u]=x[fa]+dx[dir]*len, y[u]=y[fa]+dy[dir]*len;
    int now=(dir+3)%4;
    for(int i=0; i<G[u].size(); i++) {
        int v=G[u][i];
        if(v!=fa) {
            dfs(u, v, now, len>>1);
            now=(now+1)%4;
        }

    }
}
int main()
{
    scanf("%d", &n);
    int u, v;
    FF(i,1,n-1) {
        scanf("%d%d", &u, &v);
        G[u].push_back(v);
        G[v].push_back(u);
    }
    FF(i,1,n) if(G[i].size()>4) { puts("NO"); return 0; }
    dfs(0, 1, 0, 1LL<<50);
    puts("YES");
    FF(i,1,n) printf("%lld %lld\\n", x[i], y[i]);

    return 0;
}
E

 

以上是关于CF #394 5/6的主要内容,如果未能解决你的问题,请参考以下文章

(Incomplete) Codeforces 394 (Div 2 only)

在一个无序整数数组中,找出连续增长片段最长的一段, 增长步长是1。Example: [3,2,4,5,6,1,9], 最长的是[4,5,6]

关于安排

如何从后台弹出片段

JavaScript 片段

leetcode 394 解码