bzoj4915 簡單的數字題

2022-03-26 03:51:38 字數 1429 閱讀 1829

傳送門:

【題解】

出自第52屆imo試題第1題。

首先第一問一定是4(樣例給你了啊),如果要你證明,

我們不妨令a123

4那麼有s=a1+a2+a3+a4

s/2=a1/2+a2/2+a3/2+a4/2

那麼有a3/2+a4/2+a3/2+a4/2>a1/2+a2/2+a3/2+a4/2>s/2,即a3+a4>s/2,顯然這不可能是s的因數。

同理,a4/2+a2/2+a2/2+a4/2>a1/2+a2/2+a3/2+a4/2>s/2,即a2+a4>s/2,顯然也不可能是s的因數。

所以在所有6種組合裡,最多有4種數對滿足條件。

討論當na=4的情況:

a1+a4和a2+a3一定有乙個大於等於s/2

討論a2-a1和a4-a3的大小即可.

也就是說

s/2<=max(a1+a4,a2+a3)

那麼要滿足a1+a4是s的約數,a2+a3是s的約數,就要滿足

a1+a4=a2+a3=s/2

令u=a1+a2,v=a1+a3(u那麼s=2(a2+a3)=2(u+v-2a1)

所以v|s,即v|2(u+v-2a1),即v|2(u-2a1)

那麼令k=(2u-4a1)/v,k為整數且k>=1

那麼k=2(u/v)-4(a1/v)<2

又k>0,且k為整數且k>=1,故k=1

2(u-2a1)=v

另一邊,有u|2(v-2a1)

那麼就有u|2(2(u-2a1)-2a1)

u|2(2u-6a1)

u|4u-12a1

那麼u|12a1

由於u1

所以u>4a1

所以u=6a1或u=12a1

所以集合只有兩種,為s=或s=

暴力做即可

# include # include 

# include

# include

//# include

using

namespace

std;

typedef

long

long

ll;typedef

long

double

ld;typedef unsigned

long

long

ull;

const

int m = 5e5 + 10

;const

int mod = 1e9+7

;# define rg register

# define st

static

ll l, r;

intmain()

view code

BZOJ 4915 簡單的數字題(數學)

description 對任意的四個不同的正整數組成的集合a 記s a a 1 a 2 a 3 a 4,設n a是滿足a i a j 1 i j 4 s a的數對 i,j 的個數,現在有兩問第一問 求對於所有由4個不同正整數的集合a,n a的最大值是多少第二問 我們將給出l,r,求區間l到r內滿足n...

簡單基礎數字 dp 題

終於比較理解了數字 dp qwq 處理大數區間的計數,分成每一位考慮,f 考慮從高到低位在第 pos 位並且滿足某些條件的答案,這個東西我們可以記憶化搜尋,但是注意要設計好狀態,不然會漏或者重複計算某些情況 qwq 需要觀察題目有沒有前導 0 限制,不過這個也不是重點了。關鍵在於對狀態的設計。zjo...

BZOJ2683 簡單題 題解

1.若n比較小,則可以用二維的樹狀陣列或線段樹來做,但是500000,空間開不下,於是考慮離線cdq。子矩陣的數字和表示為也就是二維字首和,因此乙個要查詢的子矩陣,對其有影響的矩陣為s x2 y2 s x2 y1 1 s x1 1 y2 s x1 1 y1 1 這四個字首子矩陣 所以,在沒有修改操作...