P4303 [AHOI2006]基因匹配 未完成
题目
暴力60pts部分
显然如果没有出现次数==5的条件
显然是\(N_{2}\)的求lcs的模板
但是加点条件就完全不同了
思路
这个题短小精悍,不想数据结构那么傻逼无脑
我们考虑一下\(N_{2}\)的缺点
首先我们知道,只有a[i]==b[j]的时候
才会对答案有所贡献(先不管他是不是和他匹配的)
然后这类的匹配只有5个,而你却全部枚举一遍,岂不是很浪费时间
我们用个vector或者开个数组
依次记录b数组一个数出现的位置
枚举a数组,然后和他匹配的数字只有五个
所以在他之前的不相等只是取最大值,并没有改变最大值
所以用树状数组维护一下修改和查询
ps:树状数组维护的是到b[i]之前的最大值?还是不太懂,太笨了
暴力&&代码
#include <cstdio>
#include <iostream>
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define ll long long
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 1e5 + 7;
int read() {
int x = 0, f = 1; char s = getchar();
for (; s > '9' || s < '0'; s = getchar()) if (s == '-') f = -1;
for (; s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0';
return x * f;
}
int n, m;
int a[maxn], b[maxn];
int f[5007][5007];
int main() {
n = read();
m = n * 5;
FOR(i, 1, m) a[i] = read();
FOR(i, 1, m) b[i] = read();
FOR(i, 1, m) FOR(j, 1, m) {
if (a[i] == b[j])
f[i][j] = max(f[i][j], f[i - 1][j - 1] + 1);
f[i][j] = max(f[i][j], max(f[i][j - 1], f[i - 1][j]));
}
cout << f[m][m] << "\n";
return 0;
}
#include <iostream>
#include <cstdio>
#include <algorithm>
#define ll long long
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define FORR(i,a,b) for(int i=a;i>=b;--i)
using namespace std;
const int maxn=1e5+7;
int read() {
int x=0,f=1;char s=getchar();
for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;
for(;s>='0'&&s<='9';s=getchar()) x=(x<<1)+(x<<3)+s-'0';
return x*f;
}
int n,a[maxn],b[maxn],jl[maxn][6],sum[maxn];
inline int lowbit(int x) {return x&-x;}
inline void modify(int x,int data) {
for(int i=x;i<=n;i+=lowbit(i))
sum[i]=max(sum[i],data);
}
inline int query(int x) {
int ans=0;
for(int i=x;i>=1;i-=lowbit(i))
ans=max(ans,sum[i]);
return ans;
}
int main() {
n=read()*5;
FOR(i,1,n) a[i]=read();
FOR(i,1,n) b[i]=read();
FOR(i,1,n) jl[b[i]][++jl[b[i]][0]]=i;
FOR(i,1,n)
FORR(k,5,1) { // 倒着枚举不影响后面
int j=jl[a[i]][k];
modify(j,query(j-1)+1);
}
cout<<query(n)<<"\n";
return 0;
}
P4303 [AHOI2006]基因匹配 未完成的更多相关文章
- 【线型DP】【LCS】洛谷P4303 [AHOI2006]基因匹配
P4303 [AHOI2006]基因匹配 标签(空格分隔): 考试题 nt题 LCS优化 [题目] 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种碱基排列而成(地球 ...
- 洛谷P4303 [AHOI2006]基因匹配(树状数组)
传送门 我已经连这种傻逼题都不会了orz 正常的dp是$O(n^2)$的,枚举第一个数组的$j$,然后第二个数组的$k$,如果相等,则$dp[i]=dp[j]+1$,否则$dp[i]=dp[j]$ 然 ...
- 1264: [AHOI2006]基因匹配Match
1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 982 Solved: 635[Submit][S ...
- bzoj 1264 [AHOI2006]基因匹配Match(DP+树状数组)
1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 793 Solved: 503[Submit][S ...
- BZOJ1264: [AHOI2006]基因匹配Match
1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 541 Solved: 347[Submit][S ...
- BZOJ 1264: [AHOI2006]基因匹配Match( LCS )
序列最大长度2w * 5 = 10w, O(n²)的LCS会T.. LCS 只有当a[i] == b[j]时, 才能更新答案, 我们可以记录n个数在第一个序列中出现的5个位置, 然后从左往右扫第二个序 ...
- bzoj 1264: [AHOI2006]基因匹配Match
1264: [AHOI2006]基因匹配Match Description 基因匹配(match) 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种碱基排列而成(地球 ...
- 【BZOJ1264】[AHOI2006]基因匹配Match DP+树状数组
[BZOJ1264][AHOI2006]基因匹配Match Description 基因匹配(match) 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种碱基排列而 ...
- bzoj1264 [AHOI2006]基因匹配Match 树状数组+lcs
1264: [AHOI2006]基因匹配Match Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1255 Solved: 835[Submit][ ...
随机推荐
- Is It A Tree?----poj1308
http://poj.org/problem?id=1308 #include<stdio.h> #include<string.h> #include<iostream ...
- flask-WTForms组件
WTForms是一个支持多个web框架的form组件 主要能够帮助我们生成html标签 对数据进行验证 安装 pip install wtforms Wtforms的使用 这里借助一个用户登录注册的示 ...
- 冒泡排序快速版(C)
冒泡排序C语言版:在每轮排序中检查时候有元素位置交换,如果无交换,说明数组元素已经有序,无需继续排序 #include <stdio.h> #include <stdlib.h> ...
- 常用python包(依赖)Ubuntu下
amqp==1.4.9anyjson==0.3.3apturl==0.5.2beautifulsoup4==4.4.1billiard==3.3.0.23blinker==1.3Brlapi==0.6 ...
- (3.5)mysql基础深入——mysqld_safe脚本功能及流程
(3.5)mysql基础深入——mysqld_safe脚本功能及流程 目录 1.mysqld_safe过程总结 2.mysql_safe启动的好处 3.mysqld_safe 参数 4.mysqld_ ...
- 001-window版redis安装
一.参考地址 官方地址:https://redis.io/ windows版本[学习使用]:https://github.com/MicrosoftArchive/redis 二.windows版re ...
- 003-redis-命令-key操作,字符串操作
Redis 键(key) Redis 键命令用于管理 redis 的键. 序号 命令及描述 1 DEL key该命令用于在 key 存在时删除 key. 2 DUMP key 序列化给定 key ,并 ...
- [svc]ftp协议数据连接的2种模式
玩明白了以太网2的二层数据格式, ip格式 tcp/udp个时候, 需要玩一玩一些有用的基于这些已上的协议数据了. 如 dhcp ftp等.比较有趣. ftp协议 分控制连接21端口 和数据连接 20 ...
- 使用webpy创建一个简单的restful风格的webservice应用
下载:wget http://webpy.org/static/web.py-0.38.tar.gz解压并进入web.py-0.38文件夹安装:easy_install web.py 这是一个如何使用 ...
- MySQL--教程
登入登出 首先启动服务,然后 mysql -u root -p 命令输入密码登入. mysql退出三种方法:mysql > exit;mysql > quit;mysql > \q;