cjtsai
失蹤的c++殭屍
失蹤
要叫他貪心還是貪婪呢
根
0
1
1-3
1
1+2
1
3-4
3
3-6
3
this one
is good
根
0
1
1-3
1
1+2
1
3-4
3
3-6
3
this one
is good
\(i\) 先吃
\(i+1\) 先吃
\(i\) 耗時
\(i+1\) 耗時
\(W_{i+1}+C_{i+1}\)
\(W_i+W_{i+1}+C_{i+1}\)
\(W_{i}+C_{i}\)
\(W_i+W_{i+1}+C_{i}\)
>
>
>
#include <bits/stdc++.h>
using namespace std;
#define ss second
#define ff first
#define int long long
signed main() {
ios_base::sync_with_stdio(false);cin.tie(0);
int n;
while(true){
cin>>n;
if(n==0) return 0;
vector<pair<int, int>> people;
for(int i=0; i<n; ++i){
int a,b;
cin>>a>>b;
people.push_back({b, a});
}
sort(people.begin(), people.end(), greater<pair<int, int>>());
// pair會先比較第一項再比較第二項
int current=0; //廚師煮飯時間和
int maximum=0;
for(int i=0; i<n; ++i){
current=current+people[i].ss;
maximum=max(maximum, current+people[i].ff); // curTime + arr[i].first是第i人離開的時間
}
cout<<maximum<<'\n';
}
}
# PRESENTING CODE
為了不要讓上一條太深
2
3
5
5
10
15
7
8
25
合併 / 切割
2
3
5
5
10
15
7
8
25
2
3
5
5
10
15
7
8
25
2
3
5
5
10
15
7
8
25
2
3
5
5
10
15
7
8
25
綜上所述,我們使用貪婪策略可以確保最終只剩下一個數字,並且成本最小。這就是這個問題的一個有效解法。
#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int n,m;
while(cin>>n){
priority_queue<int,vector<int>,greater<int> > p;
while(n--){
cin>>m;
p.push(m);
}
int sum=0;
int a,b;
while(p.size()>1){
a=p.top();
p.pop();
b=p.top();
p.pop();
sum+=a+b;
p.push(a+b);
}
cout<<sum<<'\n';
p.pop();
}
}
# 誰先晚餐
記得開long long
additional
如果有時間再講
btw這我跟佑佑的美術作業
By cjtsai