2018 10 4 二連爆搜 再次出鍋

2022-05-02 04:09:08 字數 3932 閱讀 3484

【題目描述】

五子棋是世界智力運動會競技專案之一,是一種兩人對弈的純策略型棋類遊戲。通常雙方分別使用黑白兩色的棋子,下在棋盤直線與橫線的交叉點上,先形成五子連珠者獲勝。

五子連珠是在 橫線,縱線,斜線,反斜線 四個方向上形成五子及以上的連線,當出現多於五子的連珠時,也只記為一次五子連珠。

五子連珠總數. 等於棋局中的所有方向上的五子連珠連線的數量之和。我們想知道,給定乙個長寬皆為 n 的棋局,白棋落在哪些點可以增加白棋五子連珠總數?對增加白棋五子連珠總數的舉例說明 (a 點為我們選擇的落點):

1   wwwwabbbb

落白棋之前未形成五子連珠,落入白棋之後,五子連珠總數加一,滿足要求。

2   wwwwwabbbb

落白棋之前已經形成五子連珠,落白棋之後,五子連珠總數不變,不滿足要求。

3   wwwwwawwwww

落白棋之前五子連珠總數為二,落入白棋之後,兩邊連成一線,五子連珠總數減

一,不滿足要求。

4*w***w*****

**w**w*****

***w*w*****

****ww*****

wwwwwawwwww

落白棋之前五子連珠總數為二。落入白棋之後,兩邊連成一線,斜向和縱向形成新的五子連珠,總數為三。五子連珠總數加一,這個點滿足要求。

【輸入格式】

從檔案 wuzi.in 中讀入資料。輸入為第一行為乙個數字 n(n ≤ 40),表示棋盤大小。接下來的 n 行,每行為 n 個字元,可能有三種字元,*表示無棋子,b表示黑棋,

w表示白棋。輸入棋局中可能已經有五子連珠的情況,我們需要計算能增加白棋五子連珠總數的白棋落點。

【輸出格式】

輸出到檔案 wuzi.out 中。輸出為 k 行,包括 k 個滿足要求的落點,k 個點按照從左至右,從上至下的順序輸

出,即先按行排序,再按列排序輸出。

每行為乙個點座標 $(x,y)$,分別表示列座標,行座標,以空格分隔,座標序號從0開

始,棋盤左上角為原點。

*a***

*****

*****

*****

***b*

圖中 a 點的座標為 $(1,0)$,b 點的座標為 $(3,4)$。

【樣例輸入】

8****b*bb

*****b*b

bb*bbbw*

w*wbwwww

bwwbwwbw

ww**wbbw

*bww***w

***bwb*b

【樣例輸出】

7 22 5

3 54 6

2 7【子任務】

共20組資料

1,2 沒有滿足要求的點

3,4,5,6,7,8 只需要計算橫縱方向, 棋局中不存在舊的五子連珠

9,10,11,12,13,14 需要計算所有方向, 棋局中不存在舊的五子連珠

15,16,17,18,19,20 盤面上存在舊的五子連珠

只考慮中間隔乙個點的連棋,所以直接爆搜,判各個方向的情況。

【題目描述】

給定乙個等式,其格式為 $p ◦ q = r$,其中 $1≤ p,q,r < 10^9$,算符 ◦ 可以是 +、- 或 

*(表示乘法)。

$p$,$q$ 和 $r$ 中的某些數字被替換成了大寫字母,例如 $a09+ c0b = 6ac$。你的任務是找出所有大寫字母代表的數字,使得等式成立。

你需要遵循下列規則:

1. 相同的字母替換成相同的數字,不同的字母替換成不同的數字。

2. $p$、$q$ 和 $r$ 不能以$0$開頭。稱兩個方案不同,如果存在乙個字母被替換成了不同的數字。考慮到方案數可能很多,你只需要輸出合法方案的數量。注意如果沒有方法使得等式成立,你應該輸出$0$。

【輸入格式】

從檔案 equation.in 中讀入資料。

輸入只有一行,表示需要處理的等式。保證最多只有9個不同的字母,等式中不會出現空格。

【輸出格式】

輸出到檔案 equation.out 中。

輸出乙個整數,表示方案的數量。

【樣例1輸入】

a09+c0b=6ac

【樣例1輸出】

1【樣例1解釋】

唯一合法的方案是109+506=615。

【樣例2輸入】

p*q=p

【樣例2輸出】

8【樣例3輸入】

canada-mar8=ccc

【樣例3輸出】

0【子任務】

總共有 10 個測試點。

對於測試點1∼3,等式中最多有3個不同的字母。

對於測試點1、2、4、7和8,◦ 只可能是 + 或 -。

