码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1257 && hdu 1789(简单DP或贪心)

时间:2015-10-14 23:42:21      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

第一题;http://acm.hdu.edu.cn/showproblem.php?pid=1257

贪心与dp傻傻分不清楚,把每一个系统的最小值存起来比较

 

 1 #include<cstdio>
 2 using namespace std;
 3 int a[30001],b[30001];
 4 int main()
 5 {
 6     int n,i,j;
 7     while (~scanf("%d",&n))
 8     {
 9         int ans=0;
10         b[0]=-1;
11         for (i=0;i<n;i++)
12         {
13             scanf("%d",&a[i]);
14             for (j=0;j<=ans;j++)
15             {
16                 if (a[i]<=b[j])
17                 {
18                     b[j]=a[i];
19                     break;
20                 }
21                 if (j==ans)
22                 {
23                     ans++;
24                     b[ans]=a[i];
25                     break;
26                 }
27             }
28         }
29         printf("%d\n",ans);
30     }
31     return 0;
32 }

 

第二题;http://acm.hdu.edu.cn/showproblem.php?pid=1789

t组测试数据,一个人要做n完份作业,第一行是每个作业规定的最迟的提交的时间,第二行是每个作业超过规定时间提交要扣除的分数,求扣除的最小分数

将扣得分数排序,先考虑影响最大的,然后填充时间

 

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 struct point {
 6     int time,val;
 7     bool operator <(const point & q) const
 8     {
 9         //if (val==q.val) return q.time>time;
10         return q.val<val;
11     }
12 };
13 point yj[1001];
14 int vis[1001];
15 int main()
16 {
17     int t,i,j,n;
18     scanf("%d",&t);
19     while (t--)
20     {
21         scanf("%d",&n);
22         for (i=1;i<=n;i++)
23             scanf("%d",&yj[i].time);
24         for (i=1;i<=n;i++)
25             scanf("%d",&yj[i].val);
26         sort(yj+1,yj+n+1);
27         memset(vis,0,sizeof(vis));
28         int sum=0;
29         for (i=1;i<=n;i++)
30         {
31             for (j=yj[i].time;j>0;j--)
32             {
33                 if (vis[j]==0)
34                 {
35                     vis[j]=1;
36                     break;
37                 }
38             }
39             if (j==0)
40                 sum+=yj[i].val;
41         }
42         printf("%d\n",sum);
43     }
44     return 0;
45 }

 

hdu 1257 && hdu 1789(简单DP或贪心)

标签:

原文地址:http://www.cnblogs.com/JJCHEHEDA/p/4879014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!