czl蒻蒟的OI之路4

2021-08-07 21:13:30 字數 3111 閱讀 6391

t2math show wa十次後ac

t3four segments 未ac

t4monitor 未ac

t5chemistry in berland 未ac

t6random query 2次wa後ac

蒻蒟總結

題意:給你一串01數列,要求你可以刪掉幾個資料,使得新的出的陣列裡面,1的後面沒有0。讓你輸出最後能留下的最大的資料個數。

分析過程:

剛開始沒有考慮的太深,以為只要找出第乙個1的位置,然後把後面所有的0都刪掉就行了,結果這題坑的地方在於還可以刪掉0。而1後面只不可能會有0的,所以只要遍歷每乙個數,計算這個數前面1的數量與後面零的數量,就可以判斷這個數該不該刪。

給出題解:

#include

using

namespace

std;

int a[105];

int main()

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

// cout}

cout

0;

}

#include

using

namespace

std;

long

long

int n,k,t,ans;

int main()

sort(z+1,z+k+1);

for(int i=0;i<=n&&t>=ans*i;++i)}}

point=max(point,p1);

}cout

0;}

題意:

給你乙個陣列,然後讓你確定3個點,dilim1,dilim2,dilim3讓第0~dilim1的所有數的和減去dilim1~dilim2的所有數的和,加上dilim2~dilim3的所有數的和,減去dilim3~n所有數的和。讓你求這個值的最大值。

分析過程:

這題如果用o(n^3)的解法,會 tle,所以可以先暴力列出dilim2的值,再在剩餘兩個區間裡找出兩個最大的數作為dilim1,dilim3的值,然後求出算術值,進行比較,這樣的複雜度為o(n^2),不會tle。

給出題解:

#include

#define maxn 100000

#define inf 0x7f7f7f

typedef

long

long ll;

using

namespace

std;

int main()

// coutfor(int ad2=ad1;ad2<=n;ad2++)if(qian[ad2]>=qian[d2])

if((qian[d0]+qian[d2]-qian[d1])>=max)

}cout

<" "

<" "

0;}

題意:

給你乙個n*m的矩陣,其中有一些點會在一定時間壞掉,給你乙個值k,讓你求在某個時間,存在k*k的矩形的所有點都壞掉了。讓你求最小的時間。

分析過程:

如果暴力列舉k*k的矩形,果斷在第26個點tle。可以先求每一行在滿足長度為k的最小破碎時間,每一列也如此,就可以用更短的時間求出壞掉的最小時間。

給出題解:

#include

using

namespace

std;

int n,m,k,q,a[505][505],d[505][505];

int main()

int ans=1e9+7;

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

題意:

給你n種材料,每種材料可以互相轉換,轉換的值在下面n-1行會給出,然後讓你判斷能不能讓每種材料都達到指定的值。

分析過程:

既然這可以化成一棵樹,那就可以先從這棵樹的葉子節點開始遍歷。因為該葉子只能由其父親節點轉化而來,所以如果該節點的值小於指定值,則由其父親節點補全,反之則由其多餘的返回去補父親節點,最後判斷這棵樹的根節點是否到達給定值即可。然er我並沒有用樹(表示不怎麼會),不過思路還是差不多的。

給出題解:

#include 

using

namespace

std;

typedef

long

long ll;

int n;

double ans[100001];

ll x[100001],k[100001];

int main()

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

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

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

else

ans[i]=0;

}if(ans[1]<=0)cout

<<"yes";

else

cout

<<"no";

return

0;}

題意:

給你一串數列,你可以兩兩交換數字(實際沒有卵用,只要理解為選擇2個數就可以了),並計算期望值,期望值就是你的所有選擇中不相同數字的個數之和,除以總方案數。

分析過程:

選擇兩個數,如果兩數相同,貢獻的期望值為1,而如果兩數不同,貢獻的期望值則為2。而這題可以列舉每個數字,計算數字的期望值之和,再除以方案數就行了,但注意保留一下數字,大概8位就夠了。

給出題解:

#include

using

namespace

std;

int main()

; double ans;

cin>>n;

ans=-n;

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

ans=(double)ans/(double)(n*n);

printf("%lf",ans);

}

很水的一天(聽說玩了小恐龍會爆零,或許是真的),題目比較難理解,做題時也因為題目做不出而感到心急,但仔細想想,這時候爆零也總比比賽爆零好。而且今天還是有大佬ac了4題,很不甘心啊,但只要訂正了題目了,rank什麼的都不重要了。

附上吳老師的一句話:「學計算機的人,絕不輕易認輸!!!」

czl蒻蒟的OI之路3

t2arpa and an exam about geometry 已ac t3five dimensional points 已ac t4little elephant and lcm wa後兩次已ac t5polycarpus dice wa後三次已ac 補群賽3 t5bank hackingn...

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...