BZOJ4531 && BJOI2014 trace
#include<cstdio>
#include<cctype>
using namespace std ; struct state {
int len ;
int p ;
int h ;
int last ;
state ( const int len , const int p , const int h ,
const int last ) : len ( len ) , p ( p ) , h ( h ) ,
last ( last ) {} ;
int hash () const {
return len * + * p + h * + last ;
//this is a perfect hash
}
} ; const int MAXN = ;
const long long MOD = ( long long ) ( 1e9 + ) ;
int N , M , K ; int G [ MAXN ] [ MAXN ] ;
char s [ MAXN ] ; const int size_of_dp = ;
long long dp [ size_of_dp ] ;
bool vis [ size_of_dp ] ; int main () ; //complete checking checked
long long D ( const state o ) ; //complete
long long T ( const state o , const int p ) ;//complete
long long T0 ( const state o , const int p ) ;//complete
long long T1 ( const state o , const int p ) ;//complete
long long T2 ( const state o , const int p ) ;//complete
long long T3 ( const state o , const int p ) ;//complete
long long T4 ( const state o , const int p ) ;//complete
long long T5 ( const state o , const int p ) ;//complete long long D ( const state o ) {
if ( vis [ o . hash () ] ) return dp [ o . hash () ] ;
vis [ o . hash () ] = true ;
if ( o . len == K ) {
if ( o . h == && o . last < )
return dp [ o . hash () ] = ;
else return ;
}
long long ans = ;
for ( int i = ; i <= N ; ++ i )
if ( G [ o . p ] [ i ] ) {
ans += T ( o , i ) ;
ans %= MOD ;
}
#ifdef DEBUG
printf ( "(%d,%d,%d,%d)=%lld\n" , o . len , o . p , o . h , o . last , ans ) ;
#endif
return dp [ o . hash () ] = ans ;
} long long T ( const state o , const int p ) {
switch ( o . last ) {
case : return T0 ( o , p ) ;
case : return T1 ( o , p ) ;
case : return T2 ( o , p ) ;
case : return T3 ( o , p ) ;
case : return T4 ( o , p ) ;
case : return T5 ( o , p ) ;
}
return ;
} int main () {
freopen ( "trace.in" , "r" , stdin ) ;
freopen ( "trace.out" , "w" , stdout ) ;
scanf ( "%d%d%d" , & N , & M , & K ) ;
scanf ( "%s" , s + ) ;
while ( M -- ) {
int a , b ;
scanf ( "%d%d" , & a , & b ) ;
G [ a ] [ b ] = G [ b ] [ a ] = ;
}
for ( int i = ; i <= N ; ++ i ) G [ ] [ i ] = ;
printf ( "%lld\n" , D ( state ( , , , ) ) ) ;
return ;
} long long T0 ( const state o , const int p ) {
if ( s [ p ] == ')' && o . h > )
return D ( state ( o . len + , p , o . h - , ) ) ;
if ( s [ p ] == '+' || s [ p ] == '-' ||
s [ p ] == '*' || s [ p ] == '/' )
return D ( state ( o . len + , p , o . h , ) ) ;
return ;
} long long T1 ( const state o , const int p ) {
if ( isdigit ( s [ p ] ) )
return D ( state ( o . len + , p , o . h , ) ) ;
if ( s [ p ] == '+' || s [ p ] == '-' ||
s [ p ] == '*' || s [ p ] == '/' )
return D ( state ( o . len + , p , o . h , ) ) ;
if ( s [ p ] == ')' && o . h > )
return D ( state ( o . len + , p , o . h - , ) ) ;
return ;
} long long T2 ( const state o , const int p ) {
if ( s [ p ] == '+' || s [ p ] == '-' ||
s [ p ] == '*' || s [ p ] == '/' )
return D ( state ( o . len + , p , o . h , ) ) ;
if ( s [ p ] == ')' && o . h > )
return D ( state ( o . len + , p , o . h - , ) ) ;
return ;
} long long T3 ( const state o , const int p ) {
if ( s [ p ] == '(' )
return D ( state ( o . len + , p , o . h + , ) ) ;
if ( s [ p ] == '-' )
return D ( state ( o . len + , p , o . h , ) ) ;
if ( s [ p ] == '' )
return D ( state ( o . len + , p , o . h , ) ) ;
if ( s [ p ] >= '' && s [ p ] <= '' )
return D ( state ( o . len + , p , o . h , ) ) ;
return ;
} long long T4 ( const state o , const int p ) {
if ( s [ p ] == '' )
return D ( state ( o . len + , p , o . h , ) ) ;
if ( s [ p ] >= '' && s [ p ] <= '' )
return D ( state ( o . len + , p , o . h , ) ) ;
if ( s [ p ] == '(' )
return D ( state ( o . len + , p , o . h + , ) ) ;
return ;
} long long T5 ( const state o , const int p ) {
if ( s [ p ] == '' )
return D ( state ( o . len + , p , o . h , ) ) ;
if ( s [ p ] >= '' && s [ p ] <= '' )
return D ( state ( o . len + , p , o . h , ) ) ;
if ( s [ p ] == '(' )
return D ( state ( o . len + , p , o . h + , ) ) ;
return ;
}
今天Z老把BJOI的题当练习给我们做,结果这道题只有50分。检查出来多写了一个+1,一脸。。
BZOJ4531 && BJOI2014 trace的更多相关文章
- BZOJ4531: [Bjoi2014]路径
Description 在一个N个节点的无向图(没有自环.重边)上,每个点都有一个符号, 可能是数字,也可能是加号.减号.乘号.除号.小括号.你要在这个图上数 一数,有多少种走恰好K个节点的方法,使得 ...
- HTTP Method详细解读(`GET` `HEAD` `POST` `OPTIONS` `PUT` `DELETE` `TRACE` `CONNECT`)
前言 HTTP Method的历史: HTTP 0.9 这个版本只有GET方法 HTTP 1.0 这个版本有GET HEAD POST这三个方法 HTTP 1.1 这个版本是当前版本,包含GET HE ...
- 安卓开发error opening trace file: No such file or directory (2)报错原因
error opening trace file: No such file or directory (2) 这个问题的出现是因为运行的测试机android系统版本和项目api不一致导致. 改成一样 ...
- Logging with Debug And Trace (一)
对于一个应用程序而言,Log 必不可少. 在.net 里面,最简单的方式就是用Console 来输出 信息了,例如下面的例子: public class Program { public static ...
- 使用WCF的Trace与Message Log功能
原创地址:http://www.cnblogs.com/jfzhu/p/4030008.html 转载请注明出处 前面介绍过如何创建一个WCF Service http://www.cnblo ...
- Trace1:Default Trace
sql server trace 是一个轻量级的追踪工具,对追踪数据库的行为很有用,因此,sql server内置一个trace(default trace). 1,sql server 内置Defa ...
- SQL Server 默认跟踪(Default Trace)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) 查看默认跟踪信息(Default Tr ...
- trace与代码跟踪服务
首先开篇引用<MVC2 2 in action>里面一段关于这个跟踪服务的话 When you called Trace.Write() in Web Forms, you were in ...
- rabbitmq trace 日志的使用以及其疑惑之处
RabbitMQ 默认日志里只有类似客户端"accpet/close"等信息,对于有异常或者跟踪消息内部结构就比较麻烦了. 不过MQ有个rabbitmq_tracing插件,安装该 ...
随机推荐
- Java语言利用Collections.sort对Map,List排序
1.main方法包含TreeMap排序1,TreeMap排序2,HashMap排序,List<Integer>排序,List<Bean>排序,List<Map>排序 ...
- Python基础——字典和有序字典
字典 说明: 在 Python 中, 字典 是一系列 键 — 值对 .每个键都与一个值相关联,你可以使用键来访问与之相关联的值.与键相关联的值可以是数字.字符串.列表乃至字典.事实上,可将任何 Pyt ...
- python面向对象-多继承区别
#!/usr/local/bin/python3 # -*- coding:utf-8 -*- ''' 构造方法继承策略: 在python2中,经典类是按照深度优先继承构造方法的:新式类是按照广度优先 ...
- ruby 数据类型Symbol
一.符号创建 符号是Symbol类的实例,使用冒号加一个标识符即可创建符号 :a :"This is a symno" 二.符号字符串相互转换 p :symbol.to_s #=& ...
- 开发必备知识点--django项目启动时,url加载之前,执行某个.py文件
django项目启动时,自定义执行某个py文件 在任意的app下的apps.py中的Config类下自定义ready()方法,并且调用autodiscover_modules. app01/apps. ...
- 关于VSCode如何缩进两个空格
使用VSCode编写vue的时候,由于缩进问题经常报错.(默认缩进4个空格,实际规范上是两个空格) 更改VSCode的缩进格式. 但是此时你在编写代码的时候却发现任然缩进4格,此时因为vscode默认 ...
- CS61B sp2018笔记 | Lists
Lists csdn同作者原创地址 1. IntLists 下面我们来一步一步的实现List类,首先你可以实现一个最简单的版本: public class IntList { public int ...
- python2.7练习小例子(十)
10):古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析:兔子的规律为数列1,1 ...
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程) 分类: 数据库
CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS ) ) ) declare @xtype tinyint declare @name ...
- Github上的1000多本免费电子书重磅来袭!
Github上的1000多本免费电子书重磅来袭! 以前 StackOverFlow 也给出了一个免费电子书列表,现在在Github上可以看到时刻保持更新的列表了. 瞥一眼下面的书籍分类目录,你就能 ...