Codeforces Round #196 (Div. 2)
A
题意:O(-1)
思路:排个序搞定。
B
题意:O(-1)
思路:坑了我好久,这个框框水平垂直比例固定,分两种情况即可,不能旋转,我想多了,分了四种情况。
C
题意:一列n个位置,让你填m个数,当连续数达到k时,分数乘以2,计数清零,当不连续时,计数也清零,没到达k之前分数+1.
思路:很显然的问题是让我们处理填m个位置,并且使连续的k个数次数最少。我们先让m个数k-1每次填,填一次空一位,直到不够填了就往前面的空位填。设连续k个次数为mm,那么就是(((2*k)+k)*2……+k)*2,等比数列求和之后为k*(2^mm-2),不连续k的值为m-mm*k。注意要注意了细节很多,WA了两次。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std; typedef long long lld;
const lld mod=; lld Pow(lld a, int b)
{
lld ans=;
while(b)
{
if(b&) ans=(ans*a)%mod;
b>>=;
a=(a*a)%mod;
}
return ans%mod;
} int main()
{
lld n, m, k;
while(cin >> n >> m >> k)
{
lld c1, c2, s1, num, mm, ans=;
c1=n/k, s1=n%k;
c2=m/(k-);
num=min(c1,c2);
if(c1>c2) s1+=k*(c1-c2);
mm=m-num*(k-);
mm-=min(mm,s1);
if(mm) ans=(k*((Pow(,mm+)-+mod)%mod))%mod;
ans=(ans+m-k*mm%mod+mod)%mod;
cout << ans <<endl;
}
}
/*
23888888 508125 3
*/
D
题意:有一颗n个节点的树,树中有m个恶魔,然后给你一个控制距离d,问你树中哪些节点能控制住所有恶魔(离最远恶魔距离小于等于d)。
思路:很显然的树形dp,开始没考虑清楚一点,把所有节点的最长半径以及次长半径都初始化为0,这样会存在一个小bug,因为当有一个恶魔节点存在树中(此时此节点最长半径为0),父亲节点的最长半径为此节点更新上去的,传递下来的时候此节点只能利用父亲节点的次长半径,当次长半径初始化为0时,此时更新此节点的话次长半径就要大于最长半径,所以节点最长半径和次长半径初始化为-oo,有恶魔的节点最长半径改为0即可,开始没考虑到这点。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#include <queue>
using namespace std; const int maxn=;
const int oo=0x3fffffff;
int fmax[maxn], smax[maxn], color[maxn], f[maxn];
vector<int>vt[maxn];
int n, m, d; void init()
{
for(int i=; i<=n; i++)
{
vt[i].clear();
fmax[i]=smax[i]=-oo;
color[i]=f[i]=;
}
} void dfs(int u, int fa)
{
for(int i=; i<vt[u].size(); i++)
{
int v=vt[u][i];
if(v==fa) continue;
dfs(v,u);
if(color[v])
{
color[u]++;
if(fmax[v]+>fmax[u]) smax[u]=fmax[u], fmax[u]=fmax[v]+;
else if(fmax[v]+>smax[u]) smax[u]=fmax[v]+;
}
}
} void DFS(int u, int fa)
{
if(u==) ;
else
{
if(fmax[fa]-==fmax[u])
{
if(smax[fa]+>fmax[u]) smax[u]=fmax[u], fmax[u]=smax[fa]+;
else if(smax[fa]+>smax[u]) smax[u]=smax[fa]+;
}
else
{
if(fmax[fa]+>fmax[u]) smax[u]=fmax[u], fmax[u]=fmax[fa]+;
else if(fmax[fa]+>smax[u]) smax[u]=fmax[fa]+;
}
}
for(int i=; i<vt[u].size(); i++)
if(vt[u][i]!=fa)DFS(vt[u][i],u);
} int bfs(int st)
{
int ans=;
queue<int>q;
q.push(st);
while(!q.empty())
{
int u=q.front();
q.pop();
if(fmax[u]<=d) ans++;
for(int i=; i<vt[u].size(); i++)
{
int v=vt[u][i];
if(v==f[u]) continue;
f[v]=u;
q.push(v);
}
}
return ans;
} int main()
{
while(cin >> n >> m >> d)
{
init();
int u, v;
for(int i=; i<=m; i++)
{
scanf("%d",&u);
color[u]=;
fmax[u]=;
}
for(int i=; i<n; i++)
{
scanf("%d%d",&u,&v);
vt[u].push_back(v);
vt[v].push_back(u);
}
dfs(,);
DFS(,);
int ans=bfs();
cout << ans <<endl;
}
return ;
}
/*
10 1 0
3
10 1
9 4
4 5
6 4
2 4
7 5
8 3
5 3
1 3 1
*/
Codeforces Round #196 (Div. 2)的更多相关文章
- Codeforces Round #196 (Div. 2) D. Book of Evil 树形dp
题目链接: http://codeforces.com/problemset/problem/337/D D. Book of Evil time limit per test2 secondsmem ...
- Codeforces Round #196 (Div. 1) 题解
(CF唯一不好的地方就是时差……不过还好没去考,考的话就等着滚回Div. 2了……) A - Quiz 裸的贪心,不过要用矩阵乘法优化或者直接推通式然后快速幂.不过本傻叉做的时候脑子一片混乱,导致WA ...
- Codeforces Round #196 (Div. 2) B. Routine Problem
screen 尺寸为a:b video 尺寸为 c:d 如果a == c 则 面积比为 cd/ab=ad/cb (ad < cb) 如果b == d 则 面积比为 cd/ab=cb/ad (c ...
- A. Puzzles CodeForces Round #196 (Div.2)
题目的大意是,给你 m 个数字,让你从中选 n 个,使得选出的数字的极差最小. 好吧,超级大水题.因为要极差最小,所以当然想到要排个序咯,然后去连续的 n 个数字,因为数据不大,所以排完序之后直接暴力 ...
- Codeforces Round #196 (Div. 2) A. Puzzles 水题
A. Puzzles Time Limit: 2 Sec Memory Limit: 60 MB 题目连接 http://acm.zju.edu.cn/onlinejudge/showProblem ...
- Codeforces Round #196 (Div. 2) 少部分题解
A:sort以后求差值最小 ]; int main() { int n,m; cin>>n>>m; ; i < m ; i++) cin>>a[i]; sor ...
- Codeforces Round #196 (Div. 1 + Div. 2)
A. Puzzles 对\(f[]\)排序,取连续的\(m\)个. B. Routine Problem 考虑\(\frac{a}{b}\)和\(\frac{c}{d}\)的大小关系,适配后就是分数的 ...
- 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 ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
随机推荐
- eclipse文本域内只能输入繁体中文
背景:在文本编辑器下写纯文本时不知怎么回事儿,原来能输入简体字,但过了之后只能输入繁体中文了!我用的是sogou拼音输入法,我检查过,输入法设置的是简体中文,eclipse默认的编码方式是utf-8. ...
- 开发Portlet第三步:如何在Crystal Portlet中调用远程服务?
当基于测试数据的Portlet调试完成后,接下来就是引入远程服务,替换测试数据. (此处以Dubbo框架远程服务为例) 分步指南 删除测试数据依赖:在pom.xml文件中,删除对****-servic ...
- JSON.parse()和JSON.stringify()使用
JSON.parse()用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age&qu ...
- javascript引擎工作原理
1. 什么是JavaScript解析引擎? 简单地说,JavaScript解析引擎就是能够“读懂”JavaScript代码,并准确地给出代码运行结果的一段程序.比方说,当你写了 var a = 1 + ...
- css3 总结01
前缀 chrome: -webkit- safari: -webkit- firefox: -moz- ie: -ms- opera: -o- 书写的时候应该先用有前缀的样式,再用无前缀的样式 颜色 ...
- linux(centos6)搭建ftp服务器
前提 ssh服务已经开启,关闭防火墙,主机和虚拟机能ping通 查看ssh和防火墙的状态 service sshd status service iptables status 开启ssh服务 ser ...
- three.js阴影
<!DOCTYPE html> <html> <head> <title>Example 01.03 - Materials and light< ...
- UVa1161 Objective: Berlin(最大流)
题目 Source https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- EF框架step by step(3)—Code-First
CodeFirst是EF框架的第三种方式,也是最为复杂一种方式,本文将以EF4.1版本为基础,简要讲解一下用法,同时,也介绍DbContext的用法. 本文采用的示例仍然是前两篇采用的博客用户的示例. ...
- Windows RC版、RTM版、OEM版、RTL版、VOL版的区别
Windows 版本号标识区别一览表: 版本缩写 版本全称 版本意义 Alpha版 Alpha 内部测试版,一般不会向外部发布,会有很多Bug,只供测试人员使用,如果您看到Alpha版本了,一般来讲对 ...