Codeforces Round #384 (Div. 2) 解题报告
这场CF水题都非常的水,D题如果对树、DFS相关比较熟练的话也不难。比赛时前三题很快就过了,可是因为毕竟经验还是太少,D题就卡住了。比赛之后A题还因为没理解对题意fst了……(为什么这次就没人来hack我orz)。唉,本来发挥好一些这次上蓝名是很有可能的,只能等待下一次了。Z神这次顺利AK,差距还是太大,虽然有初学为理由,但这个烤漆之后就会到来的假期还是要好好加油了,要学要练的东西实在是太多了。
A题:
如果起点和终点是一家航空公司,那么显然0元就可到达。如果不是,0和1一定有一个分界处,先做起点的航空公司到分界处,再转1次不同航空公司的飞机,花去1元,之后再免费到终点即可。(理解错题意真是致命啊,以后再也不那么着急了……)
参考代码:
#include<stdio.h>
#include<bits/stdc++.h>
#include <iostream>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int n,st,en;
char a[];
int main()
{
scanf("%d%d%d",&n,&st,&en);
scanf("%s",a+);
if(a[st]==a[en])
printf("0\n");
else
{
printf("1\n");
}
return ;
}
B题
第i个数是多少,就是i的质因数分解中2的幂次是多少。当然也可以递归做。(CF当天晚上C++上机考的就是位运算orz)
#include<stdio.h>
#include<bits/stdc++.h>
#include <iostream>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int main()
{
ll n,x;
scanf("%I64d %I64d",&n,&x);
ll an=;
while(!(x&))
{
x>>=;
an++;
}
printf("%I64d\n",an);
return ;
}
C题
这熟悉的数竞感觉……一看就知道一定是一个构造。2/n=1/n+1/(n+1)+1/n*(n+1)即可,(赛后看同学的代码,发现还真有暴力过的,给跪)。需要注意的是n=1时没有符合题意的解。
#include<stdio.h>
#include<bits/stdc++.h>
#include <iostream>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int main()
{
ll n;
scanf("%I64d",&n);
if(n==)
{
printf("-1\n");
return ;
}
printf("%I64d %I64d %I64d\n",n,n+,n*(n+));
return ;
}
D题(重要!需要回顾)
因为从来没做过类似的树的问题,看到这道题时又有一种两个月前刚参加CF比赛时没见过pair的绝望。知道大概要怎样,可是因为对相关套路的不熟悉连给出的每一组树的节点怎样区分父节点和子节点都不知道……
建立vector后缀数组存储每个可能的父子结点关系。dfs遍历,确定整个树的父子关系,并且后序遍历,每次子树返回的时候就更新当前节点最大值,要输出的答案也在每个过程中进行更新。
#include<stdio.h>
#include<bits/stdc++.h>
#include <iostream>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int shu=2e5+;
const ll chu=2e9+;
int n,st[shu];
ll an=chu;
ll da[shu];
vector <int> re[shu];
ll dfs(int i,int fa)
{
priority_queue<ll> que;
int j;
ll hui=;
for(j=;j<re[i].size();j++)
{
int temp=re[i][j];
if(temp==fa)
continue;
ll a=dfs(temp,i);
da[i]=max(da[temp],da[i]);
que.push(da[temp]);
hui+=a;
}
hui+=st[i];
da[i]=max(da[i],hui);
if(que.size()>=)
{
ll oh=;
oh+=que.top();
que.pop();
oh+=que.top();
que.pop();
an=max(oh,an);
}
return hui;
}
int main()
{
scanf("%d",&n);
int i,tem,tarr;
for(i=;i<=n;i++)
{
scanf("%d",&st[i]);
da[i]=-chu;
}
for(i=;i<n-;i++)
{
scanf("%d %d",&tem,&tarr);
re[tem].push_back(tarr);
re[tarr].push_back(tem);
}
an=-chu;
dfs(,);
if(an==-chu)
printf("Impossible\n");
else
printf("%I64d\n",an);
return ;
}
最近校赛还是烤漆,E题就先不补了。
Codeforces Round #384 (Div. 2) 解题报告的更多相关文章
- Codeforces Round #324 (Div. 2)解题报告
---恢复内容开始--- Codeforces Round #324 (Div. 2) Problem A 题目大意:给二个数n.t,求一个n位数能够被t整除,存在多组解时输出任意一组,不存在时输出“ ...
- Codeforces Round #382 (Div. 2) 解题报告
CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...
- Codeforces Round #380 (Div. 2) 解题报告
第一次全程参加的CF比赛(虽然过了D题之后就开始干别的去了),人生第一次codeforces上分--(或许之前的比赛如果都参加全程也不会那么惨吧),终于回到了specialist的行列,感动~.虽然最 ...
- Codeforces Round #216 (Div. 2)解题报告
又范低级错误! 只做了两题!一道还被HACK了,囧! A:看了很久!应该是到语文题: 代码:#include<iostream> #include<]; ,m2=; ;i ...
- Codeforces Round #281 (Div. 2) 解题报告
题目地址:http://codeforces.com/contest/493 A题 写完后就交了,然后WA了,又读了一遍题,没找出错误后就开始搞B题了,后来回头重做的时候才发现,球员被红牌罚下场后还可 ...
- Codeforces Round #277 (Div. 2) 解题报告
题目地址:http://codeforces.com/contest/486 A题.Calculating Function 奇偶性判断,简单推导公式. #include<cstdio> ...
- Codeforces Round #276 (Div. 2) 解题报告
题目地址:http://codeforces.com/contest/485 A题.Factory 模拟.判断是否出现循环,如果出现,肯定不可能. 代码: #include<cstdio> ...
- Codeforces Round #350 (Div. 2)解题报告
codeforces 670A. Holidays 题目链接: http://codeforces.com/contest/670/problem/A 题意: A. Holidays On the p ...
- Codeforces Round #479 (Div. 3)解题报告
题目链接: http://codeforces.com/contest/977 A. Wrong Subtraction 题意 给定一个数x,求n次操作输出.操作规则:10的倍数则除10,否则减1 直 ...
随机推荐
- 深入了解try catch
@Test public void testWeiXin(){ System.out.println(task()); } private boolean task(){ try { int i = ...
- MySQL5.0+提示字段没有默认值(doesn’t have a default value)的解决方法
方法一: 打开my.ini,查找 sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION” 修改为 sql ...
- 公共交通3D指纹验证系统解决方案
为了响应国家关于老年人的优待政策,华本研发了退休老人乘公交车指纹认证系统.指纹认证系统不仅方便老人乘坐公交,还能为公共部门减压,杜绝伪造优待证乘坐公交的不法行为. 目前,优待证都是人工检查,缺乏有效的 ...
- fzu1036四塔问题(汉诺塔问题拓展)
#include<iostream> #include<cstdio> #include<cmath> using namespace std; ]; int ru ...
- centos6.5 安装linux 环境
准备工作 安装make yum -y install gcc automake autoconf libtool make 安装g++ yum install gcc gcc-c++下面正式开始--- ...
- java学习笔记----枚举测试题
定义义一个交通灯枚举类,包含红灯.绿灯.黄灯,需要有获得下一个灯的方法,并实现红灯出现5秒之后变成绿灯,绿灯3秒之后变成黄灯,黄灯2秒之后变成红灯,如此循环 public class Test5 { ...
- 关于json-p
关于json-p 目录 关于json-p json-p是什么 json-p原理分析 json-p的缺点 json-p是什么 json-p实际上是一种跨域ajax发送http请求的方法,它不是什么全新的 ...
- Rdlc报表 数据汇总分组展示
1.从工具箱拉出表或者矩阵(本次使用的是矩阵) 2.选择需要的数据集,没有就新建一个数据集,名称自己起好,下面有用到 3.将行组和行列显示出来(右击报表--试图=>) 4.双击行组下的RowGr ...
- C# 实现HTML转换成图片的方法
/// <summary> /// 通过WebBrowser控件来实现从HTML到Bmp图片的生成. /// </summary> / ...
- typedef与#define的区别
1. typedef typedef故名思意就是类型定义的意思,但是它并不是定义一个新的类型而是给已有的类型起一个别名,在这一点上与引用的含义类似,引用是变量或对象的别名,而typedef定义的是类 ...