【題解】國慶節集訓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...