C Make Good(構造,思維)

2021-10-02 05:26:03 字數 987 閱讀 2478

題意:給定n個數(1<=n<=1e5)ai(1<=ai<=1e9),現在在原陣列種新增最多3個數(範圍為1到1e18),使得新陣列滿足∑i=

1mai

=2∗(

a1⨁a

2⨁..

.⨁am

)\sum_^a_i=2*(a_1\bigoplus a_2\bigoplus...\bigoplus a_m)

∑i=1m​

ai​=

2∗(a

1​⨁a

2​⨁.

..⨁a

m​)題解:

定義原陣列的累加和為s

ss,異或和為x

xx,那麼當x∗2

>=s

x*2>=s

x∗2>=s

時,我們可以在兩邊新增2個數(x∗

2−s)

/2

(x*2-s)/2

(x∗2−s

)/2即可;

(偷看了官方題解)為了保證最後得到的新陣列的x1∗

2>=s

1x1*2>=s1

x1∗2

>=s

1,我們可以在陣列加上數2

502^

250,其正確性易證。

#include

using namespace std;

#define ll long long

const

int maxn=

200010

;int n;

intmain()

a=(1ll

<<50)

+(s%2)

; s+

=a;x^

=a; ll ans=

(x*2

-s)/2;

printf

("3\n%i64d %i64d %i64d\n"

,a,ans,ans);}

return0;

}

HDU Permutation 構造,思維

題目傳送 題意 給你乙個排列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...

C Palindromifier 思維 構造

思路 看到30次的時候以為有特殊的方法構造,但是看到每次的長度都會是變的,沒能覺得什麼演算法能o n 解決下來吧 畢竟我才疏學淺 最開始的時候構造wa1了。因為沒看到不能用取到第乙個數。如果能用就可以比較方便的2次就能迴轉了。但是這時候可以發現其實只要幾次就能轉變的端倪了。通過abcdef這個串去構...

cf Engineer Artem 思維 構造

題意先給你乙個理想的矩陣定義 每個位置的數跟它四周 上下左右 的數都不相同 然後給你乙個矩陣,問是否可以通過一些操作來達到這個理想矩陣,然後輸出這個理想的矩陣 答案不唯一 操作就是你可以對任意位置的數進行 1 操作,但是每個位置只能進行一次 思路將 每個位置的 橫座標跟縱座標的和 i j 進行奇偶判...