對於測試點1、4、5和6,每個字母只會出現一次。

先特判一下,超過10個字母,方案數直接是0。

那對於最多10個字母,由於每個字母只代表乙個數且不同的字母代表的數不相同,所以列舉每個字母的取值,方案數是$10!=3628800$。

於是寫個合格的搜尋就過了……

【題目描述】

++c 語言是 c++ 語言的一種變體,這種語言給 c++ 新增了很多的功能。其中一 個實用的功能是注釋巢狀,任意的 /* 和 */ 組成的括號可以互相巢狀,即 /*/*a*/*/ 是一段合法的**。

你已經用 ++c 寫了乙份**,但你的公司是根據**的長度計算你的工作量的, 因此你希望在**的末尾加上一段「純注釋」,以此增加你的**長度。

以下是 純注釋 的形式化定義:

• 空串是純注釋

• 在 /* 和 */ 中間僅包含若干個純注釋和小寫字母的串(可以沒有小寫字母)是純注釋

• 如果 s 和 t 都是純注釋,那麼 st 是純注釋

現在你手裡有一段長度為 n 的**,其中有若干個位置已經確定,必須填寫給定的字元;有些位置可以由你自由設定,用 $?$ 表示。 你希望將它改成純注釋並多次提交它。但為了防止被系統查出,你希望每次提交不同的純注釋。因此你想要知道有多少種不 同的設定自由位置的方式。為了避免高精度運算,請輸出答案除以 $10^9 + 7$ 的餘數。 注意,一種可能發生的情況是,任何設定自由位置的方式都不能得到純注釋,對於這種情況請輸出 $0$。

【輸入格式】

從檔案 code.in 中讀入資料。 輸入檔案包含多組資料,每一行都是一組資料,直到檔案末尾結束。 每組資料僅一行乙個長度為 n 的僅包含 $/$、$*$、$?$ 和小寫字母的字串。

【輸出格式】

輸出到檔案 code.out 中。 對於每一組資料,輸出所有可以通過將 ? 替換為其他字元得到的不同純注釋字元 串的個數除以 $10^9 + 7$ 的餘數。

【樣例 1 輸入】

/*?*/

【樣例 1 輸出】

26【樣例 1 解釋】

? 可以換成任意小寫字母。

【樣例 2 輸入】???

???????

?????

??????

???????

????????

【樣例 2 輸出】00

0126676

17576

456978

【子任務】

對於 20% 的資料,輸入不包含 $?$;

對於另外 30% 的資料,輸入的 $?$ 不超過 8 個;

對於前 70% 的資料,$n≤1000$;

對於所有資料,資料組數 $≤10$,$n≤2×10^4$。

按照出題人的意思,寫個我們都熟悉的括號匹配dp就完了。

$dp[i][j]$表示到從第$1$到$i$位中,還有$j$個左括號還沒被右括號匹配掉時的填空方案數。最終正確的注釋是 處理完所有位 且 左右括號完全匹配的,所以結果是$dp[n][0]$。

由於左、右括號都是注釋,佔兩位,再加上要讓最終所有左右括號匹配,最多隻可能有$n/2/2 = n/4 = 5000$個左括號。所以時間複雜度是$o(n*\frac)$的,最多$20000*5000=10^8$,在3秒的時限 + 開氧氣的條件下可以卡過。

至於空間,第一維是可以滾動的,所以省了第一維的空間。

我今天表演加班,一連,二連,三連

是為dos提供的有力的除錯,跟蹤程式執行,檢查系統資料的工具程式,它是在字元介面下以單字元命令方式工作。要很好地使用它必須具備一定的彙編程式設計和硬體基本知識的能力,當然,它為組合語言程式設計師提供了有效的除錯手段,它的功能包括以下幾個方面。1.直接輸入 更改 跟蹤 執行匯程式設計序 2.觀察作業系...

R基礎學習(二) 連線sqlserver

測試環境 win10 rstudio 三個步驟 1 建立odbc資料來源 2 install.packages rodbc 3 編寫連線測試指令碼 1 建立odbc資料來源 控制面板 系統和安全 管理工具 odbc資料來源 64位 系統dsn,點選新增按鈕,接著選擇安裝資料來源驅動程式 sql se...

php 學習二,連線資料庫

pdo,資料庫抽象層 php data object 跨平台資料 主要原理,把資料處理業務邏輯和資料庫連線區分開 主要php無論連線什麼資料庫,都不影響php業務邏輯 oop物件導向程式設計pdo類庫是php自帶的類庫,只需要在php.ini中把pdo類庫注釋去掉就可以了,然後選擇不同的資料庫型別驅...