摘要:
//写动态规划的题目 要把主要问题提炼出来 这里的问题就是求area=(j-k+1)*a[i] 如果找到j k是解决这个题目的关键 这里暴力求肯定是要超时的 这里用dp来优化#include<stdio.h> #include<string.h> __int64 a[100005],dp[10000 阅读全文
摘要:
看来大佬的dp思路,在这里就简单的总结下吧。 拿到一个问题,先得考虑是否适用dp算法。 1,找到最优解的结构,看其子问题是否也满足最优化(子问题最优化问题) 2, 看时候有子问题重叠 确定一个问题可以用dp来解决以后开始分析 1,用递归的定义来划分解的结构。 2,选择合适的数据结构来存放子问题的最优 阅读全文
摘要:
对于全排列枚举的数列的判重技巧 1:如果查找的是第一个元素 那么 从0开始到当前的位置看有没有出现过这个元素 出现过就pass 2: 如果查找的不是第一个元素 那么 从查找的子序列当前位置的前一个元素对应原序列的位置一直到查到到元素的位置看是否出现过。,。 出现过就pass 2610 2611 阅读全文
摘要:
还需要再消化一下这个算法。。 今天没有时间了,, 六级过了 就有大把时间 快活啊!#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<set> using namespace std; int 阅读全文
摘要:
mark: 题目有字串匹配的过程 有两点 1.为了高效的匹配子串 可以把所有的子串都预处理进去 然后字典树计数就放在最后面 2.在同一个母串处理自串的时候 会有重复的时候 比如abab 这里去重用个标记位就可以了(一开始用map 结果超时了,,, 果然还是想太简单了) 上代码 阅读全文
摘要:
#include<cstdio> #include<iostream> #include<string> #include<cstdlib> #define maxn 2 #include<queue> using namespace std; struct Tri { Tri*next[maxn] 阅读全文
摘要:
#include<cstdio> #include<iostream> #include<string> #include<cstdlib> #define maxn 10 using namespace std; struct Tri { Tri*next[maxn]; int num; }; T 阅读全文
摘要:
这道题目由于每走一步的时候毛毛球是可以变换的 换言之 主体不唯一 所以这里搜索的设计有变化 再就是几个回溯的过程要注意。,。 小心使得万年船 阅读全文
摘要:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int r,c,s,flag; int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}}; char mapp[25][ 阅读全文
摘要:
#include <map> #include <cstdio> #include <iostream> #include <string> #include <cstring> #include <algorithm> using namespace std; map<string,string> 阅读全文