P2463 [SDOI2008]Sandy的卡片

直接二分长度暴力匹配.......

跑的还挺快

(正解是后缀数组的样子)

 #include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
void read(int &x){
char c=getchar();x=;
while(c<''||c>'')c=getchar();
while(''<=c&&c<='')x=x*+(c^),c=getchar();
}
#define N 1002
int n,a[N][N],b[N];
bool ask2(int st,int x){
bool p;
for(int i=;i<=n;++i){
p=;
for(int j=;!p&&j<=b[i]-x+;++j){
int v=a[][st]-a[i][j];p=;
for(int k=;p&&k<x;++k)
if(a[][st+k]!=a[i][j+k]+v)p=;
}if(!p) return ;
}return ;
}
bool ask1(int x){
if(x==) return ;
for(int i=;i<=b[]-x+;++i)
if(ask2(i,x)) return ;
return ;
}
int main(){
read(n); int k=;
for(int i=;i<=n;++i){
read(b[i]);
if(b[k]>b[i]) k=i;
for(int j=;j<=b[i];++j) read(a[i][j]);
}if(k!=) swap(a[],a[k]),swap(b[],b[k]);
int l=,r=b[],mid;
while(l+<r){
mid=l+((r-l)>>);
if(ask1(mid)) l=mid;
else r=mid-;
}printf("%d",ask1(r)?r:l);
return ;
}

丧心病狂压行版

 #include<bits/stdc++.h>
using namespace std;
#define re return
int n,a[][],b[],k;
bool ask2(int s,int x){
for(int i=,j,k;i<=n;++i){bool p=;
for(j=;!p&&j<=b[i]-x+;++j){p=;
for(k=;p&&k<x;++k)
if(a[][s+k]!=a[i][j+k]+a[][s]-a[i][j])p=;
}if(!p) re ;}re ;}
bool ask1(int x){for(int i=;i<=b[]-x+;++i)if(ask2(i,x))re ;re ;}
int main(){cin>>n;k=;
for(int i=,j;i<=n;++i){cin>>b[i];if(b[k]>b[i])k=i;
for(j=;j<=b[i];++j)cin>>a[i][j];
}if(k!=)swap(a[],a[k]),swap(b[],b[k]);
int l=,r=b[],mid;
while(l+<r)mid=l+r>>,ask1(mid)?l=mid:r=mid-;
cout<<(ask1(r)?r:l);}

bzoj4698 / P2463 [SDOI2008]Sandy的卡片的更多相关文章

  1. 洛谷 P2463 [SDOI2008]Sandy的卡片 解题报告

    P2463 [SDOI2008]Sandy的卡片 题意 给\(n(\le 1000)\)串,定义两个串相等为"长度相同,且一个串每个数加某个数与另一个串完全相同",求所有串的最长公 ...

  2. 【BZOJ4698】Sdoi2008 Sandy的卡片 后缀数组+RMQ

    [BZOJ4698]Sdoi2008 Sandy的卡片 Description Sandy和Sue的热衷于收集干脆面中的卡片.然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡 ...

  3. 【BZOJ4698】[SDOI2008]Sandy的卡片

    [BZOJ4698][SDOI2008]Sandy的卡片 题面 flag倒了. bzoj 洛谷 题解 首先题目的区间加很丑对吧, 将每个串差分一下,就可以转化为 求: 给定\(N\)个串,求他们的最长 ...

  4. P2463 [SDOI2008]Sandy的卡片[差分+串拼接后缀数组]

    P2463 [SDOI2008]Sandy的卡片 套路都差不多,都是差分后二分答案找lcp.只是这题要把多个串拼接起来成为一个大串,中间用某些值域中没有的数字相隔(最好间隔符都不一样想想为什么),排序 ...

  5. 【bzoj4698】[Sdoi2008] Sandy的卡片 后缀数组

    题目描述 Sandy和Sue的热衷于收集干脆面中的卡片.然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡片兑换超炫的人物模型.每一张卡片都由一些数字进行标记,第i张卡片的序列 ...

  6. 洛谷P2463 [SDOI2008]Sandy的卡片(后缀数组SA + 差分 + 二分答案)

    题目链接:https://www.luogu.org/problem/P2463 [题意] 求出N个串中都出现的相同子串的最长长度,相同子串的定义如题:所有元素加上一个数变成另一个,则这两个串相同,可 ...

  7. Luogu P2463 [SDOI2008]Sandy的卡片

    题目链接 \(Click\) \(Here\) 真的好麻烦啊..事实证明,理解是理解,一定要认认真真把板子打牢,不然调锅的时候真的会很痛苦..(最好是八分钟能无脑把\(SA\)码对的程度\(QAQ\) ...

  8. P2463 [SDOI2008]Sandy的卡片

    写一种\(O(nm)\)的做法,也就是\(O(\sum 串长)\)的. 先通过差分转化,把每个数变成这个数与上一个数的差,第一个数去掉,答案就是最长公共子串+1 按照套路把所有串拼起来,中间加一个分隔 ...

  9. 洛咕 P2463 [SDOI2008]Sandy的卡片

    哈希水过. 首先这是一段delta相同的序列,按照套路差分一下,b[i]=a[i]-a[i-1],然后就是这些序列的最长公共子段 由于数据范围很小,就可以二分,枚举第一个序列的子段然后每个子序列暴力c ...

随机推荐

  1. 【LeetCode每天一题】Pow(x, n)(平方)

    Implement pow(x, n), which calculates x raised to the power n (x,n). Example 1:                 Inpu ...

  2. 2019.03.20 mvt,Django分页

    MVT模式   MVT各部分的功能:   M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理.       V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返 ...

  3. [LeetCode] 590. N-ary Tree Postorder Traversal_Easy

    Given an n-ary tree, return the postorder traversal of its nodes' values. For example, given a 3-ary ...

  4. [Java in NetBeans] Lesson 03. More Variables / Type Casting

    这个课程的参考视频在youtube. 主要学到的知识点有: It is different from python, that "1" only present string &q ...

  5. 利用Tensorflow实现神经网络模型

    首先看一下神经网络模型,一个比较简单的两层神经. 代码如下: # 定义参数 n_hidden_1 = 256 #第一层神经元 n_hidden_2 = 128 #第二层神经元 n_input = 78 ...

  6. 解决mysql的内存表“table is full”错误

    最后参考http://blog.sina.com.cn/s/blog_6942a1590101429h.html 来解决,摘录下核心 后来GOOGLE得知,需要重建该表才可以. 1. 设置新的参数 m ...

  7. Oracle / PLSQL函数 - DECODE

    1.DECODE( expression , search , result [, search , result]... [, default] ) 参数说明: expression : 表中的某一 ...

  8. python中使用rabbitmq消息中间件

    上周一直在研究zeromq,并且也实现了了zeromq在python和ruby之间的通信,但是如果是一个大型的企业级应用,对消息中间件的要求比较高,比如消息的持久化机制以及系统崩溃恢复等等需求,这个时 ...

  9. css解决无论页面长短footer永远置底

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. hdu5441 并查集+克鲁斯卡尔算法

    这题计算 一张图上 能走的 点对有多少个  对于每个限制边权 , 对每条边排序,对每个查询排序 然后边做克鲁斯卡尔算法 的时候变计算就好了 #include <iostream> #inc ...