nyoj 109 數列轉換

2021-08-26 12:10:42 字數 1838 閱讀 3860

時間限制:3000 ms  |  記憶體限制:65535 kb

難度:3

描述有乙個數列a1,a2,a3...an,每次可以從中任意選三個相鄰的數ai-1 ,ai , ai+1 ,進行如下操作(此操作稱為「對ai進行操作」)

(ai-1,ai,ai+1)->(ai-1+ai,-ai,ai+ai+1)

給定初始和目標序列,是否能通過以上操作,將初始序列轉換成為目標序列?例如,初始序列(1 6 9 4 2 0)目標序列(7 -6 19 2 -6 6)可經過如下操作:

(1 6 9 4 2 0)->( 1 6 13 -4 6 0)->(1 6 13 2 -6 6)->(7 -6 19 2 -6 6)

請你判斷給定的初始狀態和目標狀態,輸出yes(能夠轉換)或no(不能轉換)

輸入第一行是乙個正整數n,表示測試資料的組數。(n<=100)

每組測試資料的第一行是乙個整數m(3<=m<=1000),表示該組測試資料的起始狀態與結束狀態都有m個數。

每組測試資料的第二行是m個整數ai(-1000<=ai<=1000),表示起始狀態。

每組測試資料的第三行是m個整數bi(-1000<=bi<=1000),表示終止狀態。

輸出如果能夠轉換,輸出yes

如果不能轉換,輸出no

樣例輸入

2

31 2 3

1 3 2

61 6 9 4 2 0

7 -6 19 2 -6 6

樣例輸出

no

yes

理解:說的高大上一點這道題用到了守恆定律,剛開始我也很懵逼,後來分析了一下題意,發現(ai-1,ai,ai+1)->(ai-1+ai,-ai,ai+ai+1)的過程中總和是不變的,即(ai-1 + ai + ai+1) == (ai-1+ai  + -ai  +  ai+ai+1),於是雖然不是很懂,但還是略有所思(裝逼)地對自己點了點頭。以下分析拷貝別人的(和

我們看這道題是從(an-1,an,an+1)轉化到(an-1+an,-an,an-1+an),三個數的和是不變的。

那我們就想到是否數列額總和一樣,兩個數列就可以互達呢?

在我們下結論之前肯定要舉幾個例子,驗證一下。

好現在考慮(1 2 3)(1 3 2)

(1 2 3)→(3,-2,5)→(1 2 3)所以這個想法是不行的

總和雖然不行,我們可以試著考察區域性和(即前n項和)

(an-1,an,an+1)  (an-1+an,-an,an-1+an)

sn-1=an-1      s』n-1=an-1+an

sn=an-1+an    s』n=an-1

sn=an-1+an+an+1    s』n+1=an-1+an+an+1

可以看到前後兩個數列的前兩項是位置是相反的,最後乙個位置是不變的。

很容易的,我們推廣一下:sn=a1+a2+a3+...+an-1+an,那麼題述規則就是相當於交換sn-1.sn,也就是說,兩個數列,分別求前n項和,排序後,看是否對應相等。

**:

#include#include#include#define m 1005

int cmp(const void *a,const void *b)

bool isequal(int *a,int *b,int n)

int main()

for(i=0;iqsort(a,m,sizeof(int),cmp);

qsort(b,m,sizeof(int),cmp);

if(isequal(a,b,m))

printf("yes\n");

else

printf("no\n");

} return 0;

}

nyoj 109 數列轉換

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 有乙個數列a1 a2,a3 an 每次可以從中任意選三個相鄰的數ai 1 ai ai 1 進行如下操作 此操作稱為 對ai 進行操作 ai 1,ai,ai 1 ai 1 ai,ai,ai ai 1 給定初始和目標序列,是否能通過...

nyoj109 數列轉換

時間限制 3000 ms 記憶體限制 65535 kb 難度 3描述 有乙個數列a1 a2,a3 an 每次可以從中任意選三個相鄰的數ai 1 ai ai 1 進行如下操作 此操作稱為 對ai 進行操作 ai 1,ai,ai 1 ai 1 ai,ai,ai ai 1 給定初始和目標序列,是否能通過以...

NYOJ109 數列轉換 守恆技巧 數學

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 有乙個數列a1 a2,a3 an 每次可以從中任意選三個相鄰的數ai 1 ai ai 1 進行如下操作 此操作稱為 對ai 進行操作 ai 1 ai,ai 1 ai 1 ai,ai ai ai 1 給定初始和目標序列,是否能通過...