HDU 6103
题意:
求最长的两个不相交的子序列,dis <= m ;
分析:
当时二分了答案,暴力匹配,TLE了,然后考虑了,O(n^2)预处理出所有区间 dis,然后答案是所有dis中>=m的最长长度吗?
不是,两个子区间可以不相邻。
还是二分答案,还是枚举两个区间的位置,这里已经是O(n^2)了,怎么判断他们的dis呢?
利用上面求出的任意两个区间的dis O(1)求出这两个子区间的dis,dis = d[i][j+mid-1] - d[i+mid][j-1];
int 的二维开不了!
字符串细节很多!!!
#include<bits/stdc++.h> using namespace std; const int maxn = ;
char str[];
unsigned short d[maxn][maxn];
int len, m; bool judge(int mid)
{ for(int i=; i<=len; i++)
{
if(i+mid*->len) break;
for(int j= i + mid; j<=len; j++)
{
if(j+mid->len) break;
if(d[i][j+mid-]-d[i+mid][j-]<=m)
return true;
}
}
return false;
} int main()
{
int t;
scanf("%d", &t);
while(t--)
{
scanf("%d", &m);
scanf("%s", str+);
len = strlen(str+); for(int i=; i<=len; i++)
d[i][i] = ; for(int k=; k<=len; k++)
{
for(int i=; i<=len; i++)
{
int j = i + k - ;
if(j>len) break;
if(j-i==) d[i][j] = abs(str[i]-str[j]);
else d[i][j] = d[i+][j-] + abs(str[i]-str[j]);
}
} int left = ,right=len/,ans=-;
while(left <=right)
{
int mid = (left + right) / ;
if(judge(mid))
{
ans = mid;
left = mid + ;
}
else
right = mid - ;
}
if(ans==-)
ans = ;
printf("%d\n", ans); }
return ;
}
HDU 6103的更多相关文章
- HDU 6103 Kirinriki(尺取法)
http://acm.hdu.edu.cn/showproblem.php?pid=6103 题意: 给出一个字符串,在其中找两串互不重叠的子串,计算它们之间的dis值,要求dis值小于等于m,求能选 ...
- HDU 6103 17多校6 Kirinriki(双指针维护)
Problem Description We define the distance of two strings A and B with same length n isdisA,B=∑i=0n− ...
- HDU 6103 Kirinriki (思维 双指针)
Kirinriki Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- 2017ACM暑期多校联合训练 - Team 6 1008 HDU 6103 Kirinriki (模拟 尺取法)
题目链接 Problem Description We define the distance of two strings A and B with same length n is disA,B= ...
- HDU - 6103 :Kirinriki(不错的尺取法)
We define the distance of two strings A and B with same length n is dis A,B =∑ i=0 n−1 |A i −B n−1−i ...
- hdu 6103(Kirinriki)
题目链接:Kirinriki 题目描述: 找两个不重叠的字符串A,B. 使得dis(A,B)<=m;\(dis(A,B)= \sum _{i=0}^{n-1} \left | A_i-B_{n- ...
- hdu 6103 Kirinriki (枚举对称中心+双指针)
Problem Description We define the distance of two strings A and B with same length n isdisA,B=∑(i=0 ...
- hdu some problems in Multi-University Training Contest
hdu 6103 Kirinriki #include<bits/stdc++.h> using namespace std; int n,m,ans; ]; void doit(int ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
随机推荐
- MySQL主从复制,以及双机热备
MySQL数据库自身提供的主从复制功能可以方便的实现数据的多处自动备份,实现数据库的拓展.多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能. 下图就描述了一个多个数 ...
- 小程序 开发阶段请求网络报 不在以下 request 合法域名列表中
1.在工具栏右边,点开详情, 把图片最后一项选上,再重新编译一下项目就可以了. 2.管理员将需要使用的域名添加到小程序后台 1. 地址:http://mp.weixin.qq.com (需要请求的域名 ...
- 段错误:使用opencv打开视频流
段错误:使用opencv打开视频流时报这个错误 1 使用命令dmesg 发现是libavutil.so模块发生了错误. 如果是java端报错,可能如下: libavutil.so ... av_di ...
- c#实现常用排序算法
让我们先看一看常用排序算法的效率对比 接着请看代码和注释~ using System; using System.Collections.Generic; using System.Linq; usi ...
- Windows 7安装PlayReady出现“任务被禁用”错误信息
问题描述: Windows 7的Windows media center中安装PlayReady时出现:错误信息:任务被禁用.(异常来自 HRESULT:0x80041326) 解决办法: 先请确认是 ...
- 6个Unity 开源项目分享!
http://gad.qq.com/article/detail/38279?sessionUserType=BFT.PARAMS.249034.TASKID&ADUIN=991655778& ...
- tomcat修改域名和访问域名时去掉项目名
打开tomcat安装目录,根据路径找到 server.xml 路径D:\apache-tomcat-7.0.70\conf\server.xml 打开后 找到这一段 <Connector ...
- 用jquery来实现正反选选择框checkbox的小示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- winfrom 树勾选
树勾选 /// <summary> /// 树勾选 /// </summary> /// <param name="sender"></p ...
- 1个示例 学会 mvc 常用标签
HtmlHelper用法大全3:Html.LabelFor.Html.EditorFor.Html.RadioButtonFor.Html.CheckBoxFor @Html.***For:为由指定 ...