Codeforces Round #453 Div. 2 A B C D (暂时)
// 从大作业和实验报告中爬出来水一发
// 补题...还是得排在写完实验报告之后...
A. Visiting a Friend
题意
给定若干段行车区间,问能否从起点到终点
思路
扫描一遍,维护最远的终点
Code
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int x[110], y[110];
int main() {
int n, m;
scanf("%d%d", &n, &m);
int endd = 0;
for (int i = 0; i < n; ++i) {
scanf("%d%d", &x[i], &y[i]);
}
for (int i = 0; i < n; ++i) {
if (x[i] > endd) { puts("NO"); return 0; }
endd = max(endd, y[i]);
}
if (endd >= m) puts("YES");
else puts("NO");
return 0;
}
B. Coloring a Tree
题意
给定一棵树,起始时所有点的颜色为\(0\).
现对该树染色,规则为:对某个点染色,则会对以它为根的整棵子树染色。
给定最终各点的颜色,问至少染色了多少次。
思路
注意到,题目虽然是说对某个点染色会对其整棵子树产生影响,但事实上只需要考虑该点的直接子女即可。
对于点\(u\)的子女点\(v\),
如果\(c_u与c_v\)不同,则染色数+1;此时\(u\)对\(v\)的子树没有影响;
否则,染色数不变;并且可认为\(v\)代表\(u\)存在,即将\(u\)的影响延续了下去。
故只需要考虑每个点的直接子女即可。
直接\(bfs\)一遍。
Code
#include <bits/stdc++.h>
#define maxn 100010
using namespace std;
typedef long long LL;
struct Edge {
int to, ne;
}edge[maxn];
int c[maxn], p[maxn], n, tot, ne[maxn];
void add(int u, int v) {
edge[tot] = {v, ne[u]};
ne[u] = tot++;
}
int ans;
queue<int> q;
void bfs(int src) {
while (!q.empty()) q.pop();
q.push(src);
ans = 1;
while (!q.empty()) {
int u = q.front(); q.pop();
for (int i = ne[u]; ~i; i = edge[i].ne) {
int v = edge[i].to;
if (c[u] != c[v]) ++ans;
q.push(v);
}
}
}
int main() {
tot = 0; memset(ne, -1, sizeof ne);
scanf("%d", &n);
for (int i = 2; i <= n; ++i) {
scanf("%d", &p[i]);
add(p[i], i);
}
for (int i = 1; i <= n; ++i) scanf("%d", &c[i]);
bfs(1);
printf("%d\n", ans);
return 0;
}
C. Hashing Trees
题意
给定一棵树各个深度的节点个数,问在同构意义下该树是否唯一。
若不唯一,给出两种表示。
思路
唯一\(\longleftrightarrow\)不存在相邻的两层节点数都大于1,显然
构造:
- 将每一层的所有节点挂在上一层的第一个节点下
- 对于相邻两层节点都大于1的两层,将第下一层的最后一个节点挂在上一层的第二个节点下,其余都挂在第一个节点下。
#include <bits/stdc++.h>
#define maxn 200010
using namespace std;
int fa[maxn], fa2[maxn], a[maxn];
typedef long long LL;
int main() {
int h;
scanf("%d", &h);
for (int i = 0; i <= h; ++i) scanf("%d", &a[i]);
if (h == 1) { puts("perfect"); return 0; }
bool flag = true;
for (int i = 1; i < h; ++i) {
if (a[i]>=2 && a[i+1]>=2) {
flag = false;
break;
}
}
if (flag) { puts("perfect"); return 0; }
puts("ambiguous");
int tot = 0, f = 0;
fa[tot++] = f++;
for (int i = 1; i <= h; ++i) {
for (int j = 0; j < a[i]; ++j) fa[tot++] = f;
f += a[i-1];
}
int tot2 = 0; f = 0;
fa2[tot2++] = f++;
for (int i = 1; i <= h; ++i) {
if (a[i] > 1 && a[i-1] > 1) {
for (int j = 0; j < a[i]-1; ++j) fa2[tot2++] = f;
fa2[tot2++] = ++f;
f += a[i-1]-1;
}
else {
for (int j = 0; j < a[i]; ++j) fa2[tot2++] = f;
f += a[i-1];
}
}
printf("%d", fa[0]);
for (int i = 1; i < tot; ++i) printf(" %d", fa[i]); puts("");
printf("%d", fa2[0]);
for (int i = 1; i < tot2; ++i) printf(" %d", fa2[i]); puts("");
return 0;
}
D. GCD of Polynomials
题意
对于两个多项式\(A(x)=\sum_{i=1}^{n}a_ix^i\)与\(B(x)=\sum_{i=1}^{m}b_ix^i\),有$$A(x)=B(x)\cdot D(x)+R(x),\deg R(x)\lt \deg B(x)$$则记\(A(x)\mod B(x)=R(x)\).
根据欧几里得算法有$$GCD(A(x),B(x))=GCD(B(x),A(x)\mod B(x))$$经过若干次操作可以得到最终的\(GCD\)值。
现给出操作次数\(n\),要求构造出符合要求的\(A(x)\)与\(B(x)\),要求为每一项的系数绝对值小于等于\(1\),且最高项系数为\(1\).
思路
\(P_n(x)=P_{n-1}(x)*x\pm P_{n-2}(x)\)
注意:只要求最后结果的最高项为1,而对中间过程没有要求!
// 看到题解后昨晚\(P_n(x)=\pm P_{n-1}(x)*x+P_{n-2}(x)\)的我眼泪掉下来(并不
Code
#include <bits/stdc++.h>
#define maxn 1010
using namespace std;
typedef long long LL;
int a[maxn], b[maxn], temp[maxn];
int main() {
int n;
scanf("%d", &n);
a[0] = 1; b[0] = 0; b[1] = 1;
int l1 = 1, l2 = 2;
for (int i = 1; i < n; ++i) {
temp[0] = 0;
for (int j = 0; j < l2; ++j) temp[j+1] = b[j];
bool flag = true;
for (int j = 0; j < l1; ++j) {
temp[j] += a[j];
if (abs(temp[j]) > 1) { flag = false; break; }
}
if (!flag) {
temp[0] = 0;
for (int j = 0; j < l2; ++j) temp[j+1] = b[j];
for (int j = 0; j < l1; ++j) temp[j] -= a[j];
}
swap(a, b);
swap(b, temp);
++l1, ++l2;
}
printf("%d\n%d", l2-1, b[0]);
for (int i = 1; i < l2; ++i) printf(" %d", b[i]); puts("");
printf("%d\n%d", l1-1, a[0]);
for (int i = 1; i < l1; ++i) printf(" %d", a[i]); puts("");
return 0;
}
小总结
这次还是比较顺利的,分别在4min, 16min, 46min的时候过了A, B, C,并且做B题的时候直觉挺不错
当时看D才过了个位数就不怎么想做了,然后慢慢悠悠吃东西看题目看看板看看room...
后来觉得D可做写了一发然后发现不太对,便继续挂机准备睡觉了...实际上是完全可做的
这不行啊,终极目的还是提高啊
这样说的我却还不积极补题,噫吁嚱
Codeforces Round #453 Div. 2 A B C D (暂时)的更多相关文章
- Codeforces Round #453 (Div. 1)
Codeforces Round #453 (Div. 1) A. Hashing Trees 题目描述:给出一棵树的高度和每一层的节点数,问是否有两棵树都满足这个条件,若有,则输出这两棵树,否则输出 ...
- Codeforces Round #453 (Div. 1) 901C C. Bipartite Segments
题 http://codeforces.com/contest/901/problem/C codeforces 901C 解 首先因为图中没有偶数长度的环,所以: 1.图中的环长度全是奇数,也就是说 ...
- Codeforces Round #453 (Div. 1) D. Weighting a Tree(构造)
题意 一个 \(n\) 个点 \(m\) 条边的无向连通图中每个点都有一个权值,现在要求给每条边定一个权值,满足每个点的权值等于所有相连的边权之和,权值可负. 题解 如果图是一棵树,那么方案就是唯一的 ...
- 【做题】Codeforces Round #453 (Div. 1) D. Weighting a Tree——拆环
前言:结论题似乎是我的硬伤…… 题意是给你一个无向图,已知连接到每一个点的边的权值和(为整数,且属于区间[-n,n]),需要求出每条边权值的一个合法解(都要是在区间[-2*n^2,2*n^2]内的整数 ...
- Codeforces Round #453 ( Div. 2) Editorial ABCD
A. Visiting a Friend time limit per test 1 second memory limit per test 256 megabytes input standard ...
- 【Codeforces Round #453 (Div. 2) A】 Visiting a Friend
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 维护最右端的端点就好. [代码] #include <bits/stdc++.h> using namespace st ...
- 【Codeforces Round #453 (Div. 2) B】Coloring a Tree
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 从根节点开始. 显然它是什么颜色.就要改成对应的颜色.(如果上面已经有某个点传了值就不用改 然后往下传值. [代码] #includ ...
- 【Codeforces Round #453 (Div. 2) C】 Hashing Trees
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然只有当a[i]和a[i-1]都大于1的时候才会有不同的情况. a[i] >= a[i-1] 且a[i-1]>=2 则 ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
随机推荐
- 三十三、MySQL 导入数据
MySQL 导入数据 本章节我们为大家介绍几种简单的 MySQL 导出的数据的命令. 1.mysql 命令导入 使用 mysql 命令导入语法格式为: mysql -u用户名 -p密码 < 要导 ...
- nginx下配置Yii2 rewrite、pathinfo等
环境说明: 我试用的lnmp安装包安装的nginx,nginx版本是1.14.1 server { listen ; server_name www.baidu.com; #access_log /d ...
- 5.Cisco Packet Tracer里关于交换机或路由器配置文件和系统映像备份与恢复
我们会将交换机或路由器的配置文件和系统镜像直接备份到tftp服务器上,所以我们需要准备一台tftp的服务器 1我们需要给服务器配一个ip地址,给路由器的f0/1端口配置一个ip地址,路由器与服务器能相 ...
- ASP.NET Core模块化前后端分离快速开发框架介绍之2、快速创建一个业务模块
源码地址 GitHub:https://github.com/iamoldli/NetModular 演示地址 地址:https://nm.iamoldli.com 账户:admin 密码:admin ...
- CentOS7安装Nginx、MySQL、PHP
之前才网上找了好多文章,但是配置总会出错,后来傻傻的发现官方文档都有的,当然配合网上文章说明更好,因此本文只说一个大概 安装PHP 官方配置 配置用户和用户组,需要有根目录权限 vim /usr/lo ...
- Fiddler用AutoResponder实现app升级异步更新
先说一下我自己理解的异步更新:用app异步升级举例,app是否升级的检查是在启动app时访问服务器的,把app本地的最新版本号与服务器端的最新版本号做对比,假如不一致,则提示升级.但本次已经打开使用a ...
- Android 多线程 打地鼠游戏
前言:最近比较喜欢多线程了,看到了一些线程案例,这里总结一下打地鼠游戏的整个过程. 1.首先是主活动要加载的布局,我一般就喜欢早点把这个写上,这样就好在主活动中玩弄这些控件了.闲话不多说,一个Fram ...
- mac攻略(八) -- 神器zsh和iterm2的配置
1. 安装oh my zsh 安装命令: curl -L http://install.ohmyz.sh | sh 修改shell的方式: chsh -s /bin/zsh 2.安装cask( ...
- ios开发第一步--虚拟机安装MAC OS X
暂时还没买Macbook,先用虚拟机练练手. 先说说准备工作,我是在win8下安装的,这个不是关键的,只要Vmware版本和MAC OS X版本确定就行了,win7下同样可以. 1.虚拟机Vmware ...
- CSU-2019 Fleecing the Raffle
CSU-2019 Fleecing the Raffle Description A tremendously exciting raffle is being held, with some tre ...