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 2view codeusing
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 }
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檔案標籤...