對於algorithm102的總結

2021-07-23 17:37:34 字數 1976 閱讀 1075

【題解】國慶節集訓algorithm102 by tonyzhao

【模擬測試】algorithm102 by ciel

話不多說,開始分析題目:

考查知識點:小學奧數

題目大意:乙個籠子裡面關了雞和兔子(雞有2隻腳,兔子有4隻腳,沒有例外)。已經知道了籠子裡面腳的總數a,問籠子裡面至少有多少只動物,至多有多少只動物.如果沒有滿足要求的答案,則輸出兩個0。

水題 因為只有兔子和雞,所以腿數一定為偶數條,若為奇數,就輸出0 0;

最多動物的情況:全是雞;

最少動物的情況:看看腿數能湊出幾隻兔子,然後再用雞填;

ac

#include

#include

using

namespace

std;

int ans;

int main()

else}}

考查知識點:二分查詢+字首和;題目大意:老師會彈奏一些單調的音階組成的**。已知第 i 個音階要彈奏 bi 次,才會彈奏下乙個音階,總共有 n 個音階。老師會從第 0 時刻開始彈奏,小朋友們聽著單調的音階就會慢慢入睡。 現在有 q 個詢問,詢問時間段 [ t, t+1 ) 內老師彈奏的是第幾個音階?

如圖,第乙個音階持續2個時間單位,第二個音階持續1個時間單位,第三個音階持續3個時間單位。下面是一些詢問和回答:

這道題的本質是在乙個遞增序列中找到第乙個大於x的數;

所以我們想到了二分查詢;

ac

#include

#include

using

namespace

std;

int a[50100];

long

long sum[50100];

int n,q;

int fen(int tmp)

else

if(tmpelse

}

return l;

}int main()

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

}

考查知識點:dp;題目大意:對於每個線段都有不同的價值,且兩端都是整數座標。~~想從 n 條線段中挑選出若干條,並且這些線段不出現覆蓋(端點可以重合),使得這些線段的價值總和最大。首先按線段右端點由小到大的順序排序;

然後動態規劃:

f[i]:表示前i個區間所獲得的最大價值

f[i]=max;

其中滿足:e[j].y<=e[i].x;

需要注意,j的列舉範圍要從0開始,也就是把第i個區間當成第乙個選擇的區間;

#include

#include

#include

using

namespace

std;

int n,ans,f[1010];

struct your

e[1010];

bool cmp(your a,your b)

sort(e+1,e+1+n,cmp);

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

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

printf("%d",ans);

return

0;}

Algorithm 大數的相加

大數的相加是不難的,只要模擬好過程,在注意進製的判斷,尤其 是最後乙個的判斷,很多人大概錯在最後乙個的進製忘了判斷 include include define maxn 100 char x maxn void add char str1 char str2 char addstr while l...

algorithm 修改序列的操作

相關參考 修正序列演算法的有些操作會改變容器的內容。例如,把乙個容器的部分內容複製到同乙個容器的另乙個部分,或者用指定值填充容器。函式演算法 copy first,last,first2 複製copy backward first,last,first2 逆向複製 fill first,last,v...

algorithm下的常用函式

swap x,y 交換x和y的值 reverse it,it2 可以將陣列指標在 it,it2 之間的元素或者容器的迭代器在 it,it2 範圍內進行元素反轉。對於陣列中的元素 include include using namespace std int main void reverse a,a...