HDU Permutation 構造,思維

2021-10-07 05:36:10 字數 1485 閱讀 2667

題目傳送

題意:

給你乙個排列n(也就是元素從1到n),現在讓你構造一下這個陣列,使得a[i] % | a[i] - a[i-2] | == 0(a[i] - a[i-2]的絕對值,i >= 3)。

思路:

如果我使得a[i] - a[i-2] == 1,那麼不就萬能啦?!

ac**

#include

inline

long

long

read()

while

(c >=

'0'&& c <=

'9')

return x*s;

}using

namespace std;

#define newnode (treenode *)malloc(sizeof(treenode))

#define mem(a,b) memset(a,b,sizeof(a))

#define lowbit(x) (x)&(-x)

const

int n =

1e6+10;

const

long

long infinf =

0x7f7f7f7f7f7f7f

;const

int inf =

0x3f3f3f3f

;const

double eps =

1e-7

;const

unsigned

long

long mod =

1e9+7;

const

double ii =

acos(-

1);const

double pp =

(ii*

1.0)/(

180.00);

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair<

int,

int> pii;

typedef pair piil;

intmain()

;for

(int i =

1;i <= n;i +=2

) arr[i]

= num++

;for

(int i =

2;i <= n;i +=2

) arr[i]

= num++

;for

(int i =

1;i <= n;i++

) i != n ? cout << arr[i]

<<

" ": cout << arr[i]

<< endl;

}}

虛析構 純虛析構

析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。從高到低依次析構 因為在c 中,當乙個派生類物件通過使用乙個基類指標進行刪除 b a a a new b delete a 而這個基類有乙個非虛的析構函式,則結果是未定義的...

C 析構函式 虛析構函式

1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...

虛析構和純虛析構

多型使用時,如果子類有屬性開闢到堆區,那麼父類指標在釋放時無法帶呼叫到子類的析構 解決方式 將父類的析構函式改為純虛析構或者虛析構 1.可以解決父類指標釋放子類物件 2.都必須要有具體的函式實現 虛析構和純虛析構的區別 如果是純虛析構,該類屬於抽象類,無法例項化物件 include include ...