摘要:马草AC了简直是各种爽啊,而且算法里只用了两次LIS,算法整体复杂度O(nlogn)真的是应了老乔那句至简至繁至简,思考了一整天,还是直接用两次LIS外加两个辅助数组就解决了问题思路就是,要真的深入地思考清楚这个问题,真的深入理解了LIS而不仅仅是套模板,套模板的结果就是把复杂度弄成O(n^2log...
阅读全文
摘要:dp经典关于这道题,我看了网上大量的资料,发现整体思路是对的,但是细节解释是错的(或者说不到位)Len = strlen(say); say是牛说的话,下面的word代表单词列表dp[i]表示从say中第i个字符开始,到第Len-1个字符(结尾处)这段区间所删除的字符数,初始化为dp[i]=len-...
阅读全文
摘要:第一次做二维DP,1A思路是状态压缩+枚举,压缩的方法是将第p至第q行的元素加和,然后求最大子序列和,就能得出这一情况下的最大子矩阵然后用两层循环按行去枚举矩形,就能得出结果了。求最大子序列和的时候要注意,子序列和并非一定>=0上代码 1 #include 2 #include 3 #include 4 using namespace std; 5 6 #include 7 #include 8 9 #define range 11010 int a[range][range];11 int b[range];12 13 int main()14 {15 int n;16 ...
阅读全文
摘要:先发两道水题,完全是凭着N多个月前积攒的经验写的,还有校赛的那道DP,我觉得出的蛮好~HDU 1231最大子序列和,需要标记子序列开始和结束的位置 1 #include 2 #include 3 #include 4 using namespace std; 5 6 #include 7 #include 8 9 #define range 1001010 11 int a[range];12 13 int main()14 {15 int k;16 while(scanf("%d", &k) != EOF && k!=0)17 {18 int f.
阅读全文