CF 1720 D1. Xor-Subsequence (easy version) dp 1800
题意:一个长度为 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相关推荐
- 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 ...
- 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∑ngcd(a1,a2,..., ...
- Increasing Subsequence (easy version)
https://codeforces.com/contest/1157/problem/C1 题意:给一个不重复的元素的数组,每次可以在头或者尾取一个数,求取数最长严格递增序列的方法 题解:因为元素不 ...
- codeforces 1706.D1 Chopping Carrots (Easy Version)
分析: 对于给定的一组序列a[], 我们可以暴力枚举a[]除以1到K 分别存储在vector<int>ver[maxn], vv 中:假设vv[i]是最小值,二分查找 ver[k]中第一个 ...
- 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 ...
- Codeforces Round #555 (Div. 3), problem: (C2) Increasing Subsequence (hard version)【贪心+撞到南墙也不回头】
题目链接 题目大意 复杂版大意是我们可以从左右两端每次拿走一个数,一直拿,不过要满足一个条件,每次拿的数要保证严格递增(即从小到大然后不会有相同的情况) 复杂版的话是会有相同的数字出现 在题解中正式说 ...
- D1. Kirk and a Binary String (easy version)
题目链接:http://codeforces.com/contest/1204/problem/D1 D1. Kirk and a Binary String (easy version) time ...
- 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] ...
- CodeForces - 1543D1 RPD and Rap Sheet (Easy Version)(异或+交互)
题目链接:点击查看 题目大意:交互题猜密码,设原密码为 xxx,猜的密码为 yyy,如果没猜到,密码会自适应变成 zzz,满足 x⊕z=yx \oplus z=yx⊕z=y ,最多猜 nnn 次 题目 ...
最新文章
- T100-----调试程序,快速定位到错误行
- Python包管理工具Distribute的安装
- 面向自动驾驶领域的3D点云目标检测方法汇总!(单模态+多模态/数据+代码)
- 【pmcaff】纪录片:互联网时代(互联网人必读大片)
- python PIL 打开\显示\保存图像
- 牛客题霸 [合并有序链表] C++题解/答案
- DataGridView控件用法二:常用属性
- java单例设计模式_Java设计模式之单例模式详解
- layer加载的页面偶尔出现空白_Layer-Cake 模式的设计
- java 多线程同步 通过实现Runnable的示例
- web前端移动开发必须知道那些基础
- MySQL免安装版配置部署
- caffe 实践程序3——caffe提取特征以及由模型test数据
- 再谈mysql之执行计划explain
- 画出清明上河图的代码_【高清】清明上河图(代码)
- java的pdf转永中_永中PDF转Word 免费转换不求人!
- 为什么阿里 P7 都找不到工作了?
- 11个基于vue的UI框架
- 【DeepLearning笔记】python规范书写
- 网易视频云首推多路互动直播,首批测试邀请火爆来袭