**座的期末複習
時間限制: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...