A:= v =

B:^ w ^

C:一天n个小时,一个小时m分(n,m十进制),一个手表有两部分,左边表示时,右边表示分,但都是7进制,而且手表上最多只能有7个数字且数字不能重复,现在要你算出能正确表示出多少个时间(不够位需要补0)。因为进制只有7,所以可以枚举所有的7进制数,然后再切成7组,分为左边和右边,判断是否符合n,m条件,计数即可。O(7*7^7)

D:给你一个n个节点的树,有q个询问(n,q<=300000),每次询问一个x,问以x为顶点的子树中,删除哪一个点后使得这个子树剩下的联通块中个数最大的那个中的点数<=原子树点数的一半(答案保证存在,求出一个解即可)。

类似经典的离线LCA,因为询问只跟点个数有关和树形态无关,那么如果节点x的子树答案都出来了,x对应的答案也就出来了(也就是一个树形DP的想法),具体的,x的子树中,个数最大的那个子树中,一定存在一个解(贪心的想法,因为答案一定存在,那么如果最大的那个都不存在,小的就更加不存在),所以f[x]也就在以son[x]为点的子树中。然后如何求出这个呢?是不是就是f[son[x]]呢?那肯定是不一定的。

那么f[x]在f[son[x]]的上方还是下方呢?这其实取决于f[son[x]]在son[x]这个子树中的位置,如果f[son[x]]在子树中偏下(即最大的那个联通块在上方),那么在上面接上更多的点后,如果往f[son[x]]的下方继续寻找,那肯定是不能符合的。如果f[son[x]]在子树中偏上(即最大的那个联通块在下方),那么如果上面接的很少的情况下,也有可能f[x]在f[son[x]]下面的。

难道必须要遍历整个son[x]子树吗?

其实dp是从叶子节点从上做的(叶子节点的f值是自己),所以某个f[x]是这个子树中的什么形态是我们可以人为先确定的,于是我们可以认为确定所有的f[x]都在f[son[x]]上面找,一直保持联通块最大的在上方。于是复杂度就下来了。

#include<cstring>
#include<algorithm>
#include<cstdio>
#include<vector>
using namespace std;
const int maxn=;
int n,q;
vector<int> g[maxn+];
int f[maxn+],size[maxn+],father[maxn+],son[maxn+];
void dfs(int k,int last)
{
int s=;
for(int i=;i<g[k].size();++i)
{
if(g[k][i]==last) continue;
father[g[k][i]]=k;
dfs(g[k][i],k);
size[k]+=size[g[k][i]];
if(size[g[k][i]]>s) s=size[g[k][i]],son[k]=g[k][i];
}
}
bool check(int k,int j)
{
return max(size[k]-size[j],size[son[j]])<=size[k]/;
}
void dp(int k,int last)
{
if(g[k].size()==&&k!=)
{
f[k]=k;
return;
}
for(int i=;i<g[k].size();++i) if(g[k][i]!=last) dp(g[k][i],k);
int j=f[son[k]];
while(j!=k&&!check(k,j)) j=father[j];
f[k]=j;
}
int main()
{
scanf("%d %d",&n,&q);
for(int i=;i<=n;++i)
{
int x;
scanf("%d",&x);
g[x].push_back(i),g[i].push_back(x);
}
for(int i=;i<=n;++i) size[i]=;
dfs(,);
dp(,);
int x;
for(int i=;i<=q;++i) scanf("%d",&x),printf("%d\n",f[x]);
return ;
}

注意下叶子节点的判断,如果考虑是不是只连了一个点的话,那么还有根节点只连1个点的情况,这时候就要特判是不是根节点了……

E:给你一些三维的点,找一个点使得这个点到其他所有点的最大距离最小(曼哈顿距离)

嘻嘻:https://async.icpc-camp.org/d/465-codeforces-round-359

判定一个ans是否可以即判断是否存在一组整数解(X,Y,Z)满足原不等式。

遇到绝对值不等式就去绝对值,用max,min代替,于是本题列出了3个未知数4个不等式的不等式组,判断是否有整数解。解多元的不等式还是要用换元的思想,将Y+Z当作整体,求出Y+Z的取值范围[L,R](与X有关),然后根据两个不同的不等式得到两个不同的[L,R],要让这个存在,于是可以求出X的取值范围,再带入求Y和Z的,判断是否有解。

总结:绝对值要去掉!多元要整体法!(噫~又想到我那可悲的高中数学)

