Swust OJ 385 自動寫詩

2022-05-13 03:51:09 字數 1963 閱讀 7903

time limit(ms): 5000        memory limit(kb): 65535

description

江油是李白故里。馬可波羅來到李白故里,突然詩性大發,準備吟詩兩句。

眾所周知,詩句講究對仗。馬可波羅中文水平有限,所以想從已知的佳句中找出兩句對偶的,組合出一些新的詩句。

為了簡化問題,小馬只選擇七個字的佳句,並把它們的形式化成了字母(按意群將句子分組、斷開)。例如「海上明月共潮生」可化為「aabbccd」,也可以化為「yyqqzzh」,即字母只起顯示結構的作用,與句子內容無關。

兩個句子按照字母的連續性分段後,如果各成分的字數依次相同,則這兩個句子對偶。例如:例如「qblllde」和「dezzzbf」,將第一句按照字母的連續性分為5段:q、b、lll、d、e,每段長度分別為1、1、3、1、1,而第二句經過斷句後,各段的長度也分別為1、1、3、1、1,因此這兩個句子對偶。

注:「aabcccd」和「eefbbbe」這類句子也算作對偶:第二個句子中兩次出現「e」,但「e」是斷開的,所以斷句情況仍為:2、1、3、1。由於字母只用來突出結構,所以如果出現兩次同樣的字母串,則它們表示的詩句內容不相同。

樣例解析:

「abcccda」和「dezzzbf」兩句形式相同,可以組成1對對偶佳句。

「lllmnno」、「aaabccd」和「kkkxppq」形式都相同,任取兩個共可組成3對不同的對偶佳句。

input

第一行,乙個整數n,2≤n≤100000

以下n行,每行都有乙個由七個大寫字母組成的字串,代表乙個佳句。

output

乙個整數:這些佳句可以拼湊成的對偶佳句的種類數。

sample input

5abcccda

lllmnno

dezzzbf

aaabccd

kkkxppq

sample output

4

hint

解題思路: 

1、利用位運算按以下規則處理每乙個字串s,對應每乙個字元資訊放在乙個數bit的每一位中,得到每乙個字元對應的數bit

(1) if(s[i]==s[i-1]) bit_t=1;  bit_t代表數bit的第i位;

(2) if(i==0||s[i]!=s[i-1]) bit_t=0;

2、由於只有7個字元,二進位制狀態下bit最多7位,那麼bit的範圍在[0,126] 之間,(二進位制下就是,[0000000,1111110])

3、開乙個126的hash陣列,對於每乙個bit有(hash[bit]++),代表了當前這種結構的「詩」的句數

4、總對數cnt=hash[0]*(hash[0]-1)/2+***+hash[n]*(hash[n]-1)/2   (和求多邊形對角線條數乙個道理)

**如下:

1 #include 2

using

namespace

std;

3int hash[1

<< 7

], t, cnt;

4char s[8];5

intmain()

15for (int i = 0; i < (1

<< 7); i++)

16 cnt += hash[i] * (hash[i] - 1) / 2

;17 cout << cnt <

18return0;

19 }

view code

requests 自動寫部落格

前兩天寫過乙個關於session的部落格,session登入過後,可以進行一系列的操作,今天通過模擬登入,自動寫部落格 我們先理下書寫的思路 1.通過request訪問 2.通過session儲存cookies 3.攜帶儲存的cookies進行請求寫部落格的介面 4.編寫部落格內容,進行儲存,發部落...

Python實現自動寫郵件

上星期接到任務要完成乙個自動寫郵件的指令碼,基本功能是每兩小時執行一次程式跑出統計 並將統計 的summary傳送到領導的郵箱。由於公司是做數字貨幣的,每兩小時實時監測策略交易情況較為必要。下面來實現自動寫郵件的功能部分 import smtplib from email.mime.text imp...

python寫selenium自動化測試碰到的問題

1 讀取xml配置檔案報錯e attributeerror function object has no attribute read 解決 少加了return xml word self.read xml.return xml test 001 search key words 2 xml檔案標籤...