jzoj5442

Description

一个无向图,最长的简单路径长度不超过10,要求每个点要么被选,要么有一个直接相连的点被选,求最小代价

Solution

30pts

暴力

45pts

加上树形DP

满分做法

还是考虑DP,由于原图是无向图,其 dfs 树深度不超过10,因此考虑跟树形DP一样做

设 fx,sf_{x,s}fx,s​ 表示已经覆盖完 欧拉序/dfs序 在x之前的点(x到根路径上的点除外),x到根路径上的点状态为s,最小代价

往下传时枚举祖先的状态,分选和不选两种情况转移

往上传时比较简单

时间复杂度O(n∗310)O(n*3^{10})O(n∗310),然而状态数明显跑不满,空间上根据深度滚动一下就可以

code

#include<bits/stdc++.h>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
const int INF=1e9+7;
using namespace std;
const int N=2e4+10;
const int M=2.5e4+10;
const int K=59050;
int n,m,a[N],f[20][K],depth[N],cnt,q[N*2];
int tot,last[N],mi[20],dis,ans;
bool bz[N];
struct edge{int st,en,next;
}E[M*2];
void dfs(int x){q[++cnt]=x;bz[x]=1;for(int p=last[x];p;p=E[p].next){int y=E[p].en;if(bz[y])continue;depth[y]=depth[x]+1;dfs(y);q[++cnt]=x;}
}
void add(int x,int y){E[++tot]=(edge){x,y,last[x]};last[x]=tot;
}
int main(){freopen("absurdity.in","r",stdin);freopen("absurdity.out","w",stdout);mi[0]=1;fo(i,1,10)mi[i]=mi[i-1]*3;scanf("%d%d",&n,&m);fo(i,1,n)scanf("%d",&a[i]);fo(i,1,m){int x,y;scanf("%d%d",&x,&y);add(x,y);add(y,x);}fo(i,1,n){if(bz[i])continue;cnt=0;dfs(i);memset(f[0],127,sizeof(f[0]));dis=f[0][0];f[0][0]=0;f[0][2]=a[i];fo(i,2,cnt){int x=depth[q[i]];memset(f[x],127,sizeof(f[x]));if(x>depth[q[i-1]]){fo(j,0,mi[x]-1){if(f[x-1][j]==dis)continue;int s=j;bool flag=0;for(int p=last[q[i]];p;p=E[p].next){int y=E[p].en;if(depth[y]>x)continue;if(j/mi[depth[y]]%3==2)flag=1;else s=(s/mi[depth[y]+1]*3+1)*mi[depth[y]]+s%mi[depth[y]];}if(j/mi[x-1]==2)flag=1;else s=s%mi[x-1]+mi[x-1];s+=mi[x]*2;if(flag)f[x][j+mi[x]]=min(f[x][j+mi[x]],f[x-1][j]);if(j/mi[x-1]!=2)f[x][j]=min(f[x][j],f[x-1][j]);f[x][s]=min(f[x][s],f[x-1][j]+a[q[i]]);}}else{fo(j,0,mi[x+1]-1){f[x][j]=min(f[x+1][j+mi[x+1]],f[x+1][j+2*mi[x+1]]);}}}ans+=min(f[0][1],f[0][2]);}printf("%d\n",ans);return 0;
}

