摘要:
2015-02-1504:22:53思路:一道比较明显的字典树... 看起来数据会比较大,所以用静态版Trie比较保险。 把所有的初始串读进Trie中,然后就是Dfs来枚举哪一位不一样了。 1 #include 2 #include 3 #include 4 #include 5 #inc... 阅读全文
摘要:
2015-02-0911:20:50思路:比较裸的树上倍增,用的二分倍增。 至于距离的计算,只要用dis数组记录下每个节点到根的距离,然后u点和v点之间的距离就是:dis[u] + dis[v] - 2 * dis[lca] 嘛... 要敲扩栈命令喔~ 1 #pragma comment(li... 阅读全文
摘要:
2015-02-0908:49:30小结:无意间听杰哥说起欧拉素数筛法,今天把它和Era..筛法做了个比较。(时间已经算上memset耗时) (耗时单位:秒) 欧拉筛法小结:欧拉筛法基于的是每个合数必定有其最小素因子,所以让每个合数只被这个最小素因子筛一次(Era筛会重复筛) (这... 阅读全文
摘要:
2015-02-0816:56:11思路:大场!6500+人... (Orz.. 涨分降分都爽飞,TAT概率题好多) Rank:911(rating:1853(-9)).... 这个rank让我想到了某恐怖袭击?... 改成了类似ACM的赛制,每个题目可能有多个测试点。只搞掉了A,B1,B2,G... 阅读全文
摘要:
2015-02-0721:34:53总结:这场开场有点慢了... 还好前三题都是可做题。搞了三题+1hack,rank30。A:因为是幂的比较,所以考虑到两边取log,然后直接比较即可。但是卡了下精度,要先看是否相等(fabs() 2 #include 3 #include 4 #include... 阅读全文
摘要:
2015-02-0702:10:27 题目很有欧洲赛区的风格... 模拟赛过程不太顺利,习惯于国内的 技巧 and 算法 式解题,而忽略了计算机的最大优势:高速计算,也就是“暴力”! 然后数学题居多...A -Murphy's Law(Ural 1800): 物理题。注意一下单位,l(cm),... 阅读全文
摘要:
2015-02-0600:44:25思路:神奇的网络流题... 之前cf某题也是类似的网络流,不过是相加为奇数的情况。 这一题要求相加为素数,其实也是同理的,素数必定为奇数嘛... 那么只要将奇数放在左列,偶数放在右列,然后加一个源点和所有左列点相连,容量为2,加一个汇点和所有右列点相连容量为2... 阅读全文
摘要:
2015-02-0316:12:22思路:比赛中用暴力过掉的....后来发现正解是DP... First,我们发现只要找出k个数,使得Gcd(num1,num2,...,numk) = 1,就能达到每一个点。 简证:如果我们只考虑两个数x,y。那么若 ax + by = 1 有整数解组a... 阅读全文
摘要:
2015-02-0315:41:00思路:比较明显的拓扑序问题。 扫描1~n-1,处理str[i]与str[i+1]第一个不相等的字符,建边。 然后就是跑一遍拓扑序,观察能否找满26个字母。 注意:坑点在于如果str[i+1]是str[i]的前缀,那么肯定是impossible! 1 #inc... 阅读全文
摘要:
2015-01-3100:59:37思路:一道经典的带权并查集。 可能比较难想到用带全并查集做... 但是如果我们定义sum[i]为前i个点中1的个数,那么每个区间[a,b]中1的个数的奇偶性就可用sum[b] - sum[a - 1]的奇偶性表示。 又由于只用考虑奇偶性,因此我们不妨让sum[... 阅读全文
摘要:
2015-01-3016:49:47思路:这种字典型的题很容易想到要用字典树... 其实这题的解法非常多,KMP+DP,字典树+DP,哈希+DP,AC自动机+DP。。基本就差在如何处理字符串。可见这道题目的强大之处----多解! 本弱采用KMP处理字符串。。(数据再BT一点就只能用AC自动机做了... 阅读全文
摘要:
思路:数据范围很小,考虑用状压来做...这类网格放东西问题其实dp大概都可做。 把问题转化为蜘蛛移动后,每个点上下左右和本身至少有一个网格有蜘蛛。 首先取n,m的较小值作为列数,较大值作为行数,对每行进行状压(即用一个二进制数表示),0表示没有蜘蛛,1表示有蜘蛛。 用dp[i][j][k]表示... 阅读全文
摘要:
2015-01-2910:58:56思路:和大白书里的例题(uva10054)很像。 以两个字符为一个节点,那么每个字符串(3个字符)就包含了两个节点和一条有向边,比如:abc含义:ab->bc,我们考虑把两个字符看成一个数,由于ASCII码有128位(86年)所以用一个130进制的数来表示两个字... 阅读全文
摘要:
2015-01-2909:38:25思路:一道很好的DP题,感谢JayYe的耐心指导~ 一开始考虑了差分约束...没想出来。。。 考虑区间DP,关键在于dp定义,我们定义dp[i][j]为第i个~第j个括号对形成一个封闭的匹配系统的可行性(也就是说i~j个括号对已经匹配,且没有除i~j以外的括号... 阅读全文
摘要:
2015-01-2613:03:58思路:数位DP基础题。 算出1~m中的可用车牌数减去1~n-1的可用车牌数。 采用记忆化搜索解决,从高位开始往低位考虑,参数有三个:(1)当前放哪一位(2)前一位是什么数(就是比它高一位的数)(3)是否已经比当前范围数小。 注意:当前位不能放4,如果前一位为... 阅读全文
摘要:
2015-01-2500:59:14思路:解法1:可以暴力预处理出每个点的答案...(当然维护一个正方形框可以优化这个过程)... 解法2:建立二维线段树,然后查询... 解法3.... ?解法1: 1 #include 2 #include 3 #include 4 #includ... 阅读全文
摘要:
2015-01-2403:16:28思路:仅div2场,4000+人.... 为了模拟div1气氛,先开了C,发现就是找规律乱搞....不幸细节写错wa两发,30+min才过的。。之后快速搞定了A、B。 E题的话...知道就是个双权最短路...硬是被我写成记忆化搜索...后来才发现不是DAG,不... 阅读全文
摘要:
2015-01-2321:00:44思路:用逆波兰式计算算术表达式。 总结下逆波兰式步骤: 建立逆波兰式数组,以及操作符stack,从头开始扫描表达式 (1)若是数值,则加入数组末尾 (2)若是操作符,那么和stack中栈顶操作符进行对比 (i)如果当前操作符是'(',... 阅读全文
摘要:
2015-01-1901:23:28思路:嘛...其实只要发现d的变化范围不超过300(准确来说只要使1+2+3+....+k>30000,k就是范围)就行了。 用记忆化搜索,其中一个参数是d偏离最开始的值的大小。 1 #include 2 #include 3 #include 4 #in... 阅读全文
摘要:
2015-01-1815:48:24思路:用1000*10000的01矩阵来表示数是否存在。 直接用数组显然存不下,那么考虑用30+个int型数去存每一列,以其二进制位来表示0、1,31*33 > 1000,最多用33个整数即可,将时间和空间复杂度将为33 * 10000。用bitset实现: 1... 阅读全文