Sequence 省選模擬賽

2021-08-17 22:25:11 字數 1199 閱讀 8526

標籤:貪心

給定乙個整數數列 a,定義f(

a)=max1≤

inaj−

aif (a

)=

max1≤i

naj−

ai

,保證 f(a)>0。 你需要求出至少需要修改 a 的多少個位置才能使 f(a)變小。注意,你修改之後的數也必須是整數。

2<=

n<=106

,|ai

|<=109

2

<=

n<=106

,|ai

|<=109

簽到題gg,自己真的弱到不行了

記錄下反例

1 2 2 1 2

首先按照最小值分成若干段,顯然每段之間互不影響

對於每一段,我們只需要考慮最大值和最小值之差

如果兩個極值之差等於f(

a)f (a

),那麼必須從中間選定乙個位置i,將i之前的最小值和之後的最大值刪去

#include

#include

#include

#include

#include

#include

#define rep(i,a,b) for(int i=a;i<=b;i++)

#define dep(i,a,b) for(int i=a;i>=b;i--)

#define ll long long

#define mem(x,num) memset(x,num,sizeof x)

#define reg(x) for(int i=last[x];i;i=e[i].next)

using

namespace

std;

inline ll read()

while(ch>='0'&&ch<='9')

return x*f;

}//**********head by yjjr**********

const

int maxn=1e6+6;

int n,a[maxn],m,ans=0,g=1e9,f=0;

int main()

int i,j,k,l;

for(i=1;i<=n;i=j)

ans+=k;

}cout

0;}

省選模擬賽 project

最小割問題。建如下邊 s,i,ai 代表選用a語言編寫第i個專案 i,t,bi 代表選用a語言編寫第i個專案 其後注意要反向連邊 i,j,d 代表選用b語言編寫第i個專案,選用a語言編寫第j個專案 j,i,c 代表選用a語言編寫第i個專案,選用b語言編寫第j個專案 litc學長出的題,引文最小割題目...

mirror 省選模擬賽

標籤 狀壓dp 結論 當最優情況下,每行每列鏡子的個數都為偶數 題目可以轉化為擺放鏡子,使得格仔中產生的光環最長 所以不需要考慮鏡子到底放什麼方向 於是我們直接狀壓一列鏡子當前的奇偶性進行轉移 時間複雜度o 4n n m2 o 4 n n m2 include include include inc...

省選模擬賽 環

分析 不算太難的一道題.如果把每個編號i看作乙個點,i向ai連邊,那麼最後一定會出現環,並且環與環之間是不相交的.那麼我們可以dfs預處理出所有的環,用詢問的m除以環的長度,剩下的餘數就可以o 1 計算了,時間複雜度o n 上面這種做法在處理餘數部分時比較容易寫錯.一種不容易寫錯的方法是倍增.複雜度...