3530: [Sdoi2014]數數

3530: [Sdoi2014]數數

鏈接

分析:

  對給定的串建立AC自動機,然后數位dp。數位dp的過程中,記錄當前在AC自動機的哪個點上,保證不能走到出現了給定串的點。

代碼:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
#include<cctype>
#include<set>
#include<queue>
#include<vector>
#include<map>
using namespace std;
typedef long long LL;inline int read() {int x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;for(;isdigit(ch);ch=getchar())x=x*10+ch-'0';return x*f;
}const int N = 2005, mod = 1e9 + 7;
int ch[N][10], q[N], fail[N], last[N], val[N], dp[N][N], Index;
char s[N], t[N];void Insert(char *s) {int len = strlen(s), u = 0;for (int i = 0; i < len; ++i) {int c = s[i] - '0';if (!ch[u][c]) ch[u][c] = ++Index;u = ch[u][c];}val[u] = 1;
}
void bfs() {int L = 1, R = 0;for (int i = 0; i < 10; ++i) if (ch[0][i]) q[++R] = ch[0][i];while (L <= R) {int u = q[L ++];for (int c = 0; c < 10; ++c) {int v = ch[u][c];if (!v) ch[u][c] = ch[fail[u]][c];else fail[v] = ch[fail[u]][c], last[v] = val[fail[v]] ? fail[v] : last[fail[v]], q[++R] = v;}}
}
int dfs(int pos,int now,bool lim,bool fir) { // 從高位數第pos位,在AC自動機上的位置,是否有小于n的限制,是否有前導0的限制 if (pos == 0) return 1;if (!lim && !fir && dp[pos][now] != -1) return dp[pos][now];int res = 0, u = lim ? (s[pos] - '0') : 9;if (fir) res = (res + dfs(pos - 1, 0, lim && 0 == u, 1)) % mod; // 如果當前依然沒有出現第一個正整數作為開始,那么繼續從0號點開始走,不能是ch[0][0]!!! for (int i = fir; i <= u; ++i) {int v = ch[now][i];if (val[v] || last[v]) continue; // last表示從當前點沿著fail指針跳的過程中,第一個是給定串的點 res = (res + dfs(pos - 1, v, lim && i == u , 0)) % mod;}if (!lim && !fir) dp[pos][now] = res;return res;
}
int main() {scanf("%s", s + 1);int n = strlen(s + 1);reverse(s + 1, s + n + 1);int m = read();for (int i = 1; i <= m; ++i) {scanf("%s", t);Insert(t);}bfs();memset(dp, -1, sizeof(dp));cout << (dfs(n, 0, 1, 1) - 1 + mod) % mod;return 0;
}

?

轉載于:https://www.cnblogs.com/mjtcn/p/10526404.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449631.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449631.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449631.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里云日志添加要查詢字段

第一步&#xff1a;在API基控制器&#xff08;base文件下&#xff09;下面 $arr 就是我要接受的所有參數值&#xff0c;而 msg_id就是我以后要在阿里云日志中查詢的字段&#xff0c;以此字段統計某些數據 $arr 是前臺API接口傳過來的數據 &#xff0c;這里我需要使用 $arr[id] …

總理整節從事量化交易員所做工作與代碼

數據獲取&#xff08;期權數據&#xff09; 本人從事領域為量化期權領域&#xff08;皇冠上的明珠&#xff0c;真好聽&#xff0c;可是做起來&#xff0c;難度真是&#xff08;滴-------------&#xff09;&#xff09;。從最開始的手動從三大所復制粘貼期權數據&#xff0c;到…

Docker 上安裝、啟動 MySQL (圖解)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 在docker倉庫中搜索mysql的鏡像&#xff1a; docker search mysql 下載鏡像&#xff1a; docker pull mysql 2. 查看本地鏡…

關于 std::set/std::map 的幾個為什么

2013-01-20 std::set/std::map &#xff08;以下用 std::map 代表&#xff09; 是常用的關聯式容器&#xff0c;也是 ADT&#xff08;抽象數據類型&#xff09;。也就是說&#xff0c;其接口&#xff08;不是 OO 意義下的 interface&#xff09;不僅規定了操作的功能&#xff…

HDU 3572 Task Schedule

傳送門 作業調度&#xff0c;這道題還真沒想到能用網絡流。。。。乍一看跟背包問題差不多。 有N個作業&#xff0c;M個機器&#xff0c;每個作業給你一個耗費時間&#xff08;時間段&#xff09;以及最早開始時間和最晚完成時間&#xff08;這兩個是時間點&#xff09;&#xf…

MariaDB安裝1,2

2019獨角獸企業重金招聘Python工程師標準>>> 4.22 MariaDB安裝 MariaDB是MySQL的一個分支。MySQL——>sun——>Oracle&#xff0c;維基百科&#xff1a;https://en.wikipedia.org/wiki/MariaDB 官網&#xff1a;https://mariadb.org MariaDB 10.3.11Linux64位…

