奮鬥群群賽 9

2021-08-08 07:23:56 字數 3637 閱讀 6888

t2the queue

t3garland

t4cartons of milk

t5change-free總結

t1位置所在

就是給你n個數字,讓你建乙個塔,從n到底部而且最後再到1,輸入天數,如果可以建立塔的話,輸出這些部分,如果沒有可以建的東西,就輸出換行就好了,第i位對應第i天下下來的食物!,求輸出策略!見樣例:

input:

3 3 1 2

output:

32 1

#include 

using

namespace

std;

const

int n=100005;

int a[n],book[n];

int main()

}printf("\n");

}return

0;}

這樣的處理可以很好的防治tle的情況,就是這個while迴圈就好了!

while(book[j]==1)

t2位置所在

就是有乙個人去排隊,已知了n個人的佇列的排序的方法,然後讓你輸出這個人在什麼時候去能夠使他的等待時間能夠最短,而注意的是如果他跟了同乙個人去的話,他會處於禮貌,排在後面!

#include 

using namespace std;

#define ll long long

int main()

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

cin>>time[i];

if(time[1]>str)

ll min=str-time[1]+1;

ll ans=time[1]-1;

ll last=str+cost;

if(min<=0)

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

}last+=cost;

if(last>end)

break;

}if(last

<=end)

cout《無,開始就是暴力在每乙個人的前面試一試就好了,但是比賽的時候沒有想出來!

t3題目所在

就是有一棵樹,每個節點有其自己的權值,有正的還有負的。讓你分2刀,讓你求分開的3個部分的權值的和相同,為tot/3,讓你輸出兩刀的可能性,注:比如切掉5節點,是指將5節點與其父親節點變為切斷狀態!

#include

#include

#include

using

namespace

std;

const

int n=1000005;

int n, root ,tot,v1,v2,temp[n];

//àûóãtemp µäöµà´¼çâ¼ i ½úµãµäêý×öµäºí

vector

t[n];

void dfs(int u)

}int main()

if(tot%3!=0)

// coutif(v1 && v2)

printf("%d %d\n",v1,v2);

else

printf("-1");

return

0;}

一開始很多次tle就是因為所謂的預處理沒有處理的特別好所以導致的!相當於每一次都要重新開始算值罷了,而且還單純的認成了乙個二叉樹! 如錯誤**:

struct light

l[n];

long long ligh(int a,int b)

t3位置所在

就是說:某人每天要喝k瓶牛奶,她家裡冰箱有n瓶牛奶,超市裡有m瓶牛奶。每瓶牛奶有保質期,0就是當天過期,1就是明天過期,以此類推。給出每瓶牛奶的保質期,求她在不讓牛奶過期的情況下能夠在超市購買的最多牛奶的瓶數以及牛奶的編號。如果她連自己家裡冰箱的牛奶也喝不完,輸出「-1」。

#include 

#include

#include

#include

using

namespace

std;

pair market[10000050];

const

int n=10000050;

int date[n]=,sc[n];

int main()

//cout}

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

sort(market+1,market+1+m);

int p=0,tot=0;

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

}printf("%d\n",tot);

sort(sc+1,sc+1+tot);

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

}

類似於貪心,就是將今天要過期的牛奶喝掉,別的就不喝!

t5位置所在

有100元的紙幣和1元的硬幣,顏弋凱大佬有無限多的紙幣和 m 個硬幣,並決定接下來的 n 天每天花費 c[i] 元。已知收銀員在第 i 天找零 x 元的話,不滿意度會增加x* w[i],問最小不滿意度。最後輸出了i天,左邊資料表示100錢數,右邊表示零錢所示!請記住,會有找錢的情況啊!所以m不是一成不變的!

#include 

#include

#include

#define ii pair

using

namespace

std;

const

int n=100005;

priority_queue,greater> my_quque;

long

long ans,i,n,m;

long

long angry,cost,note[n+5],coin[n+5];

int main()

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

//假設要找錢,輸出了憤怒值以及(100-coin[i])就是找到零錢啊!

//創造了乙個優先佇列,是小根堆的憤怒值為權值!

if(m<0)

}printf("%lld\n",ans);

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

printf("%lld %lld\n",note[i],coin[i]);

}

構造了乙個小根堆,first存的是憤怒值最小的情況!second表示的就是i的位置,如果m<0說明此時的錢數是不夠的,需要硬幣的引入,而且知道m永遠不會小於-100,為什麼因為coin[i]不是從%100來的嗎,所以減數小於100所以不會出現小的情況,只需要加上100就好了!,不足就找錢100元就好了!

m+=100

; ans+=my_quque.top().first

; note[my_quque.top().second]++;

coin[my_quque.top().second]=0

; my_quque.pop();

1.預處理一定要注意,不然會tle!

2.還有可以適當學學stl的模板

3.學會暴力解題以及貪心!!

奮鬥群群賽 4

t2arpa and an exam about geometry t3five dimensional points t4polycarpus dice總結 t1位置所在 有一排觀眾席,有n個人,當t 1時第乙個人站起來,t 2時第二個人站起來,t 3時第三個人站起來 到k位置,都是站起來,但是k...

奮鬥群群賽 15,16

t2s palindrome t3 exponential notation t4swaps in permutation t5xor sequences t6couple cover t1位置所在 就是給你乙個 01串,讓你找出是否這個串只有乙個 0 如果是,輸出 yes 不然就是輸出 no 但是...

奮鬥群群賽7總結與心得

t2t3 t4t5 本次人品很好,老師發了一次福利,五道題都很水 我應該沒有資格說這種話吧 對於乙個大於1的正整數,輸出它最多能被分解成多少個質數之和,以及這些質數.明顯的水題吧.對於偶數,全部輸出2 對於奇數,輸出很多2加上乙個3就可以了.include using namespace std i...