czl蒻蒟的OI之路3

2021-08-07 20:14:07 字數 3560 閱讀 8429

t2arpa and an exam about geometry 已ac

t3five dimensional points 已ac

t4little elephant and lcm wa後兩次已ac

t5polycarpus dice wa後三次已ac

補群賽3 t5bank hackingn次wa後ac

蒻蒟總結

題意:給你三個數,分別是人群的人數n,每次最大能站起的人數k,和詢問的時間t。讓你求在時間t的點,站起來的人數。

分析過程:

簡單來說,就是把從第乙個人站起開始到最後乙個人坐下這段時間分為3段計算,第一段,當t<=k時,能站起來的人數就是t,當t在k和n之間時,能站起來的人數是k,當t大於n時,能站起來的人數就是n+k-t。

給出題解:

#include

using

namespace

std;

long

long

int n,k,t,ans;

int main()

return

0;}

題意:

看起來很厲害的五維空間,實際上就是乙個5n的矩陣。給你乙個n,然後構建乙個5n的矩陣。讓你判斷有哪些的點的角度是90°的,角度的計算方法題中已經給出了(這裡也有點解釋不清),並且輸出每個點的向量值。

分析過程:

這題看起來很高能,什麼五維空間,但實際分析起來,並不是特別難。先按照他的方法遍歷每兩個點之間的角度,如果角度為90°,ans就++,然後分別計算出每個好角度的向量值並輸出。具體的判斷兩個點的角度的方法,只需用乙個bool型陣列,如果算出的值大於1,就返回0,其餘的都返回1,(因為arc(0)=90°)。

給出題解:

#include

using

namespace

std;

long

long

int a[105][5];

int n,ans,b[105];

bool check(int i)

return1;}

int main()

else

printf("%d\n",ans);

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

if (b[i])

}}

題意:

給你n個骰子,然後每個骰子有d[i]面,給你乙個a,a表示這n個骰子所扔的點數和

然後問你,每乙個骰子有多少個數不能投擲到。

分析過程:

對於乙個骰子,先求出其餘所有篩子能夠得到的最大值之和和最小值之和,然後根據最大值之和、最小值之和就能求出每個骰子不可能出現的點數。

如果其餘所有的骰子都取最小值1,則最小值之和為n-1,當前骰子應取x=a - (n - 1),當前骰子的最大取值就是x,若d[i]>x, 則從x+1~d[i]之間的數都不會取到,共有d[i]-x個;如果其餘所有的骰子都去最大值d[i],則最大值之和為sum - d[i],當前骰子的應取y=a - (sum - d[i]),最小取值就是y,若y > 0,則從1~y-1之間的數都不可能取到,共有y-1個;二者加起來就是最終的答案。

給出題解:

#include

#define maxn 1000050

#define ll long long int

using

namespace

std;

int main()

// cout<1]-1;

else

}return

0;}

題意:

給你乙個數列a1,a2…,an,讓你求在另乙個數列b1,b2..,bn(bi滿足1<=bi<=ai)中有幾個序列的最大值和它的最小公倍數相同。

分析過程:

既然該序列的最小公倍數和它的最大值相同,則所有數都應該是最大值的因數,所以只要從最大數開始向1列舉,後面的數只能為它的因數,所以再列舉最大數的因數,計算後面的數可以填的個數,再相乘,就能得到答案。

給出題解:

#include

using

namespace

std;

const

int mod=1e9+7;

long

long

int cnt[100000];

long

long

int powermod(long

long

int a,long

long

int b)

return ans;

}int main()

sort(cnt+1,cnt+n+1);

for(int i=1; i<=cnt[n]; i++)

}sort(a.begin(),a.end());

int b,c=1;

basic=1;

for(j=1; j1,cnt+n+1,a[j])-cnt;

basic=basic*powermod(j,b-c)%mod;

basic=basic%mod;

c=b;

}ans=(ans+basic*(((powermod(j,n-c+1)-powermod(j-1,n-c+1)+mod))%mod))%mod;

}cout

《題意:

給你n個銀行以及n-1個電線,將兩個銀行互相連線,並且每個銀行都有一定的實力值。用一條電線相連的兩個銀行稱為相鄰,用兩條電線相連的兩個銀行稱為半相鄰。每當乙個銀行被黑掉時,相鄰與半相鄰的銀行實力都會+1.

分析過程:

簡單分析一下可知,黑掉第乙個銀行後,相鄰的銀行下一次會被黑掉,而半相鄰的銀行則是會變成相鄰的銀行。故選擇第乙個黑的銀行後,相鄰的銀行實力會+1,其餘的都+2。知道這個,題目就好懂了,只需判斷最大數與最大數-1的個數,進行特判即可。

給出題解:#include

using

namespace

std;

const

int inf=1e9+10;

vector

a[1000000];

int str[10000000],x,y;

int main()

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

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

else

if(str[i]==m-1)cnt2++;

}if(cnt1==1)

if(cnt==cnt2) cout

cout

<1;

}else

if(cnt==cnt1) flag=true;

}if(flag) cout

<1;

else

cout

<2;

}return

0;}

今天距離ak還有一點距離,但比昨天要好一些了。最後一題已經有了較為成型的想法,但是還有一些細節沒有注意到。但是今天的a b題刷的比較慢,隨著訓練的時間增長,對於簡單題目的速度以及到位程度更加需要提公升,不能把罰分浪費在這些簡單的題目上。明天還是有比賽的,然而前幾次的題目還有一題沒有補完,今日的第五題也沒有ac,明天要加倍努力了(或許只是週六不想跑圈罷了吧~)。

czl蒻蒟的OI之路4

t2math show wa十次後ac t3four segments 未ac t4monitor 未ac t5chemistry in berland 未ac t6random query 2次wa後ac 蒻蒟總結 題意 給你一串01數列,要求你可以刪掉幾個資料,使得新的出的陣列裡面,1的後面沒有...

czl蒻蒟的OI之路7

t2odd sumwa一次後ac t3minimal string已ac t4broken bst t5array queries t6mice and holes 蒻蒟的總結 題意 給你兩個數n和k,讓你把n分成k個數相乘 乘數中不能有1 如果不能的話就輸出 1。可以的話就把乘數都輸出。分析過程 ...

C 合輯 蒟蒻之路

蒟蒻之路1 知道你的成績x,如果大於59分,就是合格了,輸出 pass include using namespace std intmain return0 蒟蒻之路2 知道你的成績x,如果大於等於80分,就是優秀了,輸出 excellent 否則輸出 ohno 否則 用else來表達哦!incl...