#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的更多相关文章

  1. BZOJ4531: [Bjoi2014]路径

    Description 在一个N个节点的无向图(没有自环.重边)上,每个点都有一个符号, 可能是数字,也可能是加号.减号.乘号.除号.小括号.你要在这个图上数 一数,有多少种走恰好K个节点的方法,使得 ...

  2. 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 ...

  3. 安卓开发error opening trace file: No such file or directory (2)报错原因

    error opening trace file: No such file or directory (2) 这个问题的出现是因为运行的测试机android系统版本和项目api不一致导致. 改成一样 ...

  4. Logging with Debug And Trace (一)

    对于一个应用程序而言,Log 必不可少. 在.net 里面,最简单的方式就是用Console 来输出 信息了,例如下面的例子: public class Program { public static ...

  5. 使用WCF的Trace与Message Log功能

      原创地址:http://www.cnblogs.com/jfzhu/p/4030008.html 转载请注明出处   前面介绍过如何创建一个WCF Service http://www.cnblo ...

  6. Trace1:Default Trace

    sql server trace 是一个轻量级的追踪工具,对追踪数据库的行为很有用,因此,sql server内置一个trace(default trace). 1,sql server 内置Defa ...

  7. SQL Server 默认跟踪(Default Trace)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 基础知识(Rudimentary Knowledge) 查看默认跟踪信息(Default Tr ...

  8. trace与代码跟踪服务

    首先开篇引用<MVC2 2 in action>里面一段关于这个跟踪服务的话 When you called Trace.Write() in Web Forms, you were in ...

  9. rabbitmq trace 日志的使用以及其疑惑之处

    RabbitMQ 默认日志里只有类似客户端"accpet/close"等信息,对于有异常或者跟踪消息内部结构就比较麻烦了. 不过MQ有个rabbitmq_tracing插件,安装该 ...

随机推荐

  1. js继承的几种方法和es6继承方法

        一.原型链继     1.基本思想     利用原型链来实现继承,超类的一个实例作为子类的原型     2.具体实现     function F() {}     //原型属性,原型方法: ...

  2. Ajax知识总结

    一 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法.AJAX 最大 ...

  3. Java小功能大杂烩

    生成UUID: import java.util.UUID; public class ProductUUID { // 随机返回前十位的UUID public static String getUU ...

  4. thinkphp5 前台模板的引入css,js,images

    一:在公共的静态文件夹中建立我们模块的名称用来放置css,js,images 二:在配置文件config中定义需要的路径 三:在视图页面引入

  5. 9.1 IIC驱动源码分析

    学习目标:分析linux内核源码下的i2c总线驱动 drivers/i2c/busses/i2c-s3c2410.c 和 driver/i2c/chips/eeprom.c 设备驱动: 一.i2c驱动 ...

  6. 09 mongoDB基础(进阶)

    mongoDB基础 阶段一.认识mongodb 1.mongodb 组织数据的基本形式 MongoDB————>数据库————>集合————>文档 mysql:表:行和列:字段 运用 ...

  7. python基础小知识,is和==的区别,编码和解码

    1.is和==的区别 1)id() 通过id()我们可以查看到一个变量表示的值在内存中的地址 >>> s1 = "Tanxu" >>> s2 = ...

  8. Linux中的目录功能(Red Hat 7)

    目录的基本功能: /bin:存放普通用户使用的命令 /sbin:存放管理员可以执行的命令 /home:存放普通的家目录 如张三家目录为/home/zhangsan /root:管理员的家目录 /etc ...

  9. java web项目使用ant编译将不同的功能代码打包成jar,进而分局点将项目打包成不同的tar.gz包进而部署

    使用ant可以轻松的将一个项目分离代码,直接打包成不同需求的tar.gz包使用 1.build.properties (属性) version.num=1.0 #版本信息 2.build.xml (a ...

  10. sudo mount -o loop pm.img /mnt/floppy

    sudo mount -o loop pm.img /mnt/floppy 最近在学<一个操作系统的实现>,由于这本书比较老了,所以有一些对于软盘的操作指令现在用会出现一些错误,当我进行虚 ...