HDU 4393 Throw nails [水题]

  题解写了N多方法,我用的是最水的那种。。

  起始区间只有(0 <= Fi <= 500),500秒之后排名必然不会变化了。。所以,暴力500秒,然后排个序就行了。

  

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <algorithm>
 4 #define MAXN 50010
 5 struct stt{
 6     int s,t,v,id;
 7     bool operator <(const stt& st)const{
 8         return t>st.t||(t==st.t&&s>st.s)
 9         ||(t==st.t&&s==st.s&&id<st.id);
10     }
11 }st[MAXN];
12 int cas,n;
13 int main(){
14     //freopen("test.in","r",stdin);
15     scanf("%d",&cas);
16     for(int ca=1;ca<=cas;ca++){
17         scanf("%d",&n);
18         for(int i=0;i<n;i++){
19             scanf("%d%d",&st[i].s,&st[i].t);
20             st[i].v=0,st[i].id=i+1;
21         }
22         printf("Case #%d:\n",ca);
23         for(int i=0;i<510&&i<n;i++){
24             int minid=-1;
25             for(int j=0;j<n;j++){
26                 if(st[j].v==0&&(minid==-1||st[j].s+st[j].t*i>st[minid].s+st[minid].t*i))
27                     minid=j;
28             }
29             if(i!=0)printf(" ");
30             printf("%d",st[minid].id);
31             st[minid].v=1;
32         }
33         std::sort(st,st+n);
34         for(int i=0;i<n;i++){
35             if(!st[i].v)printf(" %d",st[i].id);
36         }
37         printf("\n");
38     }
39     return 0;
40 }

转载于:https://www.cnblogs.com/swm8023/archive/2012/09/23/2698811.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值