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 直 ...
随机推荐
- vnc连接kali 2.0 报错:A problem has occurred and the system can't recover.
kali版本: root@kali:~# uname -a Linux kali -kali1-amd64 # SMP Debian -7kali2 (--) x86_64 GNU/Linux 第一步 ...
- BW系统之间的InfoProvider数据传输:Export DataSource
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 修复docker pull image failed
修复docker pull image failed docker pull报错 message":"Get https://n6-026-137.byted.org/v1/_pi ...
- CSS 制作三角形原理剖析
使用css制作三角形其实原理很简单,下面一步步解析. 1.html代码如下 <div class="triangle"> </div> 2.CSS代码 .t ...
- angularjs指令系统系列课程(3):替换replace,内容保留transclude,作用方式restrict
这一节我们主要看一下replace,transclude,restrict这三个参数 1.replace 可取值:bool 默认为:true 对于replace属性,设置为false表示原有指令标识不 ...
- 微软图表控件MsChart使用
assemblies节点下:<add assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, ...
- Java动态代理与Cglib库
JDK动态代理 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在 ...
- VIM小技巧
1.复制多行 vi编辑器中的整行(多行)复制与粘贴就非常必要了. 1.复制 1)单行复制 在命令模式下,将光标移动到将要复制的行处,按"yy"进行复制: 2)多行复制 在命令模式下 ...
- 2017 New Year’s Greetings from Sun Yat-sen University
As winter turns to spring, the world around us begins to take on an air of freshness. As 2017 is fa ...
- jdbcTemplate的Dao层封装
package com.easyrail.base.dao; import java.io.Serializable; import java.lang.reflect.Field; import j ...