洛谷T31039 九尾狐吃棉花糖
小伙伴出的题。
一眼看出是状压DP裸题。回忆poj2288 islands and bridges,然后就很好写了。
啪啪啪打了个状压DP出来(晚上寝室写的,其实是记忆化搜索),发现sum总是INF
然后发现:printf函数调用的貌似不是运行solve之后的,而是还未运行solve时的值。
于是分开写就A了。
出题者跑了一秒多,貌似用的二分...反正不怎么看得懂。
果然DP大法吼哇!
#include <cstdio>
#include <cstring>
#include <algorithm>
typedef long long LL;
using std::max;
using std::min;
const int N = ;
LL INF;
int n; LL f[ << N][N], sum[ << N][N], G[N][N]; void cal(int sta) {
int t[N];
for(int i = ; i < n; i++) {
t[i] = (sta >> i) & ;
}
for(int i = n - ; i >= ; i--) {
printf("%d", t[i]);
}
return;
} LL solve(int i, int j) { if(f[i][j] != INF) {
//printf("solve: ");
//cal(i);
//printf(" %d ans = %lld sum = %lld \n", j, f[i][j], sum[i][j]);
return f[i][j];
} int ct = ;
for(int ii = ; ii < n; ii++) {
ct += (i >> ii) & ;
}
if(ct < ) {
f[i][j] = INF - ;
return INF - ;
} LL ans = INF - , len = INF - ;
int sta = ((~( << j)) & i);
for(int ii = ; ii < n; ii++) {
if(!(G[ii][j] && ((i >> ii) & ))) {
continue;
}
LL t_ans = max(solve(sta, ii), G[ii][j]);
LL t_len = sum[sta][ii] + G[ii][j];
if(t_ans < ans) {
ans = t_ans;
len = t_len;
}
else if(ans == t_ans) {
len = min(len, t_len);
}
}
f[i][j] = ans;
sum[i][j] = len;
//printf("solve: ");
//cal(i);
//printf(" %d ans = %lld sum = %lld \n", j, ans, len);
return ans;
} int main() {
memset(f, 0x7f, sizeof(f));
memset(sum, 0x7f, sizeof(sum));
INF = sum[][]; int m, x, y;
LL R, z;
scanf("%d%d%lld", &n, &m, &R);
for(int i = ; i <= m; i++) {
scanf("%d%d%lld", &x, &y, &z);
x--; y--;
if(x == y || z > R) continue;
if(G[x][y]) z = min(z, G[x][y]);
G[x][y] = G[y][x] = z;
}
for(int i = ; i < n; i++) {
if(G[][i]) {
int sta = | ( << i);
f[sta][i] = G[][i];
sum[sta][i] = G[][i];
}
}
int ed = ( << n) - ;
LL ans = solve(ed, (n - ));
LL len = sum[ed][n - ];
if(ans >= INF - ) {
printf("wuwuwu~");
}
else {
printf("%lld %lld", ans, len);
}
return ;
}
AC代码
洛谷T31039 九尾狐吃棉花糖的更多相关文章
- 洛谷 P1736 创意吃鱼法
题目描述 题目链接:https://www.luogu.org/problemnew/show/P1736 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢( ...
- 洛谷 P1736 创意吃鱼法 Label:dp || 前缀和
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- 洛谷P1736 创意吃鱼法
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- 洛谷P1736 创意吃鱼法 dp
正解:dp 解题报告: 早就想写dp的题目辣!我发现我的dp好差啊QAQ所以看到列表的小朋友写dp的题目就跟着他们的步伐做下题好辣QwQ 这题的话没有那——么难,大概说下趴QwQ 首先说下题意 前面一 ...
- 洛谷 P4066 [SHOI2003]吃豆豆 解题报告
P4066 [SHOI2003]吃豆豆 题目描述 两个PACMAN吃豆豆.一开始的时候,PACMAN都在坐标原点的左下方,豆豆都在右上方.PACMAN走到豆豆处就会吃掉它.PACMAN行走的路线很奇怪 ...
- 洛谷 P1736 创意吃鱼法(多维DP)
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- 洛谷 P2069 松鼠吃果子
P2069 松鼠吃果子 题目描述 有N个一种松鼠喜欢吃的果子由下向上串排成一列,并标号1,2,...N.一只松鼠从最下果子开始向上跳,并且第i次跳可以一次跳过i*i*i除以5的余数+1个果子(=i*i ...
- 题解【洛谷P1433】吃奶酪
题面 看到数据范围那么小,一眼状压\(\text{DP}\). 设\(dp[i][s]\)表示从\(i\)出发,走过的点的集合为\(s\)的最小距离. 不难推出转移方程(\(dis(i,j)\)为\( ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
随机推荐
- Eclipse中修改jsp、html……的编码格式
一般如果使用的是Eclipse的默认编码格式,在我们保存的时候会提示选择保存的编码格式,保存后英文没有问题,但是中文就会乱码. 修改方式是: Windows——>Preferences——> ...
- hadoop分布式系统架构详解
hadoop 简单来说就是用 java写的分布式 ,处理大数据的框架,主要思想是 “分组合并” 思想. 分组:比如 有一个大型数据,那么他就会将这个数据按照算法分成多份,每份存储在 从属主机上,并且在 ...
- python爬虫之git的使用(windows下pycharm使用)
相信很多同学学会了git或者github以后都不知道怎么跟windows上的pycharm连在一起工作,那么下面我们开始介绍简单的安装和使用方法. 一.安装 1.首先你的有一个github的账户.注册 ...
- PHP的爬虫框架
Beanbun PHPSpider PHPQuery QueryList PHPCrawer Snoopy
- qtp10 安装笔记
windows10系统安装QTP 10 1 QTP10 程序文件夹下,找到“setup”双击它运行安装程序-点击 否 继续安装 2 安装必要组件 3 下一步 选择安装程序目录-安装插件 直到完成安装 ...
- Redis 禁用FLUSHALL FLUSHDB KEYS 命令
(error) ERR unknown command 'keys'问题解决(error) ERR unknown command 'FLUSHDB' 问题解决 背景 FLUSHALL FLUSH ...
- CABAC总结与补充讨论
在之前的一篇文章CABAC中我们已经对算法中的大部分细节部分做了详细分析,这里做一个总结与拾遗. 总结 CABAC的编码可以分为以下四个部分: 上下文变量的初始化 待编码语法元素二值化 上下文建模(确 ...
- 第二十一天,pickle json xml shelve configparser模块
今日内容 1.pcikle 专用于python语言的序列化 2.json 是一种跨平台的数据格式 也属于序列化的一种方式 3.xml 可拓展标记语言 一种编写文档的语法 也支持跨平台 比较json而言 ...
- Matplotlib学习---用matplotlib画饼图/面包圈图(pie chart, donut chart)
我在网上随便找了一组数据,用它来学习画图.大家可以直接把下面的数据复制到excel里,然后用pandas的read_excel命令读取.或者直接在脚本里创建该数据. 饼图: ax.pie(x,labe ...
- @ResponseBody注解
作用 @ResponseBody注解表示该方法的返回结果直接写入HTTP response body中 原理 在使用此注解之后跳过视图处理器,将返回的对象通过适当的转换器转换为指定的格式之后,直接将数 ...