我又回来啦
第一次尝试使用markdown文本,可能编辑不好,见谅咕咕咕
(这个网站里有全部蓝书的题目,good)
咳咳下面步入正题,关于这种题目,看到的第一眼应该能想到相当于动规的递推,但是要求边界如果直接dfs,30000的数据不知道你家的栈能不能~受~的住
所以这个题目提供了一个很好的思路,就是先求出拓扑序然后反过来一个一个求,这样可以保证求当前节点数据时(小于等于30000不用longlong)所用到的节点都以经算好了,就这么简单
就这么简单??
你好好考虑过动归方程了吗?
f(x)={x}并(所有f(y)的并,存在有向边(x,y))
为甚不是加??
因为有可能会有重复。比如3->4,2->4那直接加起来,4就会算两次
怎么破??
主角闪亮登场!!
状压
用N位二进制数,反之一个点到其他点只有能与不能
1就是能呗,2就是不能呗
实现:
- 数组实现(不够装逼)
- bitset!
一直不知道bitset怎么用
今天先码几个呗(~嘤嘤嘤~)
1:定义
bitset名称
bitset名称[数组大小]
2:运算
假设有bit[30001]
可以直接赋值bit[1][1]=1;
就是第一个1位为1
可以直接bit[1]|bit[2] (全部按位或)
先到这里,走了,下次再补吧 19.12.15 20.14
来源:https://www.cnblogs.com/Q-M-double-j/p/12045688.html