2 2 8 6 1 1 4 5 2 10 6 4 5 6 5
1 2
貪心解決問題
#include"stdio.h" #include"math.h" #include"stdlib.h" #define N 100005 struct node { double l,r; //記錄每個水龍頭能灌溉的左右邊界 }f[N]; int cmp(const void*a,const void*b) { return (*(struct node*)a).l<(*(struct node*)b).l?-1:1; } int main() { int t,n,i,j; double w,h,x,r; scanf("%d",&t); while(t--) { scanf("%d%lf%lf",&n,&w,&h); h/=2; for(i=0,j=0;i0) break; if(rr =w) break; if(f[i].l<=rr) //從交叉地方取一個最右邊的那個噴水裝置 { if(f[i].r>cur) cur=f[i].r; } if(f[i].l>rr) { if(f[i].l>cur) { cnt=0; break; } else { cnt++; rr=cur; cur=0; } } } if(rr