随笔分类 - 动态规划—状压DP
摘要:题意大概是给定一个19个格子的六边形棋盘,每个位置有一个分数,每次操作可以拿走一个棋子(不得分)或者将当前棋子跳过相邻的一个棋子(得分为跳过的棋子所在位置的分数)且将跳过的棋子拿走,问分数最大是多少。 记忆化搜索+状压。因为只有19个位置,因此可以用一个int整数表示状态,同时注意到是一个棋盘对应多
阅读全文
摘要:题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy
阅读全文
摘要:upd: 破案了,最后格式控制输出%.10lf才能过,%.8lf会WA,估计是ccf赛时测评和赛后的测评机不太一样..? 状压DP。下面的代码交上去0分,比赛写的暴力交上去也是0分,怀疑题库数据炸了2333不过下面的和暴搜拍过小数据是没问题的。等过一阵再试试。 #include <iostream>
阅读全文
摘要:题目背景 在T市有很多个酒店,这些酒店对于不同种类的食材有不同的需求情况,莱莱公司负责每天给这些酒店运输食材。 由于酒店众多,如何规划运输路线成为了一个非常重要的问题。你作为莱莱公司的顾问,请帮他们解决这个棘手的问题。 题目描述 T市有 N 个酒店,这些酒店由 N−1 条双向道路连接,所有酒店和道路
阅读全文
摘要:关于状压DP枚举子集的优雅写法 设当前状态为,子集状态为,则有: for(p = S; p; p = (p - 1) & S) { p1 = S ^ p;//p1为补集 //TODO } 同时这样能保证子集是从大到小枚举出来的。 解释参考https://blog.csdn.net/yan
阅读全文
摘要:傻逼状压DP,考场写崩了...一定注意最后要求的是什么以及在DP数组的位置,还有状压的标号常常从0开始,邻接矩阵要偏移一下。 #include <bits/stdc++.h> using namespace std; int gcd(int a, int b) { return b ? gcd(b,
阅读全文
摘要:链接:https://ac.nowcoder.com/acm/contest/11211/B 来源:牛客网 题目描述 星际中有nn个空间站,任意两个空间站间可以相互跳跃,由空间站xx跳跃到空间站yy所需要的代价为P[x][y]P[x][y],注意不保证p[x][y]=p[y][x]p[x][y]=p
阅读全文
摘要:众所周知,“八皇后” 问题是求解在国际象棋棋盘上摆放 8 个皇后,使得两两之间互不攻击的方案数。 已经学习了很多算法的小蓝觉得 “八皇后” 问题太简单了,意犹未尽。作为一个国际象棋迷,他想研究在 N×M 的棋盘上,摆放 K 个马,使得两两之间互不攻击有多少种摆放方案。 由于方案数可能很大,只需计算答
阅读全文
摘要:题目描述 现有n个砝码,重量分别为 a_ia**i,在去掉 mm 个砝码后,问最多能称量出多少不同的重量(不包括 00)。 请注意,砝码只能放在其中一边。 输入格式 第 11 行为有两个整数 nn 和 mm,用空格分隔。 第 22 行有 nn 个正整数 a_1, a_2, a_3,\ldots ,
阅读全文
摘要:Pang believes that one cannot make an omelet without breaking eggs. For a subset 𝐴A of {1,2,…,𝑛}{1,2,…,n}, we calculate the score of 𝐴A as follows:
阅读全文
摘要:给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。 输入格式 第一行输入整数n。 接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距离(记为a[i,
阅读全文