![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
USACO
liaoxiyan123
这个人不懒,但什么都没写。
展开
-
[USACO16OPEN]248 G(新手区间DP)
题目描述 给定一个1*n的地图,在里面玩2048,每次可以合并相邻两个(数值范围1-40),问最大能合出多少。注意合并后的数值并非加倍而是+1,例如2与2合并后的数值为3。 输入格式 一个正整数n(2<=n<=248),以及n个正整数ai{a_i}ai(1<=ai{a_i}ai<=40). 输出格式 求合并后的最大数字. 思路 用f[i][j]{f[i][j]}f[i][j]来表示区间i~j可合出的最大数字,只需再用一个DP方程转移即可:(很显然是时间复杂度O(n3{n^3}n3原创 2020-07-23 11:14:02 · 145 阅读 · 0 评论 -
[USACO16OPEN]Field Reduction S[单调队列]
这道题可以通过枚举暴力解决,复杂度O(N)。 思路:枚举每个点并计算 l[i]-(从1到i-1的最大可行长度),r[i]-(从i到n的最大可行长度), 并统计出max(l[i])和max(r[i]), 最后答案为ans=max(max(l[i])+max(r[i])), 以下是代码: #include<bits/stdc++.h> #define N 100005 using namespace std; int n,k,l[60010],r[61000],ll[61000],rr[61000]原创 2020-05-15 21:42:40 · 262 阅读 · 0 评论