题意:一个长度为 n 的数组 a (0 ≤ ai ≤ 200)。一个数组 a 的子序列,如果每一项异或后面一项在a数组中的索引小于后面一项异或当前项在 a 数组中的索引,则称这个子序列为完美。求出最长完美子序列的个数。

思路:用 dp[i] 表示以 i 结尾的最长完美子序列的个数,dp[i] 等于满足完美子序列条件最大的 dp[j] + 1(1 ≤ j ≤ i - 1),1 到 n 中最大的dp[i] 就是答案,但是这样肯定会超时。我们要注意 ai 是小于等于 200 的,所以他异或上一个数,只能改变这个数二进制中后面的8位数,所以最多只能改变256,所以当 i - j 大于256时,无论 ai 异或一个什么数都大于 aj 异或任意一个数,所以对于 dp[i],我们只要找满足完美子序列条件最大的 dp[j] + 1(max(0,i - 256) ≤ j ≤ i - 1)。

代码:

#include<bits/stdc++.h>
#define pb push_back
#define all(x) x.begin(), x.end()
using namespace std;
typedef long long ll;
typedef pair<int, int> PII;
const int N = 3e5 + 10, P = 1e9 + 7, mod = 998244353;
int a[N], dp[N];
void solve(){int n;cin >> n;for(int i = 0; i < n; i++) cin >> a[i], dp[i] = 1;for(int i = 0; i < n; i++){for(int j = i - 1; j >= max(0, i - 256); j--) if((a[i] ^ j) > (a[j] ^ i)) dp[i] = max(dp[i], dp[j] + 1);}int ans = 0;for(int i = 0; i < n; i++) ans = max(ans, dp[i]);cout << ans << endl;
}
int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int tt;cin >> tt;while(tt--) {solve();}return 0;
}

CF 1720 D1. Xor-Subsequence (easy version) dp 1800相关推荐

  1. C1. Pokémon Army (easy version)(DP)

    C1. Pokémon Army (easy version)(DP) 思路:dpdpdp. 考虑:分数组长度的奇偶性进行dpdpdp. 令dp[i][0]dp[i][0]dp[i][0]表示前iii ...

  2. Divan and Kostomuksha (easy version) dp,gcd(2100)

    题意 : 对于给定序列,任意打乱顺序,问 :∑i=1ngcd(a1,a2,...,an)\sum_{i=1}^{n}gcd(a_1,a_2,...,a_n)i=1∑n​gcd(a1​,a2​,..., ...

  3. Increasing Subsequence (easy version)

    https://codeforces.com/contest/1157/problem/C1 题意:给一个不重复的元素的数组,每次可以在头或者尾取一个数,求取数最长严格递增序列的方法 题解:因为元素不 ...

  4. codeforces 1706.D1 Chopping Carrots (Easy Version)

    分析: 对于给定的一组序列a[], 我们可以暴力枚举a[]除以1到K 分别存储在vector<int>ver[maxn], vv 中:假设vv[i]是最小值,二分查找 ver[k]中第一个 ...

  5. D1. Chopping Carrots (Easy Version)

    传送门 题意: 给你一个数组,a_1, a_2, a_3 \cdots, a_n, 长度为n, 和一个整数k, 另一个数组p_1, p_2, p_3, \cdots, p_n, 这两个数组的贡献是 m ...

  6. Codeforces Round #555 (Div. 3), problem: (C2) Increasing Subsequence (hard version)【贪心+撞到南墙也不回头】

    题目链接 题目大意 复杂版大意是我们可以从左右两端每次拿走一个数,一直拿,不过要满足一个条件,每次拿的数要保证严格递增(即从小到大然后不会有相同的情况) 复杂版的话是会有相同的数字出现 在题解中正式说 ...

  7. D1. Kirk and a Binary String (easy version)

    题目链接:http://codeforces.com/contest/1204/problem/D1 D1. Kirk and a Binary String (easy version) time ...

  8. CodeForces Round #730 D1. RPD and Rap Sheet (Easy Version)题解

    Codeforces Round #730 (Div. 2) 题意: t组数据,每组给一个n和k,(easy version里面k=2) 每一次系统会输入一个初始的密码(初始密码是一个在[0,n−1] ...

  9. CodeForces - 1543D1 RPD and Rap Sheet (Easy Version)(异或+交互)

    题目链接:点击查看 题目大意:交互题猜密码,设原密码为 xxx,猜的密码为 yyy,如果没猜到,密码会自适应变成 zzz,满足 x⊕z=yx \oplus z=yx⊕z=y ,最多猜 nnn 次 题目 ...

最新文章

  1. T100-----调试程序,快速定位到错误行
  2. Python包管理工具Distribute的安装
  3. 面向自动驾驶领域的3D点云目标检测方法汇总!(单模态+多模态/数据+代码)
  4. 【pmcaff】纪录片:互联网时代(互联网人必读大片)
  5. python PIL 打开\显示\保存图像
  6. 牛客题霸 [合并有序链表] C++题解/答案
  7. DataGridView控件用法二:常用属性
  8. java单例设计模式_Java设计模式之单例模式详解
  9. layer加载的页面偶尔出现空白_Layer-Cake 模式的设计
  10. java 多线程同步 通过实现Runnable的示例
  11. web前端移动开发必须知道那些基础
  12. MySQL免安装版配置部署
  13. caffe 实践程序3——caffe提取特征以及由模型test数据
  14. 再谈mysql之执行计划explain
  15. 画出清明上河图的代码_【高清】清明上河图(代码)
  16. java的pdf转永中_永中PDF转Word 免费转换不求人!
  17. 为什么阿里 P7 都找不到工作了?
  18. 11个基于vue的UI框架
  19. 【DeepLearning笔记】python规范书写
  20. 网易视频云首推多路互动直播,首批测试邀请火爆来袭

热门文章

  1. 中规中矩的CentOS7安装Python3.5
  2. 原生 APP 与 web APP的区别比较
  3. 联通混改BATJ悉数入局,拿出数百亿的百度们有什么阳谋?
  4. Pikachu靶场之(XSS盲打)
  5. 3DText无法被物体遮挡 - 解决
  6. 扭蛋机(bilibili)
  7. Windows搭建web站点:免费内网穿透发布至公网 1-2
  8. tkinter点击按钮实现图片的切换
  9. PTA 背包问题凑零钱
  10. 有感于男人们的友谊和女人们的友谊