10 13 上午 考試

2022-05-20 22:20:25 字數 2570 閱讀 3868

t1

直接二分就好了

#include #include 

#include

#include

#include

#include

#define ll long long

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

using

namespace

std;

ll n;

inta,b,d;

ll check(ll x)

ll work1()

return

ans;

}int

main()

t1t2

預處理出來每個點

$l_i$ i左邊第乙個比它大的點的位置

$r_i$ i右邊第乙個大於等於它的位置(這樣是為了統計的時候不重複)

那麼k==$a_i$的區間個數就是$$\sum_(i-l_i)(r_i-i)$$

然後求一下字首和和字尾和就行了

#include #include 

#include

#include

#include

#include

#define ll long long

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

using

namespace

std;

inline

intread()

return

ans;

}inline

char

readchar()

const

int n=100006

;struct

ji}ji[n*3

];int

ccc;

intnow;

intn,q;

inta[n],k[n];

char

op[n];

void

lisan()

}int

l[n],r[n];

ll num[n*3],presum[n*3],behsum[n*3

];int zhan[n*2

],he;

void

work()

he=0;zhan[++he]=n+1

;

for(int i=n;i>=1;--i)

for(int i=1;i<=n;++i)

num[a[i]]+=(ll)(i-l[i])*(r[i]-i);

for(int i=1;i<=now;++i)

presum[i]=presum[i-1]+num[i];

for(int i=now;i>=1;--i)

behsum[i]=behsum[i+1]+num[i];

for(int i=1;i<=q;++i)

}int

main()

for(int i=1;i<=q;++i)

lisan();

work();

}

t2t3

$f_i$ 所有排列長度為 i 排完序所需要的總步數

那麼 $$f_i=i*f_+(2^-1)*fac_$$

我們考慮第 i 位都是誰

是i時,直接加上$f_$

1時,加上$f_+2^0*fac_$

...然後求和就可以 $o(n)$ 了

解釋一下轉移:

fac就是階乘,即長度為 i-1 的排列個數

每次在長度i-1的後面新增乙個數x (當然,前i-1個數里可能有i)

那把x扔到第x位需要$2^$次(i需要0次)

證明:比如 3  1  2 弄成 1 2 3 需要3次

4  1  2  3 弄成 1 2 4 3 也需要3次

因為 4可以看成3 再把 3扔到開頭到有序,又相當於重複了一遍3  1  2 到  1  2  3 的過程

#include #include 

#include

#include

#include

#include

#define ll long long

#define dd double

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

using

namespace

std;

const

int n=100006

;const

int mod=1e9+7

;ll qpow(ll a,

intci)

return

ans;

}ll jie[n],jieni[n];

void

chu()

intn;

ll f[n],mi[n];

intmain()

printf(

"%lld

", f[n]%mod*jieni[n]%mod );

}

t3想不出來也是一種無奈...

1101上午考試T4

題目大意 有 n 輪比賽,最終成績由這 n 輪比賽中贏的輪數決定。如果在第 i 輪比賽賽選擇積極應戰,並且前 i 1 輪比賽中取得了 j 勝的話,那麼第 i 輪比賽的勝率概率為 p i j 這裡我們保證了對於同乙個 i,p i j 關於 j 的上公升保持單調不上公升 也就是說 p i j p i j...

1021上午考試T2

題目大意 n個莊家。你可以到莊家那邊下注,每次可以猜大猜小,猜一次一元錢。每一次開彩前,你都可以到任意個莊家那裡下賭注。如果開彩結果是大,你就可以得到你之前猜大的莊家相應的ai元錢。如果開彩結果是小,你就可以得到你之前猜小的莊家相應的bi元錢。你可以在同乙個莊家那裡既猜大又猜小 這樣是兩塊錢 也可以...

如何準備系統分析師考試的上午考試

儘管系統分析師考試上午試題分布很廣泛,但是總是圍繞目前軟體開發過程中常用的技術 理論和方法,因此不建議按照大綱和參考資料按部就班的學習有關的系統知識,而是應該注重學習重點和技巧。由於考試大綱要求掌握的知識點很分散,大多數知識點在開始中都有所涉及,因此考生很難把握應該著重學習哪些內容。我們通過把試題按...