在第乙個城市加滿,之後每到乙個城市加一公升油,直到滿足最低油耗量。注意有可能在第乙個城市就超過最低油耗量。
#include using namespace std;
int main ()
使用k次最大值的表情,再使用一次第二大值的表情,迴圈直到m次。
#include using namespace std;
long long a[200004];
int main ()
long long ans=0;
sort(a,a+n);
long long max1=a[n-1];
long long max2=a[n-2];
ans+=m/(k+1)*(k*max1+max2);//把m分為長度為(k+1)的組
ans+=m%(k+1)*max1;//剩餘的
printf("%lld\n",ans);
}
列舉劃單人船的兩個人,其餘的排序後依次上船即可
#include using namespace std;
int a[104];
int main ()
sort(a+1,a+1+2*n);
int ans=1e9;
for (int i = 1; i <= 2*n; ++i)
ans=min(ans,sum);}}
printf("%d\n",ans);
}
先把綠葡萄給andrew,如果不夠的話輸出no,夠的話綠葡萄減去x個。
再把綠葡萄和紫葡萄給dmitry,同上。
最後把所有葡萄給michal,同上。
#include using namespace std;
int main()
if(a+b排序,然後從小到大遍歷即可。
#include "bits/stdc++.h"
using namespace std;
int a[100005];
int main()
sort(a,a+n);
int ans=0;
for (int i = 0; i < n; ++i)
printf("%d\n",ans);
}}
每個值出現兩次,即每個值對應兩個下標,因為必須按照1-n的順序走,那麼每次選擇對後面的結果都沒有影響。對於每種蛋糕店只有兩種方案,每次取最小值即可。詳見注釋。
#include "bits/stdc++.h"
using namespace std;
int a[200004];//用來記錄蛋糕店的下標
int b[200004];
int main()
}long long ans=0;
a[0]=1,b[0]=1;//初始位置是1
for (int i = 1; i <= n; ++i)
printf("%lld\n",ans);
}
找連續相等的部分,然後然後與上乙個連續相等的部分組合,求乙個max即可。
#includeusing namespace std;
int a[100004];
int main()
int ans=0;
int laslen=0;//上乙個連續相等的部分
int nowlen=1;//現在連續相等的部分
for (int i = 2; i <= n+1; ++i)
}printf("%d\n",ans*2);
}
樸素的想法,想要將a[i]前移,首先看能否和a[i-1]交換,若不行,再看a[i-2]與a[i-1],若a[i-2]能同時與a[i-1]和a[i]交換,那麼能將a[i-2]移到a[i]後面,a[i-1]和a[i]整體前移一位。
考慮普遍的情況,對於i到j,如果a[i]到a[j],都可以和a[i-1]交換,那麼就可以將a[i-1]移到a[j]的後面,將a[i]到a[j]整體前移一位。
然而暴力求交集是不可行的,我們可以從v到u建單向邊,用乙個num[x]陣列,表示x後面與x有邊的點的數量,因為位移是整體前移,所以每個點對前面的貢獻不會消失。
當num[x]=x到i的距離時,可以將x移到i後面,並且x不對前面的點有貢獻。
整體複雜度o(n+m) 詳見注釋
#include using namespace std;
int a[300004];
int num[300004];//記錄num[a[i]]後面的人可以和a[i]交換的人的個數
vectorv[300004];//v[i]維護能與i交換的點
int main ()
int x,y;
while(m--)
memset(num,0, sizeof(num));
for (int i = 0; i < v[a[n]].size(); ++i)
int ans=0;
for (int i = n-1; i >=1 ; --i) }}
printf("%d\n",ans);
}
題解 辯論 貪心
看到這道題我秒想了網路流,搞了下沒出來,發現是個簡單的貪心,不難想。設a b a,ba,b表示支援議題1 11的人數和支援議題2 22的人數,沒選乙個就把對應的 1,1 1,1 1,1 author galaxy yr lang c created time 2019年10月24日 星期四 08時0...
貪心 ddl(題解)
題意 zjm 有 n 個作業,每個作業都有自己的 ddl,如果 zjm 沒有在 ddl 前做完這個作業,那麼老師會扣掉這個作業的全部平時分。所以 zjm 想知道如何安排做作業的順序,才能盡可能少扣一點分。思路 貪心的思想 因為每一項作業完成需要的時間相同,所以先完成分數多的扣的分越少,為了完成盡可能...
Crossing River 題解 貪心
t組資料 t 20 給你n個人 n 1000 過河,每個人都有權值,一條船,每次船最多運2個人,每次的花費為兩個人的較大花費 求所有人都過河需要的最小花費 經典的過河問題,記錄一下 先將權值從小到大排序一下 每次運兩個人顯然有兩種最優的方法 1 先運 a 1 a 2 過去,a 1 回來,再運 a n...