摘要:
题目来源:蓝皮书P331 ·这道题使得我们更加深刻的去理解Dijkstra! 在做惯了if(dis[u]+w #include #include #include #define go(i,a,b) for(int i=a;i-1;i=e[i].next,v=e[i].v) #define mem(a,b) memset(a,b,sizeof(a)) #define ll long ... 阅读全文
摘要:
题目描述 在如今的网络中,TCP 是一种被广泛使用的网络协议,它在传输层提供了可靠的通信服务。众所周知,网络是存在时延的,例如用户先后向服务器发送了两个指令 op1 和 op2,并且希望服务器先处理指令 op1,再处理指令 op2;但由于网络时延,这两个指令可能会失序到达,而导致服务器先执行了指令 op2,这是我们不希望看到的。TCP 协议拥有将失序到达的报文按顺序重组的功能,一种方法是给每一个报... 阅读全文
摘要:
·算法步骤: ·实际应用说明:(POJ-1741) 给你一棵包含n(n<20001)个结点的带权无向树。 给定一个limit(limit<10^9),并读入每条边的端点和权值。 令dis(u,v)为两点之间的路径长度,输出对于任意u,v的dis(u,v)的值小于等于limit的组数。 ·从简单情况入手: 这个树只有两层,那么每个点之间的路径必定含有根节点(如图): 使用一种处理方法来快速求解:... 阅读全文
摘要:
题目大意: ·给你一个n,表示输入n个白点和n个黑点(输入每一个点的坐标)。现在需要将各个白点和各个黑点一一用线段连接起来,需要满足这些线段不能够相交。 ·特色: 我们如何保证线段间不相交。 ·分析: 由“黑白”可以想到用二分图匹配(最大流问题亦可)。用到一个神秘结论,可以巧妙地将“相交”和“不相交”转化为具体数值大小关系,进而转化为权值。结论为:【四边形两条对角线的和必定大于它任何一组对边的和】... 阅读全文
摘要:
(一)数位DP模板 ·LIS的数位DP: ·含b进制数个数+数形结合的数位DP ·平衡数的数位DP: (二)网络流问题 ·Edmonds_Karp:(见书)·Dinic(见书)·ISAP(见书)·例题详见大米饼博客 (三)树链剖分 ·基本操作小题: 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE ... 阅读全文
摘要:
·为了分析方便,可以先做一个题目简化。去掉“钥匙”这个条件,那么就是一个BFS或者SPFA……现在加上该条件。如本题只给出最多两种钥匙,当然你可以继续坚持BFS等方式,时间不会太差。但是一旦钥匙种类上升至15的时候,就有太多情况需要处理(光说你写BFS的if就是很长的过程,但个人认为时间复杂度依旧能过这道题)。 ·如图是简化版本的决策方式(为与后文呼应,用SPFA): 大方块是整个地图。小方块是... 阅读全文
摘要:
·为了有助于你读后文,在写题前先列出一些大米饼的代码习惯: 一个提醒:所有的ADD函数无特殊说明均如图:(没有w就直接跳过) 以及: go(i,a,b)=====for(int i=a;i自己有1个以上的这种大米饼,才会去交换。 换回来的大米饼必须是自己以前没有的。 那么奇怪的是,这种关系放入最大流的图中,该怎样构建呢?好像是必须有东西一边进去,然后另一边给你吐出点其他的东西,这些... 阅读全文
摘要:
这道在没加读入优化时间在20s左右的题终于在大米饼两天的死缠烂打、鬼混、乱整乱撞后艰难地AC了。但惋惜的是,大米饼一号代码其实更加简洁,但至今找不出BUG,我将它放在下面,也许有一天从远方来的另一个大米饼会拯救它。让我们一起念出这道题的关键字: Kurskal,LCA倍增,Kurskal重构树,dfs序,主席树。 比较新鲜的是重构树,它有一些美妙性质。 红色的是由边化成的节点。用Kurskal建... 阅读全文
摘要:
在大米饼的帮助下,终于找到了大米饼程序中如同大米饼一般的错误! 考点在问题转化,然后就跑一个你喜欢的最大流算法(二分图可以啵?) 再来一个例子吧: 【纯手绘大米饼图片】 其中有的边权是1,否则就是inf,所以就将问题转化为求超级源点(0)到超级汇点(13)的最大流。我依旧使用ISAP,很开心用ISAP做完了所有老师要求用迪尼克或者艾德蒙·卡普算法做的几个题目,开心点在哪里呢…在乎大米饼之中也。... 阅读全文
摘要:
不可以理解的是,测评站上的0ms是怎么搞出来的。 这一题在建立超级源点和超级汇点后就变得温和可爱了。其实它本身就温和可爱。对比了能够找到的题解: (1)艾德蒙·卡普算法(2)迪尼克算法(3)改进版艾德蒙·卡普算法(MY METHOD) 不去管那个0ms的吧,那么(3)号算法最为美妙【它的别名是:IS 阅读全文