摘要:
A Simple Task CodeForces - 11D 题意:输出一个无向图的简单环数量。简单环指无重复边的环。保证图无重边自环。 ans[i][j]表示"包含i中的点,以i中第一个点为起点,以j为终点"的路径条数。 对于某个i,枚举当前终点j(显然不能是首个点),产生一个状态。再枚举上一次终 阅读全文
摘要:
Ignatius and the Princess III HDU - 1028 整数划分问题 假的dp(复杂度不对) 1 #include<cstdio> 2 #include<cstring> 3 typedef long long LL; 4 LL ans[122][122]; 5 LL n, 阅读全文
摘要:
Sequence POJ - 2442 口胡一个结论:就是前i行产生的最小的n个和,一定可以在"前i-1行产生的最小n个和,每一个加上这一行的任意一个数,产生的n2个数"中找到。(其实显然是对的) 因此每次只需要求两个有n个数的序列每个序列中选一个产生的所有和中最小n个。方法就是先将两个序列排序,这 阅读全文
摘要:
Tree Recovery POJ - 2255 根据树的前序遍历和中序遍历还原后序遍历。 (偷懒用了stl的find) 阅读全文
摘要:
Mondriaan's Dream POJ - 2411 可以用状压dp,但是要打一下表。暴力枚举行、这一行的状态、上一行的状态,判断如果上一行的状态能转移到这一行的状态就转移。 状态定义:ans[i][S]表示i行前已经全部填满,i行已经填上的列为集合S。如果有竖着的,全部当做用这一行的去补满上一 阅读全文
摘要:
How many Fibs? POJ - 2413 高精模板 阅读全文
摘要:
Tempter of the Bone HDU - 1010 dfs。 几个剪枝: 1.如果当前所用时间加上当前位置到目标的曼哈顿距离之和大于目标时间,那么显然无论如何不能完成。剪掉 2.在搜索前判一下,如果出发位置到目标的曼哈顿距离与目标时间的奇偶性不同,那么显然无论如何不能完成。剪掉 错误原因: 阅读全文
摘要:
树上最远点对(树的直径) 做法1:树形dp 最长路一定是经过树上的某一个节点的。 因此: an1[i],an2[i]分别表示一个点向下的最长链和次长链,次长链不存在就设为0;这两者很容易求 an3[i]表示i为根的子树中的答案;an3[u]=max(max{an3[v]}(v是u的子节点),an1[ 阅读全文
摘要:
Eight POJ - 1077 HDU - 1043 八数码问题。用hash(康托展开)判重 bfs(TLE) 从目标状态出发,一次bfs打出所有输入对应结果的表(172ms) 以下的IDA*和A*都要用逆序数特判无解的情况,因为无解的时候IDA*直接无限制搜,A*遍历所有解空间,效率很低。 所谓 阅读全文
摘要:
Race to 1 Again LightOJ - 1038 题意:有一个数字D,每次把D变为它的一个因数(变到所有因数的概率相等,可能是本身),变到1后停止。求对于某个初始的D变到1的期望步数。 x的因子有p[1],...,p[k] 那么ans[x]=1/k*(ans[p[1]]+1)+...+1 阅读全文
摘要:
Coins HDU - 2844 POJ - 1742 多重背包可行性 当做一般多重背包,二进制优化 二进制优化+bitset压位 可以转换成完全背包 http://blog.csdn.net/ac_hell/article/details/51394432 (仅做记录)④对于朴素的方法,这个算法每 阅读全文
摘要:
先把主件拆开。例如两个附件的物品,拆成只买主件、主+附1、主+附2、主+附1+附2这四种对于这个物品的选法。 然后跑类似普通背包的,ans[i][j]表示前i个物品用j的钱的最大收益。如果当前物品为附件则ans[i]直接从ans[i-1]复制,直接忽略当前物品。否则枚举当前物品的所有选法,ans[i 阅读全文
摘要:
Minimal Ratio Tree HDU - 2489 暴力枚举点,然后跑最小生成树得到这些点时的最小边权之和。 由于枚举的时候本来就是按照字典序的,不需要额外判。 错误原因:要求输出的结尾不能有空格。 阅读全文
摘要:
Tian Ji -- The Horse Racing HDU - 1052 (有平局的田忌赛马,田忌赢一次得200块,输一次输掉200块,平局不得钱不输钱,要使得田忌得到最多(如果只能输就输的最少)) 首先,实际是要求两人马的配对关系。那么不妨设齐王是按从快到慢的顺序出马的。因此先将齐王的马排序。 阅读全文
摘要:
Monkey Banana Problem LightOJ - 1004 错误记录: 1.数组开小2.每组数据数组没有清空 错误记录: 1.数组开小2.每组数据数组没有清空 阅读全文
摘要:
https://vjudge.net/problem/LightOJ-1005 题意:在n*n的矩形上放k个车,使得它们不能互相攻击,求方案数。 ans[i][j]表示在i*i的矩形上放j个车的方案数。 那么,首先要在(i-1)*(i-1)的矩形上放j-1个,再在比(i-1)*(i-1)多出来的一行 阅读全文