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 ...
随机推荐
- filter应用案例四:页面静态化
1 说明 你到"当当"搜索Java分类图书时,"当当"会去查询数据库!每天都有很多人去搜索"Java分类"的图书,每次都去访问数据库,这会有 ...
- 【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean
Dao层代码: package com.it.dao; public interface SayHell { public void sayHello(); } Dao的Impl实现层: packag ...
- C#插件构架实战 + Visual C#插件构架实战补遗(转)
C#插件构架实战 C# 插件构架实战 Jack H Hansen [ 2004-07-27 ] Keywords C# 插件 反射(System.Reflection) 属性(System.Attri ...
- String的一些总结(JAVA)
equals: String s1=new String("Hello"); String s2=new String("Hello"); System.out ...
- DSP using MATLAB 示例Example2.3
n = [-10:1:10]; alpha = -0.1+0.3j; % x = exp(alpha*n); % subplot(2,1,1); set(gcf,'Color',[1,1,1]) % ...
- iOS UIImageView用代码添加点击事件
image.userInteractionEnabled = YES; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]ini ...
- 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量
Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...
- node.js第一次
随着时代的变迁,日月星辰轮回,不断的有新的事物被创造于世,作为在这个世界活着的前端工程崽的我,最近又接触了一门新手艺“node.js”.自从它2009年诞生至今,被很多前端推崇,我起步已经晚了,还好它 ...
- hbase regionserver挂掉的问题
之前regionserver老挂,今天终于找到原因了. 是程序中一个函数不停的构造HTable.导致消耗内存.导致gc full. 这篇文章中得到提示:http://www.cnblogs.com/p ...
- 移动端H5页面之iphone6的适配(转)
iphone6 及 iphone 6 plus 已经出来一段时间了.很多移动端网站,以前写死body 为320px的,现在估计也忙着做适配了. 大屏幕手机其实一直有,只是以前大家没怎么重视,移动端的H ...