题意: 给一个n*n的棋盘,放上k个主教(斜走),求能放置的种类总数。Solution: 一眼看上去感觉是状压DP,发现状态太多,没办法存下来。。。 下面是一个十分巧妙的处理: 将棋盘按照国际象棋的样子分成黑白两部分,再旋转45°,以黑色为例,一行有1,3,5,7。...
分类:
其他好文 时间:
2014-10-17 20:15:29
阅读次数:
303
时间限制:0.25s空间限制:4M题意: 有两个公司A、B,他们要展览物品,但是A公司的展柜要放B公司的物品,B公司的展柜要放A公司物品。最开始只有一个空柜台,从指定的一个公司开始,轮流进行操作,可选的操作有两个:①选一个自己公司的空展柜放上对方公司的物品 ②选一个自己公司的空展柜,在这个展柜左.....
分类:
其他好文 时间:
2014-10-13 21:41:07
阅读次数:
145
Flow construction
题目:
给出N个节点M条水管,要求在满足上下界的情况下。满足起点最小的流量。
算法:
这是最小流????不知道。只知道用求解上下界最大流的方法就过了。
做这题收获了很多东西。知道了同一点的flow是真实的流量值,虽然以前在书上或论文中看到过,不过印象不深,但是经过这题深刻的懂了。就是这题输出的时候有点麻烦。。。要记录每次的路...
分类:
其他好文 时间:
2014-10-11 20:43:16
阅读次数:
267
思路: 贪心,
每次删除最上面的边。。
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int M = 200008;
deque q;
vector vi;
int first_edge[M],next_edge[M],to[M],ty[M],sum;...
分类:
其他好文 时间:
2014-10-11 10:31:35
阅读次数:
207
时间限制:0.25s空间限制:4M题意: 有n个人,每个人有两个能力值,只有一个人的两个能力都小于另一个的能力值,这两个人才能共存,求能同时共存的最大人数。Solution: 显然这是一个两个关键字的最长上升序列。 先按照第一种能力值为第一关键字从小到大,第二能力值为第二关键...
分类:
其他好文 时间:
2014-10-10 20:39:24
阅读次数:
276
题目:在m*n的地板上铺上相同的I型和L型的地板砖,问有多少种铺法。
分析:dp,组合,计数。经典dp问题,状态压缩。与zoj1100一样,只是多了几个状态。
状态:设f(i,j)为前i-1行铺满,第i行铺的状态的位表示为j时的铺砖种类数;
转移:I型的砖,因为只能横铺或者竖铺,那么一个砖块铺之前的状态只有两种;
...
分类:
其他好文 时间:
2014-10-10 14:44:24
阅读次数:
169
时间限制:0.25s空间限制:4M题意: 给定一个N*N的棋盘,一些格子被移除,在棋盘上放置一些1*2的骨牌,判定能否放满,并且输出任意方案。Solution: 首先考虑对棋盘的一个格子黑白染色(实际上不需要),得到一个类似国际象棋棋盘的东西,一个骨牌能放置在相邻的一对黑白格子上 ...
分类:
其他好文 时间:
2014-10-09 21:57:37
阅读次数:
273
时间限制:0.5s空间限制:6M题意: 显然就是求一个无源汇有上下界的网络流的可行流的问题Solution:没什么好说的,直接判定可行流,输出就好了code/* 无汇源有上下界的网络流*/#include #include #define ms(a,b) memset(a,b,siz...
分类:
其他好文 时间:
2014-10-09 21:45:37
阅读次数:
169
时间限制:0.5s空间限制:6M题意: 给出长n(n#include #include using namespace std;struct Mat { int mat[100][100];} mx;int pow[109];int n, m, mod, len;Mat operator ...
分类:
其他好文 时间:
2014-10-09 13:21:33
阅读次数:
183
n个盒子 m个人轮流选 拿走盒子里的奖品 盒子再放回去 求得到奖品的期望
可以求没有被选到的奖品的期望 用n减去就是答案
#include
#include
#include
#include
using namespace std;
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
...
分类:
其他好文 时间:
2014-10-02 14:50:43
阅读次数:
179