题解:

dp很容易想

f[i][j][s]表示匹配到了i点 对应点为j点,状态为s 那么这样的时间复杂度为(3^n*n^2)

然后会发现这其实可以转化为可以重复利用元素的子集卷积

http://www.cnblogs.com/yinwuxiao/p/8471250.html

因为可以发现那些一定是不满足的
这样是2^n*n^3

然而本人并不怎么会调整常数。。所以就被卡常了------以后再改吧。。

还有就是空间差不多是卡着512mb的

#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define sz [18][(1<<17)+10]
ll n,m,f[][],l,lim,pos[<<];
ll head[],dp[]sz,count2[];
struct re{
ll a,b;
}a[];
void arr(ll x,ll y)
{
a[++l].a=head[x];
a[l].b=y;
head[x]=l;
}
ll ff1 sz,ff2 sz,ff3 sz;
void dfs(ll x,ll fa)
{
count2[x]=;
ll u=head[x];
while (u)
{
ll v=a[u].b;
if (v!=fa) dfs(v,x),count2[x]+=count2[v];
u=a[u].a;
}
u=head[x];
memset(ff1,,sizeof(ff1));
memset(ff3,,sizeof(ff3));
for (ll i=;i<=n;i++) ff1[i][<<(i-)]=;
for (ll i=;i<=n;i++) ff3[i][<<(i-)]=;
while (u)
{
ll v=a[u].b;
memset(ff2,,sizeof(ff2));
if (v!=fa)
{
for (ll i=;i<=n;i++)
{
for (ll j=;j<=n;j++)
if (f[i][j])
for (ll k=;k<lim;k++)
ff2[i][k]+=dp[v][j][k];
for (ll j=;j<=n;j++)
for (ll k=;k<lim;k++)
if (k>>(j-)&) ff1[i][k]+=ff1[i][k^(<<(j-))];
for (ll j=;j<=n;j++)
for (ll k=;k<lim;k++)
if (k>>(j-)&) ff2[i][k]+=ff2[i][k^(<<(j-))];
for (ll j=;j<lim;j++) ff3[i][j]=ff2[i][j]*ff1[i][j];
for (ll j=;j<=n;j++)
for (ll k=;k<lim;k++)
if (k>>(j-)&) ff3[i][k]-=ff3[i][k^(<<(j-))];
for (ll k=;k<lim;k++) ff1[i][k]=ff3[i][k];
}
}
u=a[u].a;
}
for (ll i=;i<=n;i++)
for (ll j=;j<lim;j++)
if (pos[j]==count2[x])
dp[x][i][j]=ff3[i][j];
}
int main()
{
freopen("noip.in","r",stdin);
freopen("noip.out","w",stdout);
std::ios::sync_with_stdio(false);
cin>>n>>m; lim=<<n;
for (int i=;i<lim;i++)
{
int cnt=;
for (int j=;j<=n;j++)
if (i>>(j-)&) cnt++;
pos[i]=cnt;
}
memset(f,,sizeof(f));
ll c,d;
for (ll i=;i<=m;i++)
{
cin>>c>>d; f[c][d]=; f[d][c]=;
}
for (ll i=;i<=n-;i++)
{
cin>>c>>d; arr(c,d); arr(d,c);
}
dfs(,);
ll ans=;
for (ll i=;i<=n;i++) ans+=dp[][i][lim-];
cout<<ans<<endl;
}

zjoi 小星星的更多相关文章

  1. BZOJ4596: [Shoi2016]黑暗前的幻想乡

    Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪 ...

  2. [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)

    [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...

  3. [ZJOI 2016] 小星星

    4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 653  Solved: 400[Submit][Status] ...

  4. 【BZOJ 4455】【UOJ #185】【ZJOI 2016】小星星

    http://www.lydsy.com/JudgeOnline/problem.php?id=4455 http://uoj.ac/problem/185 有一个$O(n^n)$的暴力,放宽限制可以 ...

  5. @loj - 2091@ 「ZJOI2016」小星星

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 小 Y 是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有 ...

  6. BZOJ4455: [Zjoi2016]小星星

    Description 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细 线连着两颗小星星.有一天她发现,她的饰品被破坏了,很多细线都被拆掉了.这 ...

  7. JS对象实现随机满天小星星实例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 【BZOJ-4455】小星星 容斥 + 树形DP

    4455: [Zjoi2016]小星星 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 204  Solved: 137[Submit][Status] ...

  9. ZJOI day1总结

    虽然没人看,虽然滚了大粗,但还是这样勉励一下自己.. 今年大约是进队无望了. before ZJOI 感觉自己时间很充裕,与lyx大爷一起颓颓颓.. day -3 到xj. day -2 听课.感觉洲 ...

随机推荐

  1. JavaScript 数字转汉字+element时间选择器快速选择

    window.CN = { : '一', : '二', : '三', : '四', : '五', : '六', : '七', : '八', : '九', : '零' } window.LEVEL = ...

  2. Vue项目实践中的功能实现与要点

    本贴记录项目实践中,各种功能的实现与技术要点,均有待改进. 路由切换的时候,显示loading动画 目前方案是: 在每个页面都手动装载一个loading组件组件的显示依赖vuex里面的一个值 , 在r ...

  3. shell 终端常用插件

    参考链接: http://get.ftqq.com/992.get 1.zsh 2.autojump 3.apt-get install lamp-server^ 4.tldr 5.tree (显示目 ...

  4. strong、weak、copy、assign 在命名属性时候怎么用

    一直都在疑惑属性定义中在什么情况下用strong.在什么情况下用weak? 总结大致如下: 1.weak 是用来修饰代理(delegate)和UI控件. 2.strong 是用来修饰除了代理(dele ...

  5. cartographer 安装问题

    安装主要参考hitcm教程: http://www.cnblogs.com/hitcm/p/5939507.html 这里只说安装过程中遇到的问题, ceres-solver 与 eigen3 版本不 ...

  6. Linux时间日期类指令

    ⒈date [Options] 显示/设置当前日期 基本语法: date 显示当前时间 date +"%Y" 显示当前年份 date +"%m" 显示当前月份 ...

  7. Linux内存管理6---伙伴算法与slab

    1.前言 本文所述关于内存管理的系列文章主要是对陈莉君老师所讲述的内存管理知识讲座的整理. 本讲座主要分三个主题展开对内存管理进行讲解:内存管理的硬件基础.虚拟地址空间的管理.物理地址空间的管理. 本 ...

  8. flask_restplus(1)- 未完成

    快速开始 本指南假设您对Flask有一定的了解,并且您已经安装了Flask和Flask- restplus.如果没有,则按照安装部分中的步骤操作. 初始化 与其他所有扩展一样,您可以使用应用程序对象初 ...

  9. C# 清理消息管道的消息

    using System;using System.Collections.Generic;using System.Linq;using System.Messaging;using System. ...

  10. VC++常用数据类型

    原文地址:https://www.cnblogs.com/yincheng01/archive/2008/12/31/2213386.html 一.              VC常用数据类型列表 二 ...