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插件,安装该 ...
随机推荐
- android 自定义图片圆形进度条
感觉话一个圆形进度条挺简单的 ,但是却偏偏给了几张图片让你话,说实话我没接触过,感觉好难,还好百度有大把的资源,一番努力下终于画出来了. 代码如下. package com.etong.cpms.wi ...
- springmvc重定向请求。
SpringMVC重定向传参数的实现(来自网友) 验证了我说的,从model层中拿来的数据,不管什么类型,都是通过隐含模型,中转,放入request中的.除非你特意把这些数据放到session域中. ...
- jdbc最基础的mysql操作
1.基本的数据库操作 这里连接数据库可以做成一个单独的utils类,我这里因为程序少就没有封装. 虽然现在jdbc被其他框架取代了,但这是框架的基础 如下:第一个是插入数据操作 package Dat ...
- 基于pygame的打砖块游戏,做到一半,不带做了
跟着一个博主做的,前面的变量的定义全是内个哥们的,没带任何改动,就做了个界面,背景音乐,绘制了个小球,绘制了挡板 小球可以撞到边界反弹,然后做了砖块,定义了一个存放砖块的列表,,,就没有下文了 原博主 ...
- python基础,导入模块,if语句,while语句
python基础 python代码 变为字节码 变为机器码 最后执行执行‘文件名.py’文件时出现的‘文件名.pyc’文件为字节码 缓存机制 使用pycharm的时候在文件最开始添加下面这两行代码,中 ...
- webug学习(1)
webug的题目,比较简单,拿来巩固一哈. 1. 一看就知道是注入漏洞了,啥也不说sqlmap直接开炮. 先-u 之后-u 网址 --current-db 获取当前网址的数据库 所以当前数据库就是 p ...
- java 解析xml 多命名空间问题
先贴段有命名空间的xml吧.. <feed xmlns:im="http://itunes.apple.com/rss" xmlns="http://www.w3. ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(五):测试项目
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- 用ServiceStack操作使用redis的问题
最近在学习Redis,查阅网上很多资料后使用SericeStack连接redis.在nuget中下载ServiceStack.Redis,主要使用到四个dll 但是运行之后会出现一堆奇怪问题:没有实现 ...
- 配置ORACLE的PRO*C环境
1.访问数据库的方法 在ORACLE数据库管理和系统中,有三种访问数据库的方法: ⑴.用SQL*Plus, 它有SQL命令以交互的应用程序访问数据库: ⑵.用第四代语言应用开发工具开 ...