枚举指的是枚举矩阵的上下界,然后根据p0, p1, p2的关系去找出另外的中间2个点。然后需要记忆化一些地方防止重复减少时间复杂度。这应该是最关键的一步优化时间,指的就是代码中to数组。然后就是子矩阵的一个计算了,需要用二维前缀和预处理数据,然后判断的时候直接O(1)查询就好了。 ...
分类:
其他好文 时间:
2018-10-15 01:17:39
阅读次数:
176
A - Rikka with Nash Equilibrium 题意:构造一个$n * m$的矩阵,使得$[1, n * m]$ 中每个数只出现一次,并且纳什均衡只出现一次。 思路:从大到小的放置,每一个都可以拓展一行拓展一列或者放在已经拓展的行列焦点,用记忆化搜索/dp即可 1 #include< ...
分类:
其他好文 时间:
2018-10-12 23:59:59
阅读次数:
323
棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16263 Accepted: 5812 Description 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割, ...
分类:
其他好文 时间:
2018-10-12 23:36:37
阅读次数:
176
一.DFS(深度优先搜索) 过于水略过。 二.BFS(广度优先搜索) 同上。 三.记忆化 记忆化搜索,就是我们的状态会重复利用,为了防止状态的重复计算耗费不必要的时间,我们可以把这个状态的结果记录下来,然后查询表中的结果就行了。 一般来所,记忆化搜索是和DP等价的。如果递推的DP不好写,可以考虑用记 ...
分类:
其他好文 时间:
2018-10-10 20:15:40
阅读次数:
166
传送门 这对抗搜索是个啥玩意儿…… 首先可以发现每一行的棋子数都不小于下一行,且局面可由每一行的棋子数唯一表示,那么用一个m+1进制数来表示当前局面,用longlong存,开map记忆化搜索 然后时间复杂度的问题,rqy这样说的 然后这个对抗搜索的话……个人理解就是因为要最大化分值的差,所以在一个人 ...
分类:
其他好文 时间:
2018-10-06 12:10:04
阅读次数:
265
A.Phone Numbers 题意:给你n个数字,每个数字最多只能用一次,问你最多能组成以8开头的11位电话号码有多少个 思路:模拟即可,注意char数组读入是从0下标开始的(在这里被hack了...) 1 #include<bits/stdc++.h> 2 int main() 3 { 4 in ...
分类:
其他好文 时间:
2018-10-05 21:07:31
阅读次数:
257
题意:给你一个长度为1000的串以及一个数n 让你将串中的‘?’填上数字 使得该串是n的倍数而且最小(没有前导零) 题解:dp,令dp[len][mod]为是否出现过 填到第len位,余数为mod 的状态(dp=0 or 1) 用记忆化搜索来实现,dfs返回1或0. 如果搜到最后一位并且余数为0,返 ...
分类:
其他好文 时间:
2018-10-05 20:23:00
阅读次数:
176
Description 我们知道人民币有1、2、5、10、20、50、100这几种面值。 现在给你 n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。 比如4元,能用4张1元、2张1元和1张2元、2张 2元,三种表示方法。 Description 我们知道人民币有 ...
分类:
其他好文 时间:
2018-10-05 18:58:13
阅读次数:
181
题目链接:http://poj.org/problem?id=3311 学习博客:https://blog.csdn.net/u013480600/article/details/19692985 Hie with the Pie Time Limit: 2000MS Memory Limit: 6 ...
分类:
其他好文 时间:
2018-10-05 15:08:57
阅读次数:
170
P1278 单词游戏 "传送门" Sol: 枚举词典中的每个单词,然后跑DFS。再加个记忆化就不会T了。 AC Code: include include include using namespace std; const int N = 16 + 4,M = 100 + 10; int n; c ...
分类:
其他好文 时间:
2018-10-05 13:48:49
阅读次数:
136