摘要: 「BZOJ2654」tree 最小生成树+二分答案。 最开始并没有觉得可以二分答案,因为答案并不单调啊。 其实根据题意,白边的数目肯定大于need条,而最小生成树的白边数并不等于need(废话),可以二分将每条白边的权值+mid,这样就可以控制最小生成树中白边的条数, 对于一个mid,将所有的白边权 阅读全文
posted @ 2019-07-12 21:40 Al_Ca 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 一直不会打……今天补上 阅读全文
posted @ 2019-07-12 17:30 Al_Ca 阅读(205) 评论(0) 推荐(0) 编辑
摘要: void tarjan(int x) { dfn[x]=++cnt;low[x]=cnt; vi[x]=1; stack[++top]=x; for(rint i=f(x);i;i=n(i)) if(!dfn[v(i)])tarjan(v(i)),low[x]=min(low[x],low[v(i)]); else if(vi[v(... 阅读全文
posted @ 2019-07-12 17:05 Al_Ca 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 某次考试因为不会写板子,自己造出来的,所以有点丑…… 阅读全文
posted @ 2019-07-12 17:04 Al_Ca 阅读(119) 评论(0) 推荐(0) 编辑
摘要: int getf(int x){return (f[x]==x)?x:f[x]=getf(f[x]);} void hb(int x,int y){x=getf(x),y=getf(y),f[y]=x;} inline void add(int u,int v,int w,int c); int kruskal() { int num=0;ans=0; for(int i=0;i... 阅读全文
posted @ 2019-07-12 17:02 Al_Ca 阅读(76) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2019-07-12 06:25 Al_Ca 阅读(5) 评论(0) 推荐(0) 编辑
摘要: [HAOI2010]软件安装 开始没有看懂题,以为就是个树形依赖背包,打完之后W40,然后才发现它会有还,要用tarjan缩完点后跑背包,要建立一个虚拟节点0连接所有的子图(注意连接的位置)。 但是有个细节卡了我好长时间: 错误示范: 正确代码: 在缩点是记录每个scc的入度,0直接和入度为0的sc 阅读全文
posted @ 2019-07-12 06:22 Al_Ca 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 「HNOI2015」菜肴制作 这道题想到了其实还挺水的,一开始我直接用小根堆拓扑然后就爆0了,然后我又用十万个堆搜索,T30,还是xkl告诉我要倒着拓扑。 首先要建反图,对于入度为0的点,较小的点先输出所以要优先拓扑大的点,这样就保证了大的点及其子树(其实并不是树,这样好理解点)都存在数组前面,再倒 阅读全文
posted @ 2019-07-12 06:13 Al_Ca 阅读(245) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2019-07-12 06:04 Al_Ca 阅读(2) 评论(0) 推荐(0) 编辑
ヾ(≧O≦)〃嗷~