2018 5 20

巧妙的转换,转换为一个二维数组求其相等两行的最大距离 hash    poj3274 Gold Balanced Lineup

https://www.cnblogs.com/lyy289065406/archive/2011/07/30/2122224.html 

解释的很清楚

我的想法是求如果不同位置的1出现的次数相等,则这个区间的数(十进制)相加就是2^n-1的倍数

问题是怎么求这个区间的和,并且还得比较哪个最大,这个即使sum[i]记录的是前i个数的和,也要n*n 时间来比较大小,所以TLE 

在这题中,先将其转换为2进制,用sum[i][j]存储第i个数

 

 

http://codeforces.com/contest/982/problem/C题意:

转自https://www.cnblogs.com/kickit/p/9054233.html


给出一棵树,问最多去掉多少条边之后,剩下的连通分量的size都是偶数。
思路:
如果本来就是奇数个点,那么无论去掉多少条边都不可能成立的。
如果是偶数个点,就进行一次dfs,假设一个点的父亲是u,儿子是v,那么可以去掉(u,v)的条件就是v及其子树有偶数个点,任何一条这样的边都是可以去掉的。不能去掉(u,v)则父亲只能和儿子搭配了,这样才满足奇数个的子树能变成有偶数个点,
所以一边dfs,一边统计答案就可以了。

 

这是思维题,考虑到最终答案肯定是两两搭配,所以一直在想如何才能类似于二分匹配,但其实不用。应该考虑什么时候能够删除这条边,删除这条边的条件。而我则是一直在模拟如果删除了这条边会怎样,失败后回溯等等错误的方向

 

有一个坑 4&0x1==0 这个返回false 应该写成(4&0x1)==0

posted @ 2018-05-20 21:44  LandingGuys  阅读(37)  评论(0编辑  收藏  举报