题目大意:给定n*n的国际象棋棋盘,在上面放k个国王,要求国王之间互不攻击,求方案数
n
状压DP,将每一行的方案二进制压成一维,令f[i][j][k]为第i行用去j个国王状态为k的方案数,然后状态转移如下:
f[i][j][k]=Σf[i-1][j-digit[k]][l]
其中l&k=0,l>>1&k=0,l
暴力转移即可
记得开long long
#include
#inc...
分类:
其他好文 时间:
2014-10-13 16:30:09
阅读次数:
221
题目大意:给定一个n个点的有向图,求有多少点对(x,y),使x沿边可到达y
设f[i][j]为从i到j是否可达
首先强联通分量中的任意两个点均可达 于是我们利用Tarjan缩点
缩点之后是一个拓扑图,我们求出拓扑序,沿着拓扑序从后向前DP,状态转移方程为:
f[i][k]=or{ f[j][k] } (i有直连边到达j,1
鉴于每个点的值只会是1或者0,所以我们可以直接状压,或者干脆开b...
分类:
编程语言 时间:
2014-10-13 15:51:39
阅读次数:
157
题目大意:实在是太难说明了,自己看pdf吧。。
思路:优先按照它说明的方法处理数组,然后为了让数列中尽可能多的出现小的数字,所以1是必须要出现的,这样才能使整个数列的排序后字典序最小。我们思考,如果2也能在这个数列中那就最好不过了,但是2有可能不在这个数列里,就是2在走了1就不可能走的地方的话,就不能走2了。所以从小到大枚举数字,如果当前数字能走,就输出,然后标记所有走了这个节点就不能走...
分类:
其他好文 时间:
2014-10-13 15:24:50
阅读次数:
216
输入a b c d k求有多少对x y 使得x在a-b区间 y在c-d区间 gcd(x, y) = k 此外a和c一定是1
因为gcd(x, y) == k 将b和d都除以k 题目转化为1到b/k 和1到d/k 2个区间 假设第一个区间小于第二个区间 讲第二个区间分成2部分来做1-b/k 和 b/k+1-d/k
第一部分对于每个数i 和他互质的数就是这个数的欧拉函数值 所有数的欧拉函数的和就是...
分类:
其他好文 时间:
2014-10-13 15:02:09
阅读次数:
193
鉴于自己的直觉总是很准,所以这次再相信一次好了T1:我觉得极有可能考到的是 1.对于栈,队列的模拟; 2.数论(不是像gcd那样的题目,而是加法原理乘法原理斥容,或是极具数学推导的东西,当然有可能用于贪心的证明,在T2出现) 3.博弈论 其次还是要多加练习的...
分类:
其他好文 时间:
2014-10-13 14:53:49
阅读次数:
257
题目大意:给定一个序列,可以分割k次,每次分割的得分为两段序列的和的乘积 求最大得分
首先我们可以推出序列的分割顺序是不影响得分的 比如说我要把一个序列分割成四份ABCD 我先分割A BCD或者先分割AB CD最后的得分是一样的
证明?嗯……易证。显然嘛。哈哈。好吧我不会证。。。自己画一下推推就好
好吧这是神犇的证法:比如我将ABCD分割为AB CD 那么A就和CD各乘了一次 B也和CD各乘...
题目大意:给定一个n个点的无根树,要求找到一个根节点,使深度之和最大
令f[x]为以x为根的子树的深度之和
首先我们找到任意一个节点进行深搜,统计出每棵子树的大小,以及所有点的深度之和
然后再以该节点为根深搜一遍,此时状态从父节点转移至子节点,转移方程如下:
当我们将根节点从4节点变为5节点时,橙色部分每个点的深度+1,绿色部分每个点的深度-1
故得到状态转移方程:
f[x]=...
分类:
其他好文 时间:
2014-10-13 11:12:49
阅读次数:
248
最近再次看了一下GCD,之前也只是停留在简单使用一下其中函数的程度,现在多了一点理解,做个归纳。
其实使用GCD的函数,很容易注意到有一个词是经常出现的,就是:Dispatch。查了下,是派遣、分派的意思,我目前对于GCD的理解就是基于这个词。虽然它是多线程编程的一个方式,但是不需要我们直接的管理、操纵线程,而是通过把任务(方法、代码块等形式)给定到特定的队列(queue),然后这些...
分类:
其他好文 时间:
2014-10-12 16:16:38
阅读次数:
288
题目大意:初始给定平面上的一个点集,提供两种操作:
1.将一个点加入点集
2.查询距离一个点最小的曼哈顿距离
K-D树是啥。。。不会写。。。我只会CDQ分治
对于一个询问,查询的点与这个点的位置关系有四种,我们现在只讨论左下角,剩余三个象限同理
设询问的点为(x,y),查询的点为(x',y')
则dis=(x-x')+(y-y')=(x+y)-(x'+y')
于是我们要找到查询的点左...
分类:
其他好文 时间:
2014-10-11 20:20:06
阅读次数:
342
题目大意:(同poj1741,刷一赠一系列)
CODE:
#include
#include
#include
#include
#define MAX 20010
#define INF 0x3f3f3f3f
using namespace std;
int points,edges,k;
int head[MAX],total;
int next[MAX << 1...
分类:
其他好文 时间:
2014-10-11 19:19:56
阅读次数:
174