摘要:
SGU_225由于在dp的时候需要记录上面两行放置马的状态,以及马的数量,这样状态数就相当多了,直接交写完的dp就TLE了。暂时没有想到好的办法,所以拿自己dp的程序打了个表交上去AC了。// 注意:这个程序是用来打表的,并不是可以直接提交的程序。#include<stdio.h>#include<string.h>#define MAXD 20#define HASH 100007#define SIZE 2000010int N, K, ucode[MAXD], dcode[MAXD], ncode[MAXD], num;struct Hashmap{ int he
阅读全文
摘要:
SGU_223最近刚学了插头dp,所以就用插头dp那个模式写了这个题。如果逐格递推的话实际上只有这个格子左边、左上方、上方、右上方的格子会影响当前这个格子是否能够放king,所以在记录状态的时候可以把轮廓线上有无king作为一个状态,同时单记录轮廓线上的king没办法知道最后有多少个king,所以再在状态中留出7个二进制位记录一下已经放了几个king即可。#include<stdio.h>#include<string.h>#define HASH 30007#define SIZE 1000010#define MAXD 15int N, K, code[MAXD],
阅读全文
摘要:
SGU_222最近刚学了插头dp,所以就用插头dp那个模式写了这个题。可以用f[i][j][st]表示推到第i行第j列时,行和列上rook的状态为st时方案的种数。#include<stdio.h>#include<string.h>#define HASH 30007#define SIZE 1000010int N, K, rst, cst;struct Hashmap{ int head[HASH], next[SIZE], state[SIZE], size; long long f[SIZE]; void init() { memset(head...
阅读全文