随笔分类 - ACM/ICPC
摘要:这场比赛表现可以说不是十分理想,如某大牛在宁波说的在茫茫水题中迷失了方向,并且因为稍微nc的缘故使本来可以做出的题目到最后都WA地莫名其妙。同样感叹下HDU果然是新人辈出,难道真的是自己老了么,被07、08的虐得死去活来的- -于是我这茶几上又多了一份悲剧.... 下面是赛题的解题思路: A:傻傻一个模拟 千万不要用double.sample是骗人的- -用int来模拟maxvalue B:把等式...
阅读全文
摘要:众所周知,DLX对于解决精确覆盖问题有非常出奇的效果,但我们现在考虑一种叫做重复覆盖的问题。其实这一问题是我们看到DL的论文第一部分时,对Dancing Links用法的初次想法。它就是单纯利用了链表的性质进行的模拟(请允许我这么说),但抽象而言,就是对0/1矩阵进行如下操作:选取一些行,使所有的列都有‘1’(想想与精确覆盖的不同之处)。在实现上,不需要精确覆盖的排他性操作...
阅读全文
摘要:数独是一个非常经典的智力游戏。它的游戏的规则是这样的:在一个9x9的方格中,你需要把数字1-9填写到空格当中,并且使方格的每一行和每一列中都包含1-9这九个数字。同时还要保证,空格中用粗线划分成9个3x3的方格也同时包含1-9这九个数字。如下例题:其解为: 在计算科学理论中,这一类问题的解答被称之为NPC问题中的Hitting Set Problem,中文名应该叫做碰集问题。该类问题可以通过转换成...
阅读全文
摘要:近日闲来无事,通宵写写代码,啃了下Knuth大师的论文,实在惊讶于Dancing Links的优美,于是不免心血来潮,用面向对象的方法写了近400行,结果发现很多安全隐患,遂改了下用面向过程的方式,在HUST上搞了那道1017,还不错232ms,把主要模版代码发下,希望大家指正。[代码]
阅读全文
摘要:第一次写归并排序+线段树 感觉受益颇深这道题是求在[s,t]区间内的第k大元素 首先使用归并排序可以每次得到任意2^n区间内的有序状态在此基础上使用线段树分离区间最后二分有序数列上的元素,直到查找到的元素符合条件为止.[代码]
阅读全文
摘要:从哈尔滨到合肥,每一站都是惨淡收场,对不起自己,对不起队友,对不起学校,对不起大家的期待,终于,终于到了跟ACM/ICPC再见的时候,梦里经常出现这样的场面,真的很不舍,为此付出了很多的努力,收获却聊聊无几,或许我借口自己身在弱校,可以逃避许多问题。但我知道这绝对不是什么理由,从接触ACM到现在,我一直知道我想要的是什么,并为此而不懈地奋斗着,放弃了很多,至少这几年来没有真正地做过自己喜欢的事,没...
阅读全文
摘要:觉得这道题目蛮有意义的首先求割边 缩图成树 计算叶子结点与根结点连通所需要添加的最少边既可[代码]
阅读全文
摘要:比较恶心的逼近 首先对2组数据排序然后在形式上化作N*N的阵 使用DP变量保存查找深度每次查询如果key值较小 左移一次 则排名增加(n-dp) 否则深度+1使用二分逼近返回ans 注意逼近时计算k的上下界代码如下:[代码]
阅读全文
摘要:题目意思 求解是否能够到达出口 如果能 求解到达时的最大携带价值首先使用广搜搜出包括起点和终点在内 所有特殊点之间的最短距离 建立一个隐式图然后使用DFS枚举各个组合 然后求出最大值 注意DFS的强剪以下是代码:[代码]
阅读全文
摘要:本来是用字典树的 用了很多种优化竟然都超时 那就只好用hash了 对所有的串进行重构 化为64位整型 然后使用位运算枚举所有K长串 然后用hash存储 使用线性扫描法 还可以优化代码如下:[代码]
阅读全文
摘要:题目意思有点不清 其实是可以在原地停留的 注意桥的变化与时间相关 用方向数组压缩代码 OK 以下是实现 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include using namespace std; ...
阅读全文
摘要:自己写了半天 WA了很多次 后来就请教了留上星 题目意思就是需要使用到并查集的 然后进行顶点着色似的枚举 很简单的枚举 不过暴力的实在不会 只好重新学习学习了 代码如下 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include u...
阅读全文
摘要:题目意思 是任何只有一个字母不同的单词可以进行改变 最后要转换成全部不同的单词 根据理论每次转换的最小步长应该为单词长度 题目要求输出最小字典序的序列~~~ 只要对输入的单词进行排序就能保证 然后首先建2张图 一张是只改变一个字母能变换的路径图 一个是都不相同单词之间的图 很好 下面就是BFS 使用一个数组保存父亲节点 找到后输出就可以了~~~ 注意下BFS如果采用逐层遍历的话 ...
阅读全文
摘要:很easy的一个BFS 注意强剪一下就过了~~6分钟敲完代码 调试5分钟 诶 自己还是太菜了~~~ 以下是代码 HDU的服务器可能有问题 每次提交时间都不一样 最高的是765MS 还是小号 郁闷 当然还可以进一步优化 比如位运算处理 可能会快一倍以上时间吧 懒得写了 反正也不是太卡时间 Code highlighting produced by Actipro CodeH...
阅读全文
摘要:很经典的一道题目 几乎不用建模了 用hash记录ID号 然后套模版就OK了~~~ 以下是代码: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include using namespace std; #defin...
阅读全文
摘要:稳定婚姻是二分图匹配的一种 原模版几个变量有问题 进行过修正 贴代码如下: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->#include #include using namespace std; #define MAX 1010 ...
阅读全文
摘要:使用四维数组进行状态判重 注意要用scanf("%s“)或者gets 用cin莫名其妙WA 我查了30分钟错都没查出 改一下就好了 FUCK~~~ 这道DK有更有效率的BFS 所以这次2个代码都贴上 任君瞻仰 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighl...
阅读全文
摘要:根据题目意思 很容易得到一个二分的概念 即只要确定了一个格子 就有能再取的格子和不能再取的格子 2种情况 可以把图化作二分图 相当于在能取的部分再取然后求取的和最大 引入最大流的概念 首先对图进行黑白染色(我们现在设i+j为奇数为黑) 然后连接所有黑的格子旁的白格子 将所有白格子连入虚拟的汇点 将所有黑格子连入虚拟的源点 用数的总和扣去求出的结果(即总和-最大流) 代码如下: Cod...
阅读全文
摘要:题目意思是检测最小奇数环 并输出结果 对于该类题目 分析了下复杂度 可以对各个点进行一一枚举 对于每次的枚举 记录访问到该点时的深度 当下一次访问时只要将当前深度加上访问到该点的深度就能计算出总共所用去的点数 使用2个队列 以形成逐层遍历(保证了路径的不重复) 感觉很不错 每次枚举计算出的最小值可以作为下一次的阀值 从而达到了缩小规模的目的 OK 下面是代码啦.... Code ...
阅读全文