CentOS 7 上 Docker 安裝

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Docker支持以下的CentOS版本&#xff1a; CentOS 7 (64-bit)CentOS 6.5 (64-bit) 或更高的版本前提條件 目前&#xff0c;CentOS 僅發…

python畫圖(散點圖,折線圖)

判斷小數點幾位 先將浮點數轉化為字符串&#xff0c;然后截取小數點右邊的字符&#xff0c;在使用len函數。 x3.25 len(str(x).split(".")[1]) 繪制散點圖 #需導入要用到的庫文件 import numpy as np # 數組相關的庫 import matplotlib.pyplot as plt # 繪圖庫 N …

pyqt 不規則形狀窗口顯示

#codingutf-8 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QWidget, QApplication from PyQt5.QtGui import QPixmap, QPainter, QBitmap, QCursor import PyQt5.QtCore as QtCoreclass PixWindow(QWidget): # 不規則窗體def __init__(self):super()…

【英語-劉曉艷-詞匯】詞匯06

【第一部分&#xff1a;回顧前 5 節單詞】 【第二部分&#xff1a;新單詞】 A. vivid 補充&#xff1a;viv 生存 revive     survive &#xff08;sur surface&#xff0c;surpass &#xff09; B. bright 20. When I read the newspaper, I always read the ___ first. A…

C/C++拾遺錄--關于一個C語言小程序的分析

雖然編了幾年程序&#xff0c;但是對于程序到底是什么規則變成匯編代碼的&#xff0c;在這里搞了一個小程序。用VC查看了一下匯編代碼。在此之前先介紹一下關于函數運行是堆棧變化的細節。 在高級語言編寫程序時&#xff0c;函數的調用是很常見的事情&#xff0c;但是在函數調…

保存tushare所有股票數據,并對漲停進行分析

import tushare as ts import pandas as pd import time import os import datetime # 指定自己要存放文件的絕對路徑 os.chdir(E:/) pd.set_option(expand_frame_repr, False) now_time datetime.date.today() # 從tushare獲取指定日期 def get_today_all_ts(date):date_now …

重命名 docker 容器名

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 docker 容器&#xff08;服務&#xff09;重命名只要一個命令就可以&#xff1a;docker rename 原容器名 新容器名 如&#xff1a;

vim編輯器常用命令總結

在命令狀態下對當前行用 &#xff08;連按兩次&#xff09;, 或對多行用n&#xff08;n是自然數&#xff09;表示自動縮進從當前行起的下面n行。你可以試試把代碼縮進任意打亂再用n排版&#xff0c;相當于一般IDE里的code format。使用ggG可對整篇代碼進行排版。 vim 選擇文本&…

java操作elasticsearch實現前綴查詢、wildcard、fuzzy模糊查詢、ids查詢

1、前綴查詢&#xff08;prefix&#xff09; //prefix前綴查詢Testpublic void test15() throws UnknownHostException {//1、指定es集群 cluster.name 是固定的key值&#xff0c;my-application是ES集群的名稱Settings settings Settings.builder().put("cluster.name&…

tushare查看a股是否跌到位

#%%#獲取上證指數歷史行情數據#獲取上證指數歷史行情數據 import tushare as ts import pandas as pd # 設置token&#xff0c;只需要在第一次調用或者token失效時設置 # 設置完成后&#xff0c;之后就不再需要這一個命令了 ts.set_token() pro ts.pro_api() df_daily pro.in…

為什么我要轉載文章?

在csdn上很多年&#xff0c;學習了許多&#xff0c;也教了人許多&#xff0c;但最近&#xff0c;大家發現&#xff0c;我轉載了大量文章&#xff0c;而很少原創文章&#xff0c;真正的有水平且自己一個字一個字敲鍵盤出來的&#xff0c;1000字要三四個小時&#xff0c;如果包含…

Docker 從Dockerfile 構建鏡像 :build 命令的用法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Dockerfile 創建完成后&#xff0c;可以使用 docker build 命令根據 Dockerfile 構建一個鏡像。 1. 首先準備好 Dockerfile : 2. 執行構…

(翻譯).NET應用架構

.NET應用架構 Kalyan Bandarupalli著&#xff0c;hystar翻譯 這個系列文章將幫助.NET開發人員與架構師使用最新的.NET技術設計高效的.NET應用。關于應用架構這方面雖然已有很多文章與書籍&#xff0c;但是對于設計人員理解應用設計的最佳的原則與實踐仍然是具有挑戰性的。這篇…

activity idea編寫bpmn流程文件

idea 的bpmn插件支持不好&#xff0c;1、畫流程圖&#xff0c;注意排他網關流程的條件&#xff0c;2、復制一份xml文件出來&#xff0c;頭部替換&#xff1a;<?xml version"1.0" encoding"UTF-8"?> <definitions xmlns"http://www.omg.org…