Maniac is a tool designed to automate the comparison and the validation of multiple variants of a same program. This is achieved by compiling each variant in a distinct shared object and generating a program that will successively load and execute them.
感觉不是很好写的一道状态压缩。 dp[i][j][k]表示第 i 行状态为k,第i - 1行状态为 j,具体细节见代码。 内存卡的很死,要用滚动数组。 还有一个比较坑爹的地方是它在输入蛋糕的时候中间可能会出现空行,一开始我用getchar()读,连第一组数据都过不去,后来改成scanf( "%s", str )才过……错了好多次。 1 #include <cstdio> 2 #includ
SGU132 Another Chocolate Maniac 题目大意 给出一个N*M的矩阵,其中某些格子为空 要求用最少的1*2的矩形,无覆盖的放入空格中,使得剩下的空格都不相邻 问最少需要多少个 算法思路 状态压缩DP,f[j][S][R]表示前j-2行符合要求,第j-1行无横向相邻空格 第j行的状态为S且最后两行纵向相邻空格的状态为R时的最小值 对于第一行,显然R必定为0,考察S的放置方式
132. Another Chocolate Maniac time limit per test: 0.25 sec. memory limit per test: 4096 KB Bob really LOVES chocolate. He thinks he never gets enough. Imagine his joy when his parents told him tha
时间限制:0.25s 空间限制:4M 题目: Bob非常喜欢巧克力,吃再多也觉得不够。当他的父母告诉他将要买很多矩形巧克力片为他庆祝生日时,他的喜悦是能被理解的。巧克力都是 2x1 或 1x2 的矩形。Bob的父母还为他准备了一个生日蛋糕,蛋糕可以看做 M 行 N 列的矩阵。蛋糕上的有些地方是要放蜡烛的,其他的地方都是空的。 Bob的父母要他在蛋糕上放尽可能多的巧克力片,使得任意两片
Analysis 还是一道状态压缩题目,与SGU131不同的是,一个要填满,一个不用,这样一来此题中上一行的状态将会影响到当前行,故应在状态表示时记录两行。设f[i,opt1,opt2]是当前为第i行,上一行状态为opt1,当前行状态为opt2时的方案总数,用与前一题相似的方法推到下一个状态。 Accepted Code var f:array[0..1,0..200,0..200