zjoi 小星星
题解:
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 小星星的更多相关文章
- BZOJ4596: [Shoi2016]黑暗前的幻想乡
Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪 ...
- [BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩)
[BZOJ 4455] [ZJOI 2016] 小星星 (树形dp+容斥原理+状态压缩) 题面 给出一棵树和一个图,点数均为n,问有多少种方法把树的节点标号,使得对于树上的任意两个节点u,v,若树上u ...
- [ZJOI 2016] 小星星
4455: [Zjoi2016]小星星 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 653 Solved: 400[Submit][Status] ...
- 【BZOJ 4455】【UOJ #185】【ZJOI 2016】小星星
http://www.lydsy.com/JudgeOnline/problem.php?id=4455 http://uoj.ac/problem/185 有一个$O(n^n)$的暴力,放宽限制可以 ...
- @loj - 2091@ 「ZJOI2016」小星星
目录 @description@ @solution@ @accepted code@ @details@ @description@ 小 Y 是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有 ...
- BZOJ4455: [Zjoi2016]小星星
Description 小Y是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有n颗小星星,用m条彩色的细线串了起来,每条细 线连着两颗小星星.有一天她发现,她的饰品被破坏了,很多细线都被拆掉了.这 ...
- JS对象实现随机满天小星星实例
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【BZOJ-4455】小星星 容斥 + 树形DP
4455: [Zjoi2016]小星星 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 204 Solved: 137[Submit][Status] ...
- ZJOI day1总结
虽然没人看,虽然滚了大粗,但还是这样勉励一下自己.. 今年大约是进队无望了. before ZJOI 感觉自己时间很充裕,与lyx大爷一起颓颓颓.. day -3 到xj. day -2 听课.感觉洲 ...
随机推荐
- 按某个属性排序(字典序,ascII) js/python
javascrapy方法 var compare = (prop)=>{ return (a,b)=>{ : - } } javascrapy测试代码 var aaa = [ {name: ...
- 解决IntelliJ IDEA无法读取配置*.properties文件的问题
idea对这些配置的文件方式很明显和eclipse是不同的.在idea中有一个 Content Roots的概念.需要为每一个folder配置相应的Content Roots.Content Root ...
- Java基础编程题——水仙花数
package com.yangzl.basic; /** * 题目:打印出所有的"水仙花数". * 所谓"水仙花数"是指一个三位数, * 其各位数字立方和等于 ...
- 使用Sphinx生成本地的Python帮助文档
第一步:安装Sphinx 首先我们需要安装Sphinx,如果已经安装了Anaconda,那么只需要使用如下命令即可安装,关于其中的参数 -c anaconda,可以在链接[1]中查看: conda i ...
- 【libreoffice】libreoffice实现office转pdf、html、jpg等格式数据
其实libreoffice有好多功能,完全可以替代office 1.windows下将word转为pdf 1 安装libreoffice 到官网下载后安装即可.https://donate.libr ...
- Debian 安装配置(包括kdevelop)
最近几天折腾了一下Debian 7 (gnome桌面DVD版,KDE桌面CD版最后会提到),总的来说收获还是挺大的,对比以前使用ubuntu,debian 7给我的感觉像是一个新生婴儿,不带多余的花俏 ...
- Dubbo服务容错
当一个服务调用另一个远程服务出现错误时的外观 Dubbo提供了多种容错方案,默认值为failover(重试) 1).Failover Cluster(默认) 失败自动切换,当出现失败,重试其他服务器, ...
- OpenWrt启动过程分析+添加自启动脚本【转】
一.OpenWrt启动过程分析 转自: http://www.eehello.com/?post=107 总结一下OpenWrt的启动流程:1.CFE->2.linux->3./etc/p ...
- XmlDocument根据节点的属性值获取节点
string targetParm = string.Format("STUDENTS/STUDENT[@NO='{0}']", targetValue);//生成目标获取节点的参 ...
- git安装及基础用法
1.安装GitGit-2.9.3-64-bit.exe 2.打开Git Bash,设置用户名,Email $ git config --global user.name "Your Name ...