T1  黑化

题意:

求一个字符串是否可能包含另一个字符串

字符串中的?可以匹配任意字母

可能输出 God bless You!

一定不可能 输出 Game Over!

计算fail数组时,fail数组不具有传递性

例:

pqkbpqsbqszz
pqkbpq?z

在z处失配后:

pqkbpqsbqszz
    pqkbpq?z

z匹配成功,误认为包含

因为计算fail时,?匹配了 k,而匹配时 ?匹配了s

s不和k匹配

即?不具有传递性

#include<cstdio>
#include<cstring>
#define N 100001
using namespace std;
int lens,lent,f[N];
char s[N],t[N];;
void getfail()
{
int j;
for(int i=;i<lent;i++)
{
j=f[i];
while(j && t[i]!=t[j]) j=f[j];
f[i+]= t[i]==t[j] ? j+ : ;
}
}
void work()
{
int j=;
for(int i=;i<lens;i++)
{
while(j && s[i]!=t[j] && s[i]!='?' && t[j]!='?') j=f[j];
if(s[i]==t[j] || s[i]=='?' || t[j]=='?') j++;
if(j==lent) { printf("God bless You!\n"); return; }
}
printf("Game Over!\n");
}
int main()
{
freopen("trigger.in","r",stdin);
freopen("trigger.out","w",stdout);
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s%s",t,s);
lent=strlen(t);
lens=strlen(s);
getfail();
work();
}
}

T2 便当

不共行不共列 --> 原图行列交换无影响

原图转化成这样

然后DP

