牛客寒假演算法基礎集訓營2 J

2021-09-10 04:35:15 字數 1296 閱讀 6721

**座的期末複習

時間限制:c/c++ 1秒,其他語言2秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

快要期末考試了,**座現在有n門課程需要考試,每一門課程需要花ai小時進行複習,考試的起始時間為bi,**座為了考試可以不吃飯不睡覺,**座想知道他能否複習完所有的科目(即在每一門考試之前複習完該科目)。每一門課的考試時間都為兩小時。

第一行乙個整數n

第二行n個整數a1,a2,…,an,表示每門課需要複習的時間

第三行n個整數b1,b2,…,bn,表示每門課考試的時間

1<=n<=105

0<=ai<=109

0<=bi<=109

如果**座能複習完,輸出」yes」,否則輸出」no」
示例1

複製

3

0 1 1

2 6 4

複製

yes
在0-1小時複習第2門課,

在1-2小時複習第3門課,

在2-4小時考第1門課,

在4-6小時考第3門課,

在6-8小時考第2門課

考試時不能複習,保證考試時間不會重疊。

複習可以拆開,只要複習時間夠了即可。

思路

看看此時前面的除去所占用的時間外,剩下的還夠不夠自己用

題解:1,先按照考試時間從小到大排序(這樣只用考慮此刻前面的已被占用的時間對自己的影響,後面不用管)

此刻的前面被占用的時間就是——此場考試需要複習的時間a[i],加上前面所佔的時間c[i-1],再加上2

一定要用sort!!!我用冒泡就一直超時。唉,誰讓我忘了可以用sort實現兩個都變的排序呢!!!!

ac**:

#include#includeusing namespace std;

const int maxn=100007;

struct student;

int comp(const student &s1,const student &s2)

else

}if(answer==1)

printf("yes");

} else

return 0;

}

牛客寒假演算法基礎集訓營

首先看到這個題目資料範圍就可以知道這不是乙個可以暴力過的題。所以應該要推乙個結論。我們可以將這個同學的一來一回看成一組,那麼就可以理解為乙個來回中n可以減少n m 1 個人。那麼我們現在要讓所有人都進去,那就是看n m 1 的數量。但是有可能存在一些情況,就是說當你的倒數第二組中的回來的那趟使得n變...

2020牛客寒假演算法基礎集訓營2

兩兩取最小值相加,注意要開成long long include include include include include using namespace std typedef long long ll intmain void 減去第乙個6,判斷能組成多少個16 include includ...

2020牛客寒假演算法基礎集訓營2

比賽鏈結 出題人題解 a 盡可能讓 牛牛的每次出 剪刀 石頭 布 對應到 牛可樂出 布 剪刀 石頭。min a,y min b,z min c,x 時間複雜度 o 1 include includetypedef long long ll 爆int using namespace std int m...