题目链接:http://acm.uestc.edu.cn/#/problem/show/1226 题目大意就是构造一个行列和每个角的2*2都是1234的4*4矩阵. 用dfs暴力搜索,不过需要每一步进行判断是否已经出现了重复,如果最后再判断的话复杂度有点高. 代码: #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring>…
题目链接:http://acm.uestc.edu.cn/#/problem/show/1215 题目大意就是问一个2*2的矩阵能否通过旋转得到另一个. 代码: #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <algorithm> #include <set> #in…
题目链接:http://acm.uestc.edu.cn/#/problem/show/1218 题目大意就是求n根木棒能不能放进一个容器里,乍一看像01背包,但是容器的两端可以溢出容器,只要两端的木棒的重心还在容器中即可. 首先由于木棒可以两端溢出.一端溢出和不溢出三种情况,所以有状态p(flag, v)表示溢出个数为flag的容量为v的情况下的最值. 于是有: p[2][j] = max(p[2][j], p[2][j-a[i]]+v[i]); p[2][j] = max(p[2][j], …
题目链接:http://acm.uestc.edu.cn/#/problem/show/1217 题目大意就是求一个序列里面长度为m的递增子序列的个数. 首先可以列出一个递推式p(len, i) = sum(p(len-1, j)) (a[j] < a[i]) p(len, i)表示以第i个结尾的长度为len的子序列的个数. 但是如果按照递增子序列的思想,然后直接弄的话,复杂度是n*m*n的. 如果需要优化的话,可以优化的地方就是那个求sum的过程. 把p数组映射到树状数组,那么求和的过程就能在…
题目链接:http://acm.uestc.edu.cn/#/problem/show/1226 题目就是构造一个对称的串,除了中间的那个只有1个,其余的两边都是对称的两个,自然答案就是2*n-1. 代码: #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <algorithm> #…
题目链接:http://acm.uestc.edu.cn/#/problem/show/1219 题目大意是给了一张图,然后要求一个点通过路径回到这个点,使得xor和最大. 这是CCPC南阳站的一道题.当时只读了题目发现并不会. 这是一个典型的xor高斯消元. 需要预先dfs出所有的独立回路. 然后线性组合独立回路的xor和,使得ans最大. 最近做过类似的题目,直接粘代码. 代码: 方法一:线性基(O(63n)) #include <iostream> #include <cstdio…
http://acm.hdu.edu.cn/showproblem.php?pid=5667 这题的关键是处理指数,因为最后结果是a^t这种的,主要是如何计算t. 发现t是一个递推式,t(n) = c*t(n-1)+t(n-2)+b.这样的话就可以使用矩阵快速幂进行计算了. 设列矩阵[t(n), t(n-1), 1],它可以由[t(n-1), t(n-2), 1]乘上一个3*3的矩阵得到这个矩阵为:{[c, 1, b], [1, 0, 0], [0, 0, 1]},这样指数部分就可以矩阵快速幂了…
http://219.244.176.199/JudgeOnline/problem.php?id=1215 这是这次微软和百度实习面试的一道题,题目大意就是:有一个n*m的矩阵,已知它每一行都是不严格递增的,而且每一列都是不严格递增.给你一个数k,请你判断k是否存在于矩阵中. 微软面试的时候没有想到很好的做法,后来想了好久,发现就是一个在矩形上的二分.对于一个矩形,我选取中间一列mid列二分,那么能得到一个index,如果a[index][mid]不为k,那么index以上的都小于k,inde…
题目链接:http://219.244.176.199/JudgeOnline/problem.php?id=1214 这是这次微软实习面试的一道题,题目大意就是:有一个n*m的矩阵,已知它每一行都是不严格递增的,而且每一行的任意数都比前一行的任意数大或等于.给你一个数k,请你判断k是否存在于矩阵中. 当时想到的方法是二分第一列,就能确定k位于哪一行,然后二分这一行,得到是否存在k.二分第一列的复杂度是O(logn),二分那一行的复杂度是O(logm),所以总的复杂度是O(logn+logm).…
Description In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23333, or 233333 ... in the same meaning. And here is the question: Suppose we have a matrix called 233 matrix. In the first line, it would be 233, 233…