#include<cstdio>
#define N 210
#define mod 504
using namespace std;
int n,k,dp[N][N];
int main()
{
freopen("kill.in","r",stdin);
freopen("kill.out","w",stdout);
scanf("%d%d",&n,&k);
if(k>=n*) { printf(""); return ; }
dp[][]=;
n=(n<<)-;
for(int i=;i<=n;i++)
{
for(int j=;j<=k;j++) dp[i][j]=dp[i-][j];
for(int j=;j<=k;j++) dp[i][j]=(dp[i][j]+dp[i-][j-]*((i+)/*--(j-)))%mod;
}
printf("%d",dp[n][k]);
}

T3 蝉

正解 树链剖分线段树维护等差序列

弃疗

90 暴力法:

连续的操作1一块儿弄,spfa

#include<cstdio>
#include<queue>
#include<cstring>
#define N 200001
using namespace std;
int tot,front[N],to[N*],nxt[N*];
int dis[N],tmp[N];
bool v[N],have[N];
queue<int>q;
void add(int u,int v)
{
to[++tot]=v; nxt[tot]=front[u]; front[u]=tot;
to[++tot]=u; nxt[tot]=front[v]; front[v]=tot;
}
void bfs()
{
memset(dis,-,sizeof(dis));
dis[]=; q.push();
int now;
while(!q.empty())
{
now=q.front(); q.pop();
for(int i=front[now];i;i=nxt[i])
if(dis[to[i]]==-)
{
dis[to[i]]=dis[now]+;
q.push(to[i]);
}
}
}
void spfa()
{
int now;
while(!q.empty())
{
now=q.front(); q.pop(); v[now]=false;
for(int i=front[now];i;i=nxt[i])
if(dis[to[i]]>dis[now]+)
{
dis[to[i]]=dis[now]+;
if(!v[to[i]]) q.push(to[i]),v[to[i]]=true;
}
}
}
int main()
{
freopen("cicada.in","r",stdin);
freopen("cicada.out","w",stdout);
int n,m;
scanf("%d%d",&n,&m);
int u,vv;
for(int i=;i<n;i++)
{
scanf("%d%d",&u,&vv);
add(u,vv);
}
bfs();
have[]=true;
int opt,x;
while(m--)
{
scanf("%d%d",&opt,&x);
if(opt==)
{
if(tmp[])
{
spfa();
for(int j=;j<=tmp[];j++) printf("%d\n",dis[tmp[j]]);
tmp[]=;
}
if(!have[x]) q.push(x),dis[x]=,v[x]=true;
}
else tmp[++tmp[]]=x;
}
if(tmp[])
{
spfa();
for(int j=;j<=tmp[];j++) printf("%d\n",dis[tmp[j]]);
}
}

2017 济南综合班 Day 3的更多相关文章

  1. 2017 济南综合班 Day 7

     a 两个指针L.R R开始指向恰好[R,n]有不超过k个逆序对的地方 随着L的右移,R指针只会右移 逆序对有2部分 1.L左侧与其他位置形成的逆序对 2.R右侧与其他位置形成的逆序对 用树状数组分别 ...

  2. 2017 济南综合班 Day 6

    循环移动 (cyclic.cpp/c/pas) (1s/256M) 问题描述 给出一个字符串S与N个操作.每个操作用三元组(L, R, K)进行描述:操作将字符串第L个到第R个位置构成的子串循环移动K ...

  3. 2017 济南综合班 Day 5

    毕业考试 (exam.cpp/c/pas) (1s/256M) 问题描述 快毕业了,Barry希望能通过期末的N门考试来顺利毕业.如果他的N门考试平均分能够达到V分,则他能够成功毕业.现在已知每门的分 ...

  4. 2017 济南综合班 Day 4

    T1 外星人 二维前缀和 #include<cstdio> #define N 1001 using namespace std; bool v[N][N]; int sum[N][N]; ...

  5. 2017 济南综合班 Day 2

    木棍(stick) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有很多木棍,具体的,总共有n根,且每根木棍都有一个长度.为了方便起见,我们可以用一个正 ...

  6. 2017 济南综合班 Day 1

    送分题(songfen) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK喜欢干一些有挑战的事,比如说求区间最大子段和.它知道这个题目有O(n)的做法.于 ...

  7. 2017 济南精英班 Day1

    不管怎么掰都是n*m-1 #include<cstdio> using namespace std; int main() { freopen("bpmp.in",&q ...

  8. JavaScript脚本语言基础(四)

    导读: JavaScript和DOM DOM文档对象常用方法和属性 DOW文档对象运用 JSON数据交换格式 正则表达式 1.JavaScript和DOM [返回] 文档对象模型(Document O ...

  9. JeeSite(2):导入数据,进入系统

    本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/50954485 未经博主同意不得转载. 博主地址是:http://blog.csd ...

随机推荐

  1. 计算器软件实现系列(六)windowform窗体+SQL+策略模式

    一 整体概述 这个计算器软件的功能和以前的功能基本上一样,只不过是数据的保存形式发生了变化,,以前用的是txt文件保存,现在更正用SQL数据库,现在更改了以前的文件保存形式,是三层架构中数据层的更换, ...

  2. eg_2

    2. 编写一个程序,输出在一个字符串中,指定的字符串出现的次数 第一种方法: public class Test { public static void main(String[] args) { ...

  3. TCP 的有限状态机

    TCP 有限状态机的图中每一个方框都是 TCP 可能具有的状态. 每个方框中的大写英文字符串是 TCP 标准所使用的 TCP 连接状态名. 状态之间的箭头表示可能发生的状态变迁. 箭头旁边的字,表明引 ...

  4. 《C陷阱与缺陷》之1词法"陷阱"

    编译器中负责将程序分解为一个一个符号的部分,一般称为"词法分析器".在C语言中,符号之间的空白(包括空格符.制表符或换行符)将被忽略. 1.=不同于== C语言使用符号" ...

  5. 第45天:2017webstrom下载破解汉化

    1.webstrom 11.0.3下载地址1:http://pan.baidu.com/s/1kVQjcwf 密码:uggr 下载地址2:http://pan.baidu.com/s/1kVQjcwf ...

  6. Activiti5工作流笔记四

    排他网关(ExclusiveGateWay) 流程图 部署流程定义+启动流程实例 查询我的个人任务 完成我的个人任务 并行网关(parallelGateWay) 流程图 部署流程定义+启动流程实例 查 ...

  7. MATLAB中imfilter函数

    功能:对任意类型数组或多维图像进行滤波. 用法:B = imfilter(A,H) B = imfilter(A,H,option1,option2,...) 或写作g = imfilter(f, w ...

  8. 数据库时间内接受的是lang类型的时间 分为三种字段 第一种只存日期 第二种存日期+时间 第三种时间戳

    数据库时间内接受的是lang类型的时间 分为三种字段 第一种只存日期 第二种存日期+时间 第三种时间戳

  9. 威锋网(Weiphone) BBS排序插件

    body,td,p { // 这对大括号里描述网页的背景 margin-left:40px; margin-right:40px; font-size: 10pt; } div.vim { width ...

  10. HDU 3879 Base Station(最大权闭合子图)

    将第i个用户和他需要的基站连边,转化成求二分图的最大权闭合子图. 答案=正权点之和-最小割. # include <cstdio> # include <cstring> # ...