Codeforces Round #359(div 2)的更多相关文章

  1. Codeforces Round #359 (Div. 2)C - Robbers' watch

    C. Robbers' watch time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  2. Codeforces Round #359 (Div. 2) C. Robbers' watch (暴力DFS)

    题目链接:http://codeforces.com/problemset/problem/686/C 给你n和m,问你有多少对(a, b) 满足0<=a <n 且 0 <=b &l ...

  3. Codeforces Round #359 (Div. 1)

    A http://codeforces.com/contest/685/standings 题意:给你n和m,找出(a,b)的对数,其中a满足要求:0<=a<n,a的7进制的位数和n-1的 ...

  4. Codeforces Round #359 (Div. 1) B. Kay and Snowflake dfs

    B. Kay and Snowflake 题目连接: http://www.codeforces.com/contest/685/problem/B Description After the pie ...

  5. Codeforces Round #359 (Div. 1) A. Robbers' watch 暴力

    A. Robbers' watch 题目连接: http://www.codeforces.com/contest/685/problem/A Description Robbers, who att ...

  6. Codeforces Round #359 (Div. 2) B. Little Robber Girl's Zoo 水题

    B. Little Robber Girl's Zoo 题目连接: http://www.codeforces.com/contest/686/problem/B Description Little ...

  7. Codeforces Round #359 (Div. 2) A. Free Ice Cream 水题

    A. Free Ice Cream 题目连接: http://www.codeforces.com/contest/686/problem/A Description After their adve ...

  8. Codeforces Round #359 (Div. 2) C. Robbers' watch 搜索

    题目链接:http://codeforces.com/contest/686/problem/C题目大意:给你两个十进制的数n和m,选一个范围在[0,n)的整数a,选一个范围在[0,m)的整数b,要求 ...

  9. Codeforces Round #359 (Div. 2) D. Kay and Snowflake 树DP

    D. Kay and Snowflake     After the piece of a devilish mirror hit the Kay's eye, he is no longer int ...

随机推荐

  1. Java 利用 ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件

    最近参与了github上的一个开源项目 Mycat,是一个mysql的分库分表的中间件.发现其中读取配置文件的代码,存在频繁多次重复打开,读取,关闭的问题,代码写的很初级,稍微看过一些框架源码的人,是 ...

  2. ReactNative之坑爹的在线安装

    编译一个github上ReactNative应用,根据说明只有3步: npm installreact-native run-androidenjoy 但几个步骤实在是一波三折充满着坎坷,一点都不en ...

  3. iOS拍照上传后,在web端显示旋转 Swift+OC版解决方案

    问题描述: 手机头像上传,遇到一个怪现象,就是拍照上传时,手机端显示头像正常,但在web端查看会有一个左旋90度的问题. 并且照片竖怕才会有此问题,横拍不存在. 原因分析: 手机拍照时,用相机拍摄出来 ...

  4. linux线程同步(4)-自旋锁

    自旋锁与互斥量功能一样,唯一一点不同的就是互斥量阻塞后休眠让出cpu,而自旋锁阻塞后不会让出cpu,会一直忙等待,直到得到锁!!! 自旋锁在用户态使用的比较少,在内核使用的比较多!自旋锁的使用场景:锁 ...

  5. oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT

    oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT 问题如下: SQL> conn scott/tiger@vm_database Connected to Oracle ...

  6. container error log

    learn from error- Error: org.apache.hadoop.mapreduce.task.reduce.Shuffle$ShuffleError: error in shuf ...

  7. MyEclipse 启动 tomcate 失败 解决方法

    MyEclipse中启动tomcate失败 十月 20, 2015 9:53:04 下午 org.apache.catalina.startup.VersionLoggerListener log信息 ...

  8. 终于可以在centos下使用QQ啦!

    电脑装了centos 6.4操作系统,一直无法使用QQ,在centos中文论坛看到一篇介绍安装qq的文章,依样画葫芦,终于成功了1.下载QQ2012软件安装包,我给大家准备好了下载地址 [root@b ...

  9. vector3.forward和transform.forward的区别!

    http://blog.163.com/bowen_tong/blog/static/20681717420146654927791/ vector3.forward和transform.forwar ...

  10. 转:大气炫酷焦点轮播图js特效

    使用方法 Step 1. 在html的标签内引入相关文件 <script type="text/javascript" src="js/myfocus-2.0.0. ...