jzoj5442. 【NOIP2017提高A组冲刺11.1】荒诞相关推荐

  1. JZOJ 5441. 【NOIP2017提高A组冲刺11.1】序列

    Description 给定一个1~n的排列x,每次你可以将x1~xi翻转.你需要求出将序列变为升序的最小操作次数.有多组数据. Input 第一行一个整数t表示数据组数. 每组数据第一行一个整数n, ...

  2. jzoj_5455. 【NOIP2017提高A组冲刺11.6】拆网线

    Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料.但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把 ...

  3. [JZOJ5459]【NOIP2017提高A组冲刺11.7】密室

    Description 小X 正困在一个密室里,他希望尽快逃出密室. 密室中有N 个房间,初始时,小X 在1 号房间,而出口在N 号房间. 密室的每一个房间中可能有着一些钥匙和一些传送门,一个传送门会 ...

  4. JZOJ 5458. 【NOIP2017提高A组冲刺11.7】质数

    Description 小X 是一位热爱数学的男孩子,在茫茫的数字中,他对质数更有一种独特的情感.小X 认为,质数是一切自然数起源的地方. 在小X 的认知里,质数是除了本身和1 以外,没有其他因数的数 ...

  5. JZOJ 5455. 【NOIP2017提高A组冲刺11.6】拆网线

    Description 企鹅国的网吧们之间由网线互相连接,形成一棵树的结构.现在由于冬天到了,供暖部门缺少燃料,于是他们决定去拆一些网线来做燃料.但是现在有K只企鹅要上网和别人联机游戏,所以他们需要把 ...

  6. JZOJ 5445. 【NOIP2017提高A组冲刺11.2】失格

    Description 胆小鬼连幸福都会害怕,碰到棉花都会受伤,有时还被幸福所伤. --太宰治<人间失格> 回顾我的一生,一共有n个事件,每一个事件有一个幸福值p_i. 我想用n-1条线把 ...

  7. JZOJ5445. 【NOIP2017提高A组冲刺11.2】失格

    Description 胆小鬼连幸福都会害怕,碰到棉花都会受伤,有时还被幸福所伤. --太宰治<人间失格> 回顾我的一生,一共有n个事件,每一个事件有一个幸福值p_i. 我想用n-1条线把 ...

  8. JZOJ 5466. 【NOIP2017提高A组冲刺11.9】玩游戏

    Description 小A得了忧郁综合症,小B正在想办法开导她. 机智的小B决定陪着小A玩游戏,他从魔法的世界里变出一张无向联通图,每条边上都有边权.小B定义一条路径的权值为所有经过边中的最大权值, ...

  9. JZOJ 5462. 【NOIP2017提高A组冲刺11.8】好文章

    Description nodgd写了一篇文章,自认为这是一篇好文章.nodgd的文章由n个小写英文字母组成.文章的一个子串指的是文章中的一段连续的字母,子串的长度就是这一段的字母个数.nodgd在文 ...

  10. JZOJ 5463. 【NOIP2017提高A组冲刺11.8】证书

    Description Pulumi生活在P城的角落,而他的朋友们gjdy,oyski,tutuwai等等生活在P城的靠中心位置. P城很大,但它拥有优秀的城市结构,同时P城重视文化教育的发展,P城共 ...

最新文章

  1. asp.net mvc jqgrid 同一个页面查询不同的表,jqgrid显示不同表的表头和数据并且分页...
  2. 详解JVM内存管理与垃圾回收机制2 - 何为垃圾
  3. pytorch cycleGAN代码学习1
  4. FreeSql (十六)分页查询
  5. 弃 Windows 转投 Linux,微软全面进军 IoT!
  6. CCF——游戏(2017-12)
  7. 服装计算机辅助设计论文,计算机辅助高校服装设计论文
  8. 全功能短视频平台去水印解析页面源码
  9. TV直播app TV版 超级直播 空壳 可玩性强 带EPG 带回看 带自定义 定制可带自定义协议等
  10. 【电源科普】负载调整率
  11. 关于验证码错误的解决办法
  12. html上绘制网格线,【玩转D3.js】--(1)绘制网格线
  13. Multi-modal Knowledge Graphs for Recommender Systems论文解读
  14. 轻快PDF阅读器怎么阅读电子书
  15. opc服务器不稳定的原因,OPC Client和OPC Server容易出现通讯故障,原因是什么?
  16. SpringBoot应用裁减使用Netty替换内置Web容器
  17. 0353-如何使用curl命令调用CM的API动态配置Yarn资源池
  18. 学 Rust 要几天?「GitHub 热点速览 v.22.51」
  19. 互联网让FBI走下神坛
  20. java integer比较大小_Integer 类型对象之间大小比较

热门文章

  1. 高品质摄影作图台式计算机推荐,摄影后期做图用什么电脑
  2. Quartz 定时任务管理
  3. 360安全卫士企业版本 跳过卸载保护密码
  4. oracle中间人投毒漏洞,‘TNS Listener’远程数据投毒漏洞
  5. 微信开发者工具模拟器中图片无法显示
  6. SNF快速开发平台成长史V4.5-Spring.Net.Framework-SNF软件开发机器人
  7. SNF快速开发平台--多组织+多平台+多系统处理方案
  8. 【企业管理】2021年商业计划书PPT模板(68份)
  9. Lab: Exploiting XSS to perform CSRF:利用XSS执行CSRF
  10. JAVAOooooo。。。。。ooo0000OOOOO