首页 > 代码库 > CF #394 (2) 5/6
CF #394 (2) 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,则不可行。
E 读懂题目,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 0x3f3f3f3ftypedef 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;}
CF #394 (2) 5/6
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。