本次的三道題難度偏低,第一題是乙個非常裸的二分答案,第二題就是排乙個序,然後相乘,主要是用到了二進位制乘法,第三題就是一道裸地差分約束,沒有什麼問題。結果考試只有第三題a了,第一題和第二題都wa了,歸根到底還是自己對於基礎的模板不熟練,如二分答案的判斷等。
t1:二分答案加模擬判斷
題意:一共有n堆果子,m個袋子,每堆果子有乙個體積,求最小的袋子體積v可裝完所有果子,注意袋子可以不裝滿
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
long
long n,m,sum,maxx=-1,a[100005];
//---------------------
inline
long
long readint()
//---------------------
inline
bool check(long
long x)
if(a[i]>temp&&a[i]<=x)
if(a[i]>x) return
false;
}if(tot<=m) return
true;
else
return
false;
}int main()
long
long l=maxx,r=sum,mid;//顯然下界是a[i]的最大值,上界是總和
while(l<(r-1))
cout
0;}
t2:題意有n個零件,每個零件有乙個加工時間和懲罰,懲罰是從第乙個開始計算,乙個零件的懲罰等於它的懲罰乘上等待的時間,注意第乙個零件無懲罰貪心。
題解:有點隱蔽的貪心,可以用數形結合的方法發現以斜率為關鍵字排序,也可以直接推的式子。
按照t/s公升序排序然後計算,比較大小的時候由於浮點精度誤差,double的精度有可能不夠,這個時候用交叉相乘。對於x1/y1 與 x2/y2大小比較,應該: x1*y2 與 x2*y1比較!
另外,排序還可以這樣排
bool cmp(const node&a,const node&b)//用斜率來排序
int main()
cout
0;}
t3:裸的差分約束,就不贅述了
#include
#include
#include
#include
#include
using namespace std;
int n,m,tot,first[500050],dis[500010],q[500010];
bool in[500010];
//---------------------
inline int readint()
//---------------------
struct node
edge[4000010];
//---------------------
void create(int
x,int
y,int z)
//---------------------
inline void spfa()}}
}}//---------------------
int main()
for(int i=1;i<=n;i++) create(i-1,i,0);
for(int i=1;i<=m;i++)
memset(dis,-63,sizeof(dis));
spfa();
cout《後記:
這次考試題目簡單,就是一些細節需要注意,平時把每個演算法的細節理解透,考試的時候能得心應手
noip2017初賽,2017賽季的終點
昨天是noip2017的初賽。初賽前一周,據統計資料稱,寧波市報名提高組的人數從五十多激增至兩百多,然後我以為別的地方也是如此,突然感覺壓力山大,於是大力準備初賽 實際上也沒多大力,只是把2010至2016的初賽做了一遍 然後自我感覺良好,特別是ak了2016年的初賽卷,和得知實際上今年沒比去年多太...
NOIP2017模擬 鴨舌
題目 小美喜歡吃鴨舌。有乙個 n 個點的樹,每個節點 i 第 i 個點上有 ai 個鴨舌。小美一開始處於 x 號點。每次小美可以選擇乙個與現在的點有邊的點而且那個點還有鴨舌,那麼小美會走到那個點並吃乙個鴨舌。要保證小美最後還是走到 x 號點。問小美最多能吃幾個鴨舌?輸入格式 輸入第一行乙個整數 n ...
2023年NOIP初賽小結
這個月,我第一次參加了noip初賽。我接觸信奧已經有兩個多月了,但是,初賽難倒我還是夠了。我為什麼要參加競賽呢?是因為我的恩師說 去接觸一下競賽,為明年做好準備,明年要努力考進複賽。在初賽前一星期,老師講了許多題,什麼二分查詢,遞迴 都講了一遍,可惜我連函式都不熟,都聽不懂,頂多知道概念,那時,都對...