BZOJ3740 : pku2842 N-dimension Matching N维匹配
做$n$次递推求出$n$维Hash值即可,时间复杂度$O(nk)$。
#include<cstdio>
#define N 500010
int n,i,j,t,delta,ca,cb,a[10],b[10],c[N],d[N],p[N][10];
int seed[10]={233,13331,997,733,811,953,2011,1999,1997,1801};
unsigned int pow,target,f[11][N];
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
int main(){
read(n);
for(i=0,ca=1;i<n;i++)read(a[i]),ca*=a[i];
for(i=0,cb=1;i<n;i++)read(b[i]),cb*=b[i];
for(i=0;i<ca;i++)read(c[i]);
for(i=0;i<cb;i++)read(d[i]);
for(i=0;i<cb;i++)for(t=i,j=n-1;~j;j--)p[i][j]=t%b[j],t/=b[j];
for(j=0;j<cb;j++)f[n][j]=d[j];
for(delta=1,i=n-1;~i;i--){
for(j=0;j<cb;j++){
f[i][j]=f[i+1][j];
if(p[j][i])f[i][j]+=f[i][j-delta]*seed[i];
}
delta*=b[i];
}
target=f[0][cb-1];
for(i=0;i<ca;i++)for(t=i,j=n-1;~j;j--)p[i][j]=t%a[j],t/=a[j];
for(j=0;j<ca;j++)f[n][j]=c[j];
for(delta=1,i=n-1;~i;i--){
for(pow=1,j=b[i];j;j--)pow*=seed[i];
for(j=0;j<ca;j++){
f[i][j]=f[i+1][j];
if(p[j][i])f[i][j]+=f[i][j-delta]*seed[i];
if(p[j][i]>=b[i])f[i][j]-=f[i+1][j-delta*b[i]]*pow;
}
delta*=a[i];
}
for(j=0;j<ca;j++){
for(t=1,i=0;i<n;i++)if(p[j][i]<b[i]-1){t=0;break;}
if(t&&f[0][j]==target){
for(i=0;i<n;i++)printf("%d ",p[j][i]-b[i]+2);
return 0;
}
}
}
BZOJ3740 : pku2842 N-dimension Matching N维匹配的更多相关文章
- 10. Regular Expression Matching[H]正则表达式匹配
题目 Given an input string(s) and a pattern(p), implement regular expression matching with support for ...
- [leetcode]10. Regular Expression Matching正则表达式的匹配
Given an input string (s) and a pattern (p), implement regular expression matching with support for ...
- [leetcode]44. Wildcard Matching万能符匹配
Given an input string (s) and a pattern (p), implement wildcard pattern matching with support for '? ...
- LeetCode OJ:Regular Expression Matching(正则表达式匹配)
Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...
- Regular Expression Matching,regex,正则表达式匹配,利用动态规划
问题描述:Implement regular expression matching with support for '.' and '*'. '.' Matches any single char ...
- UVA 11019 二维匹配 AC自动机
这个题目要求在一个大矩阵里面匹配一个小矩阵,是AC自动机的灵活应用 思路是逐行按普通AC自动机匹配,用过counts[i][j]记录一下T字符矩阵以i行j列为开头的与P等大的矩阵区域 有多少行已经匹配 ...
- 1023. Camelcase Matching驼峰式匹配
网址:https://leetcode.com/problems/camelcase-matching/ 依题意可得逻辑 class Solution { public: vector<bool ...
- leetcode 44. Wildcard Matching(模糊匹配)
搬运工了- - https://blog.csdn.net/jmspan/article/details/51460021
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
随机推荐
- 实现QQ在线咨询(需先添加好友)
实现效果如图: 点击客服专员一.二.三之后提示添加qq好友,进行聊天. 代码如下: <div class="attachLeft"> <img src=" ...
- sqlserver 连接远程数据库小结
A,B两个数据库,不在同一台服务器实例 当需要通过sqlserver语句来实现对远程数据库操作(OPENDATASOURCE): select * from -- 操作类型 OPENDATASOURC ...
- 最近360和adsafe软件有冲突
360把adsafe自启动服务给关闭,所以每次启动都不能成功.
- AIX性能监控
http://www.ibm.com/developerworks/cn/aix/library/au-aix7memoryoptimize2/ http://www.aixchina.net/Art ...
- C#值类型与引用类型
值类型(Value Type),值类型实例通常分配在线程的堆栈(stack)上,并且不包含任何指向实例数据的指针,因为变量本身就包含了其实例数据.其在MSDN的定义为值类型直接包含它们的数据,值类型的 ...
- Pyqt 一个简单的浏览器
使用QtWebKit 做一个简单的浏览器. mybrowserUI.ui <?xml version="1.0" encoding="UTF-8"?> ...
- 攻城狮在路上(壹) Hibernate(十三)--- Hibernate的检索方式(上)
Hibernate提供了以下几种检索对象的方式: A.导航对象图检索方式. B.OID检索方式.Session.get() load(); C.HQL检索方式.Query. D.QBC检索方式.Que ...
- tornado使用(Mac)
安装需求 Tornado 在 Python 2.5, 2.6, 2.7 中都经过了测试.要使用 Tornado 的所有功能,你需要安装 PycURL (7.18.2 或更高版本) 以及 simplej ...
- 吐个槽,对VB6.0 还有VBS 说ByeBye
往事不堪回首,折腾了个把月的老系统,心中郁结,不吐不快.系统架构是ASP +VBS +VB6.0 + SQL Server2000, 第一个版本开发完成大概是在2000年.基本是处于交接无力,看代码就 ...
- thinkphp分页样式
html代码: <div class="pages">{$page}</div> css代码: .pages{ width:100.5%; text-ali ...