【bzoj3162】独钓寒江雪】的更多相关文章

数独立集显然是可以树形dp的,问题在于本质不同. 假设已经给树确立了一个根并且找到了所有等效(注意是等效而不是同构)子树,那么对转移稍加修改使用隔板法就行了. 关键在于找等效子树.首先将树的重心(若有两个则加一个点作为唯一重心)作为根.这样任意极大等效子树(比如某两个等效子树里面的一部分等效,那么里面这一部分就不是极大的)一定有相同的父亲,否则我们所选的根是肯定存在一棵子树大小大于树的一半的,与重心性质矛盾.那么判等效就只需要考虑子树内同构了. 同构判断采取哈希.这里使用最简单的类似字符串哈希的…
独钓寒江雪 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3162 题解: 首先,如果没有那个本质相同的限制这就是个傻逼题. 直接树形dp就好. 那么如果加上那个限制呢? 我们发现,无论最后怎么本质相同,树的重心一定不变. 故此,从重心开始去重即可. 参考:https://www.cnblogs.com/zhoushuyu/p/9295759.html 代码: #include <bits/stdc++.h> #define N 5…
bzoj description 你要给一个树上的每个点黑白染色,要求白点不相邻.求本质不同的染色方案数. 两种染色方案本质相同当且仅当对树重新标号后对应节点的颜色相同. \(n\le 5\times10^5\) sol 首先考虑没有本质相同那个限制怎么做. 直接设\(f_{i,0/1}\)表示\(i\)点染成黑色/白色时子树内的方案数. 转移很简单:\(f_{i,0}=\prod_j (f_{j,0}+f_{j,1}),f_{i,1}=\prod_j f_{j,0}\). 先在问题在于本质不同…
题意 \(n\)阶树,求本质不同的独立集个数 做法 重新编号后重心是不变的,如果有两个重心,可以加个虚点 用树哈希判子树有多少个相同的子树,设某种有\(k\)个,如果原本方案数为\(x\)个 则方案数相当于解非负方程,为\({x+k-1\choose k}\)…
liaoliao四连做第一弹 1.bzoj3211: 花神游历各国 由于$10^9$以内的数最多只会被开方$10$次,所以我们可以用线段树维护然后剪枝.. #include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <cmath> #define LL long long using namespace std; const LL Ma…
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noip前的杂题训练,我也很无奈啊 做完了的扔最后,欢迎好题推荐 这么多题肯定是完不成了,能多做一道是一道吧 DP yyb真是强得不要不要的辣:http://www.cnblogs.com/cjyyb/category/1036536.html [ ] [SDOI2010]地精部落 https://www…
[BZOJ3162]独钓寒江雪(树哈希,动态规划) 题面 BZOJ 题解 忽然翻到这道题目,突然发现就是前几天一道考试题目... 题解: 树哈希,既然只考虑这一棵树,那么,如果两个点为根是同构的, 他们的重心相同,所以直接找出树的重心,以重心为根进行转移 提前预处理每一棵子树的哈希值,因为相同的子树是同构的,所以转移相当于是可重组合的计算. 对于存在两个重心的情况,分两个重心的子树同构还是不同构. 如果不同构则随便选择一个重心即可.如果同构,则建立一个虚点,然后\(dp\) 最后容斥一下即可.…
[BZOJ3162]独钓寒江雪 题解:先进行树hash,方法是找重心,如果重心有两个,则新建一个虚点将两个重心连起来,新点即为新树的重心.将重心当做根进行hash,hash函数不能太简单,我的方法是:将x的所有儿子的hash值排序,然后将这些hash值立方合在一起作为x的hash值. 进行完树hash后,我们考虑DP.首先不考虑同构,设f[0/1][x]表示选(不选)x时,在x的子树中选出独立集的方案数,则有 $f[0][x]=\prod f[1][y]+f[0][y]\\f[1][x]=\pr…
*题目描述: *题解: 树哈希+组合数学.对于树的形态相同的子树就一起考虑. *代码: #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #ifdef WIN32 #define LL "%I64d" #else #define LL "%lld" #endif #ifdef CT #define debug(...)…
题解: 求本质不同的独立集的个数 首先独立集的个数是很好做的 \(f[u][0/1]\)表示节点\(u\)不选/选的方案数 然后dp就是 \(f[u][0] = f[u][0] * (f[v][0] + f[v][1])\) \(f[u][1] = f[u][1] * f[v][0]\) 考虑怎么去重 不论把这个树怎么转或者以哪一个点为根 最后重心肯定不会变 所以我们可以把重心拎出来当根 一般在树上求本质不同的东西可以优先考虑重心 然后如果有两个重心(最多肯定只有两个==)那么这两个重心肯定由一…
题意 给出一棵无根树,求本质不同的独立集数模100000000710000000071000000007的值. n≤500000n\le 500000n≤500000 题解 如果是有根树就好做多了.然而无根树可以找重心作为根,转化为有根树. 那么考虑有根树的本质不同的独立集数怎么求. 直接dpdpdp就行了.用f[i][0]f[i][0]f[i][0]表示iii不选的独立集数,f[i][1]f[i][1]f[i][1]表示iii要选的独立集数. 转移的时候要考虑本质是否不同.做法是树hashha…
Description Input   Output 求一棵树编号序列不同的方案数: 令 $f[u],g[u]$ 分别表示 $u$ 选/不选 的方案数. 则 $f[u]=\prod_{v\in son[u]}g[v]$,$g[u]=\prod_{v\in son[u]}g[v]+f[v]$. 然而如果要求本质不同,那么那些子树结构相同的就会算重. 假设有 $k$ 个儿子树形态相同,每一个儿子可选的方案为 $h$. 则我们要求给每一个儿子都分一种方案的方案数. 即有 $m$ 个相同的盒子,有 $k…
qwq 首先,如果是没有要求本质不同的话,那么还是比较简单的一个树形dp 我们令\(dp[i][0/1]\)表示是否\(i\)的子树,是否选\(i\)这个点的方案数. 一个比较显然的想法. \(dp[i][0]=\prod (dp[p][0]+dp[p][1])\) \(dp[i][1]=\prod dp[p][0]\) 最后直接将一号点的答案加起来就好. qwq但是如果写一发,就会发现第二个样例就wei掉了 (因为题目要求本质不同) qwq 那么这个东西应该怎么做呢. 因为本质不同,所以对于\…
运行这个程序前需要先关闭Windows防火墙,Win7系统关闭防火墙的方法是在控制面板的“控制面板\系统和安全\Windows 防火墙\自定义设置”路径中,将“家庭或工作(专用)网络位置设置”和“公用网络位置设置”下面的选项都选到“关闭Windows防火墙(不推荐)”. 1.界面设计 左侧为发送数据的输入框,单击“发送数据”把数据发送到指定IP地址的指定端口号.(本例中,IP地址和端口号都被写死到代码中) 2.程序代码 using System; using System.Collections…
一.RSA与公钥加密系统的起源与影响. 为了更好地突出公钥加密系统相对私钥加密系统的优势,让我们从这两个问题开始: 这个世界上如果没有公钥加密系统会怎么样呢?全用私钥加密系统会出现什么问题呢? 首先,私钥密码系统中的密码,加密解密之间是存在共享性的,也就是说,会加密就能做到会解密,会解密也就能做到会加密. 如果私钥密码系统用来做数字签名,会发生什么呢?你只要告诉了别人验证你的数字签名的正确性方法(解密),就同时告诉了他们伪造这个数字签名的方法(加密).瞬间爆炸Orz. 其次,私钥加密系统需要有一…
第4章 序列的应用 4.1序列 序列是一块用于存放多个值的连续内存空间,并且按上一定顺序排列,每一个值(称为元素)都分配一个数字,称为索引或位置.通过该索引可以取出相应的值.例如,我们可以把一家酒店看作一个序列,那么酒店里的每个房间都可以看作是这个序列的元素.而房间号就相当于索引,可以通过房间号找到对应的房间. 在Python中,序列结构主要有列表.元组.集合.字典和字符串,对于这些序列结构有以下几个通用的操作.其中,集合和字典不支持索引.切片.相加和相乘操作. 4.1.1索引 序列中的每一个元…
一.序列:是一块用于存放多个值的连续内存空间,并且按一定顺序排列,可以通过索引取值 索引:从左到右的索引从0开始依次增加的正整数:从右到左的索引为-1开始的复数 切片(分片):一中获取序列中的元素的方法: sname[start:end:step]--sname:序列名:start:起始值:end:结束值(不包括):step:步长 序列相加:两个序列可以相加(只能同类型序列:列表+列表,元组+元组,字符串+字符串),被加的序列排在原来的序列后面 乘法:序列的乘法实际上就是把一个序列中的元素复制几…
参考:http://www.cnblogs.com/jzxx/p/5630516.html 一.原作者的这段话很好,先引用一下: Socket的Send方法,并非大家想象中的从一个端口发送消息到另一个端口,它仅仅是拷贝数据到基础系统的发送缓冲区,然后由基础系统将发送缓冲区的数据到连接的另一端口.值得一说的是,这里的拷贝数据与异步发送消息的拷贝是不一样的,同步发送的拷贝,是直接拷贝数据到基础系统缓冲区,拷贝完成后返回,在拷贝的过程中,执行线程会IO等待, 此种拷贝与Socket自带的Buffer空…
目录: 一. android使用ksoap2调用webservice 二. 异步调用 三. Android使用ksoap2调用C#中的webservice实现图像上传参考方法 四. 图像传输中Base64编码问题 一. android使用ksoap2调用webservice 这个话题很多文章中做过讨论,这里需要说明的一点,You can't do Network operations on the main thread. Checkout :http://developer.android.c…
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ1202 BZOJ1051 BZOJ1001 BZOJ1588 BZOJ1208 BZOJ1491 BZOJ1084 BZOJ1295 BZOJ3109 BZOJ1085 BZOJ1041 BZOJ1087 BZOJ3038 BZOJ1821 BZOJ1076 BZOJ2321 BZOJ1934 BZOJ…
打开文件用open函数 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) Open file and return a stream. Raise IOError upon failure. 重点关注两个参数: file:要打开的文件的路径,可以绝对路径或相对路径 mode:文件打开模式 打开模式 执行操作 ‘r’ 只读(默认模式) 'w'…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
[BZOJ3197][Sdoi2013]assassin Description Input Output Sample Input 4 1 2 2 3 3 4 0 0 1 1 1 0 0 0 Sample Output 1 HINT 题意:给你两棵同构的树,每个节点都有权值0/1,现在想改变第一棵树中部分点的权值,使得两棵树对应的节点权值相同,问最少改变多少节点. 题解:先考虑树hash+树形DP.树hash的方法同独钓寒江雪.设f[x][y]表示第一棵树中的x节点与第二棵树中的y节点对应时,…
一.条件语句 package main import ( "fmt" "io/ioutil" ) // if的条件不需要括号 func xx(i int) int { if i == 1 { return 1 } else if i == 2{ return 2 } else { return 0 } } func eval(a, b int, operator string) int { var result int switch operator { case…
1.对列表进行排序: (1)使用列表对象的sort()方法: 列表对象提供了sort()方法用于对原列表中的元素进行排序.排序后原列表中的元素顺序将发生改变.改变对象的sort()方法的语法格式如下: listname.sort(key=None,reverse=False) #listname:表示要进行排序的列表. #key:表示指定从每个元素中提取一个用于比较的键(例如设置”key=str.lower“表示在排序时不区分字母大小写) #reverse:可选参数,如果将其指定为True,则表…
首先建议张册测试用的表test,并使用fulltext说明将title和body两列的数据加入全文检索的索引列中: drop table if exists test; create table test ( id integer not null primary key auto_increment, title varchar(50), body longtext, fulltext(title, body) with parser ngram ); 然后往其中插入数据: insert in…
沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道就行了. BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ1202 BZOJ1051 BZOJ1001 BZOJ1588 BZOJ1208 BZOJ1491 BZOJ1084 B…
转载自:http://www.cnblogs.com/WTFly/p/5340617.html 运行这个程序前需要先关闭Windows防火墙,Win7系统关闭防火墙的方法是在控制面板的"控制面板\系统和安全\Windows 防火墙\自定义设置"路径中,将"家庭或工作(专用)网络位置设置"和"公用网络位置设置"下面的选项都选到"关闭Windows防火墙(不推荐)". 1.界面设计 最下方为发送数据的输入框,单击"发送数…
1.select 查询表中的数据 select * from stu: ---查询stu表所有的数据,*代表所有2.dual ,伪表,要查询的数据不存在任何表中时使用 select sysdate from dual; ----查询系统当前的时间3.concat 连接两个字符串为一个字符串 select concat('孤舟蓑笠翁','独钓寒江雪')str from dual; ---str为函数字段名(自取) 等价操作:|| (连接符) select '莫等闲,'||'白了少年头,'||'空悲…
实验报告 [实验目的] 1.掌握python中序列及序列的常用操作. 2.根据实际需要选择使用合适的序列类型. [实验条件] 1.PC机或者远程编程环境. [实验内容] 1.完成第四章 序列的应用 实例01-14,实战一到实战四. 实例01:输出每日一帖 在IDLE中创建一个名称为tips.py 的文件,然后在该文件中导入日期时间类,然后定义一个列表(保存7条励志文字作为每日一帖的内容),再获取当前的星期,最后将当前的星期作为列表的索引,输出元素内容. 代码如下: 1 import dateti…