堅持不懈終變藍名。關鍵在於:系統掌握算法 > 手速。比賽中不看排名,專注解題。
分配三類獎狀,每類有最小/最大限制。優先最大化第一類,再第二類,再第三類。直接貪心分情況討論。
int main() {
int n, min1,max1, min2,max2, min3,max3;
cin>>n>>min1>>max1>>min2>>max2>>min3>>max3;
int a1 = min(max1, n - min2 - min3);
int rem = n - a1;
int a2 = min(max2, rem - min3);
int a3 = rem - a2;
cout<
Problem B: Pasha and Tea
2n 個杯子(n 男 n 女),水壺容量 w。女生每人 x,男生每人 2x。最大化總水量。排序杯子容量,前 n 給女生,後 n 給男生。x = min(cup[n-1], cup[2n-1]/2, w/(3n))。
sort(cup, cup+2*n);
double x = min({(double)cup[n-1], cup[2*n-1]/2.0, w/(3.0*n)});
printf("%.7f\n", 3*n*x);
Problem C: Arthur and Table
桌子腿長度不一,移除腿消耗能量。穩定條件:最長腿數量 > 總腿數/2。枚舉保留的最長腿長度 L,貪心保留高能量腿(即移除低能量腿)。按能量分桶(1..200),前綴和優化。
// 核心邏輯見原文,枚舉長度 L,計算需移除能量最小值
// 時間 O(n + maxE·n) ≈ 2e7,通過
關鍵成長點
- C 題體現「枚舉答案 + 貪心驗證」思想
- 分桶前綴和優化多維度約束
- 比賽心態:冷靜分析 > 急於提交