AOJ 708 序列匹配

2022-07-29 13:42:16 字數 1757 閱讀 9467

time limit: 5000 ms   memory limit: 128 mb

total submission: 146   submission accepted: 34

description

給定兩個長度均為3的數字序列,每位上為乙個範圍是1-n的正整數,求有多少個仍然由3個1-n的整數構成的數字序列能與給定的兩個序列中的任意乙個匹配。

如果兩個序列匹配,當且僅當兩個序列中的每個對應數字的最近距離不超過2。

比如當n為9時,每一位數字可能是1,2,3,4,5,6,7,8,9,並且數字是迴圈的。也就是說9和1是相鄰的。

數字之間的距離就是兩個數字的位置之差。

也就是說在上面的例子中,9和1的最近距離是1,9和2的最近距離是2,2和5的最近距離是3。

比如現在給定兩個序列組合為(1,2,3)和(4,5,6), (2,4,8)或者(1, n, 5) 是能和兩個序列匹配中的至少乙個匹配的,但是(1, 5, 6)是不能和給定的兩個序列中的任何乙個匹配的。

input

多組輸入,以eof結束。

每組輸入包含三行第一行為乙個整數n(1 <= n <= 50),第二行和第三行都是以三個空格分隔的整數。

output

對於每組輸入,輸出乙個數字,表示能和給定的兩個序列中的任意乙個匹配的序列的個數。

sample input

original

transformed

50

1 2 3

5 6 7

sample output

original

transformed

249

source

roll

建立乙個三維座標系,把能覆蓋到的地方全部標記上,然後計算數量

其中要注意小於等於0和大於n的情況**換後還應該在0-n之間)。

1/*2

by:ohyee

3github:ohyee

4email:[email protected]*/

6 #include 7 #include 8 #include 9 #include 10 #include

11 #include 12 #include 13 #include 14 #include 15 #include 16

using

namespace

std;

1718

#define rep(n) for(int o=0;o19

20const

int maxn = 55;21

2223

bool

do() ;

3031

for(int x = a1 - 2;x <= a1 + 2;x++)

32for(int y = b1 - 2;y <= b1 + 2;y++)

33for(int z = c1 - 2;z <= c1 + 2;z++)

41for(int x = a2 - 2;x <= a2 + 2;x++)

42for(int y = b2 - 2;y <= b2 + 2;y++)

43for(int z = c2 - 2;z <= c2 + 2;z++)

50 printf("

%d\n

",cnt);

51return

true;52

}535455

intmain()

30 序列構造

給定兩個長度為 n 的正整數序列 a a1,a2,an 和 b b1,b2,bn 現在你選擇 k 個數構成序列 p p1,p2,pk 使得 序列 p 中的元素是不重複的1 pi n 其中1 i k2 ap1 a pk 大於序列 a 所有元素的和2 bp1 b pk 大於序列 b 所有元素的和 k 小...

192220序列型別

序列表示索引未非負整數的有序物件集合,包括字串,列表,元祖。說明 舉例 元祖跟裡面的逗號相關 mytuple a b c d type mytuple 列表根中括號相關 mylist a b c d type mylist 字串跟雙引號有關 mystr a,b,c,d type mystr 適用於所...

38 序列解包

序列解包可以用於元組 列表 字典。序列解包可以讓我們方便的對多個變數賦值。1 也就是以下 效果 類似。in 35 a,b c,d 1,2 3,4 in 36 aout 36 1in 37 bout 37 2in 38 cout 38 3in 39 dout 39 4序列解包用於字典時,預設是對 鍵 ...