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插件,安装该 ...
随机推荐
- windows下上传shell脚本不能运行—将dos模式修改为unix 文件格式
windows下上传shell脚本至linux,其格式将为dos.dos模式的shell脚本将不能再linux下正确运行,需要修改文件模式为unix. 1 查看文件模式方法 linux服务器上,用vi ...
- python中如何统计一个类的实例化对象
类中的静态变量 需要通过类名.静态变量名 来修改 :通过对象不能修改 python中如何统计一个类的实例化对象?? class Person: #静态变量count,用于记录类被实例化的次数 coun ...
- go执行外部应用
go执行外部应用 最近想将原来用asp.net mvc写的一个公司内部网站改用beego来写,但发现其中有一个功能是,能将加密的sqlite文件进行解密,因为这个解密是不能公开的,但有些同事需要查看这 ...
- 用ServiceStack操作使用redis的问题
最近在学习Redis,查阅网上很多资料后使用SericeStack连接redis.在nuget中下载ServiceStack.Redis,主要使用到四个dll 但是运行之后会出现一堆奇怪问题:没有实现 ...
- PRO*C 函数事例 1 -- 数据库连接、事务处理
1.程序结构 每一个Pro*C程序都包括两部分:(1)应用程序首部:(2)应用程序体 应用程序首部定义了ORACLE数据库的有关变量, 为在C语言中操纵ORACLE数据库做 ...
- 基于jersey和Apache Tomcat构建Restful Web服务(一)
基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来 ...
- 阅读MDN文档之布局(四)
Introducing positioning Static positioning Relative positioning Introducing top, bottom, left and ri ...
- hdu1505City Game(动态规划)
City Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- 自动化测试(一)-get和post的简单应用
今天主要介绍两种测试的接口post和get: get和post是http的两种基本请求方式,区别在于get把参数包含在url中传递:给而post把参数以json或键值对的方式利用工具传递. get的传 ...
- 实用的placeholder插件,兼容IE下的placeholder,jquery插件
placeholder在IE下无法兼容 ,下面的插件很好的处理了这个问题,拿去不谢 /* * jQuery placeholder, fix for IE6,7,8,9 * @website itmy ...