题目链接:

CodeForces255C.


题目大意:

看起来题目给的公式很复杂,其实就是找最长的 1,2,1,2 类似这样的最长子序列.
数据小于4000.


解题过程:

  • 看到这个题首先就想到了用DP来做,毕竟正在刷DP的专题,刚开始想着这个题类似最长公共子序列那样,然后想了一个多小时也没结果,最后比赛快结束的半小时想起来这个和最长上升子序列有点像(后来发现也不是)。

  • 比赛完后想到了一个状态转移方程(错误的)用两个一维数组,一个用来记录以每一个数为最后一个数的最大长度,另一个储存最大长度的情况下的上一个数。
    错误的状态转移方程: a[i] = a[j] + 1 (a[i] == b[i])
    显然是错误的,于是我还考虑了下最长有多种情况的情况,用set储存上一个数,还是错误(毕竟想法就不太对)。

  • 于是隔了一天还是没想起来,于是百度了下题解,找到了一个不错的博客:题解
    可以看出来这篇博客风格也照抄了一下233,分析的很清楚,然后自己拿纸模拟了一遍,感觉这么简单的题怎么没想出来……


分析过程:

  • 用a[i][j]二维数组储存状态,i代表以第几个数结束,j代表倒数第二个数。
  • 状态转移方程:dp[i][j] = dp[j][k] + 1 (a[k]==a[i])
  • 看巨巨的题解K在状态转移的过程中就可以找到了。

AC代码:

#include <iostream>
#define MAX 4123
using namespace std;int data[MAX];
int dp[MAX][MAX];int main()
{int n;cin >> n;for (int i = 1; i <= n; i++){cin >> data[i];}int ans = 1;for (int i = 1; i <= n; i++){int k = -1;for (int j = 1; j < i; j++){if (k == -1)dp[i][j] = 2;elsedp[i][j] = dp[j][k] + 1;if (data[i] == data[j])k = j;if (ans < dp[i][j])ans = dp[i][j];}}cout << ans;
}

暴力遍历代码:

看题解之前想碰碰运气写的暴力代码,时间复杂度O(n^3),当然TLE啦……

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;set<int> check;
vector<int> store;
int data[41234];
int n;int scan(int a, int b)
{int judge = 0;int sum = 0;for (int i = 0; i < n; i++){if (judge == 0 && (data[i] == a || data[i] == b) || data[i] == judge){if (data[i] == a){judge = b;}if (data[i] == b){judge = a;}sum++;}}return sum;
}int main()
{cin >> n;for (int i = 0; i < n; i++){cin >> data[i];if (check.count(data[i]) == 0){check.insert(data[i]);store.push_back(data[i]);}}int ans = 0;for (int i = 0; i < store.size(); i++){for (int j = i; j < store.size(); j++){int t = scan(data[i], data[j]);ans = ans > t? ans:t;}}cout << ans;
}

转载于:https://www.cnblogs.com/ACMFish/p/6403487.html

CodeForces 255C. Almost Arithmetical Progression (DP)相关推荐

  1. 【CodeForces - 255C】Almost Arithmetical Progression (dp,离散化)

    题干: Gena loves sequences of numbers. Recently, he has discovered a new type of sequences which he ca ...

  2. Almost Arithmetical Progression

    Description Gena loves sequences of numbers. Recently, he has discovered a new type of sequences whi ...

  3. CodeForces - 1312E Array Shrinking(区间dp)(通俗易懂)

    CodeForces - 1312E Array Shrinking(区间dp) 题目链接: 没做出来,看了一下别人的题解,才A掉.但网上没发现一篇讲得比较易懂的题解,所以就准备写一篇再加上我自己的理 ...

  4. 【CodeForces 1253C --- Sweets Eating】DP

    [CodeForces 1253C --- Sweets Eating]DP Description Tsumugi brought n delicious sweets to the Light M ...

  5. codeforces Palindromic characteristics(hash或者dp)

    1.动态规划 用dp(l,r)表示子串s[l..r]的回文串阶数.对于长度len为1的有dp(l,r)=1.对于长度len等于2的,看字符串左右是否相等即可.当r-l>1时,如果s[l]不等于s ...

  6. codeforces 808 E. Selling Souvenirs (dp+二分+思维)

    题目链接:http://codeforces.com/contest/808/problem/E 题意:最多有100000个物品最大能放下300000的背包,每个物品都有权值和重量,为能够带的最大权值 ...

  7. Codeforces 429B Working out:dp【枚举交点】

    题目链接:http://codeforces.com/problemset/problem/429/B 题意: 给你一个n*m的网格,每个格子上有一个数字a[i][j]. 一个人从左上角走到右下角,一 ...

  8. CodeForces - 1551F Equidistant Vertices(暴力+dp)

    题目链接:点击查看 题目大意:给出一棵 nnn 个节点组成的树,问选出 kkk 个节点满足相互之间距离相等的方案数有多少 题目分析:n=100n=100n=100,感觉数据范围越小的题目越难发现 ta ...

  9. CodeForces - 1481E Sorting Books(贪心+dp)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,每次操作可以将任意一本书放到序列的末尾,问最少需要操作多少次,才能使得相同的数字挨在一起 题目分析:不难看出,对每个位置的数都操作一次,是 ...

  10. CodeForces - 1509C The Sports Festival(dp)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,现在需要对其进行重排列,使得贡献之和最小 对于一个排列的贡献来说,对于每个 iii ,则 di=max(a1,a2,...,ai)−min ...

最新文章

  1. android内存池,两种常见的内存管理方法:堆和内存池
  2. 皮一皮:越是拥有越不会炫耀...
  3. python怎么读取文件-python怎么读取文件内容
  4. spring中的RowMapper
  5. KeeSoft.DBHelper.DBFactory 数据库访问类
  6. 前端技巧-JS元编程ES6 symbol公开符号
  7. 数据库连接池和connection的理解
  8. [html] 如何使用纯HTML实现跑马灯的效果?
  9. linux动态追踪神器——Strace实例介绍【转】
  10. 进阶16 网络编程入门
  11. 斐波那契数列:一道100年后羊圈羊的数量算法题
  12. 软考初级程序员---题目(五)
  13. intel网卡win10 修改mac
  14. 2009年下半年 系统集成项目管理工程师 下午试卷
  15. 人工智能研究现状及发展前景如何
  16. 职场菜鸟捕食指北【相亲篇】
  17. [详细] 搭建hexo博客并部署阿里云服务器
  18. 嵌入式开发 SRAM SROM DRAM DROM DDR NAND FLASH EMMC 区别
  19. Linux主机名查看和更改
  20. linux的头文件下载,Linux内核头文件(linux headers)

热门文章

  1. html css回顾总结
  2. Installer - 使用Maven自动布署至外部Tomcat
  3. Modbus通用数据读取工具设计及使用
  4. hdu--1181--变形课
  5. linux 已有目录挂载磁盘
  6. Ubuntu14.10安装Eclipse
  7. [010]Try块和异常处理
  8. 10%的IOS设备已经更新到版本5.1.1
  9. 25 个让 Java 程序员更高效的 Eclipse 插件
  10. Mootools:Hash中的null值