• UVa 10026


      题目大意:鞋匠有n个任务,第i个任务要花费ti天,同时第i个任务每耽误一天要有fi的罚金。求完成所有任务的最小罚金。

      虽然知道是贪心,可是并不确定如何作贪心选择,只好“取经”了...假如有两个任务i和j,先做i的话罚金就是ti*fj,先做j的话就是tj*fi (其实我也想到这个了,就是不知道怎么用),可以得到f/t大的任务应该先做。对贪心有多了一点认识了,贪心做出当前情况下的最好选择,与子问题无关,而动态规划中做出的选择与子问题有关系,要依赖子问题的结果。

     1 #include <cstdio>
     2 #include <algorithm>
     3 using namespace std;
     4 #define MAXN 1000+10
     5 
     6 double w[MAXN];
     7 int ans[MAXN];
     8 
     9 bool cmp(const int a, const int b)
    10 {
    11     return w[a] > w[b];
    12 }
    13 
    14 int main()
    15 {
    16 #ifdef LOCAL
    17     freopen("in", "r", stdin);
    18 #endif
    19     int N;
    20     scanf("%d", &N);
    21     while (N--)
    22     {
    23         int n;
    24         scanf("%d", &n);
    25         int time, fine;
    26         for (int i = 1; i <= n; i++)
    27         {
    28             scanf("%d%d", &time, &fine);
    29             w[i] = 1.0 * fine / time;
    30         }
    31         for (int i = 1; i <= n; i++)   ans[i] = i;
    32         sort(ans+1, ans+n+1, cmp);
    33         for (int i = 1; i <= n; i++)
    34             printf("%d%s", ans[i], (i==n)?"
    ":" ");
    35         if (N)   printf("
    ");
    36     }
    37     return 0;
    38 }
    View Code

      如果有多个方案时要字典序输出,考虑到sort函数是不稳定的,感觉会出错,但还是抱着试试的态度提交了,想着如果WA了就换stable_sort,但是竟然AC了...这个...先不管了,先就这样吧

  • 相关阅读:
    zoj 3715 K
    bzoj 2002(弹飞绵羊) 分块
    最大01矩阵(悬线法)
    csu 1809 Parenthesis(线段树)
    csu 1804(有向无环图)
    csu 1803(2016)
    RCC 2017 Qual 1 Mail.Ru, April 2, 2017 Problem C. Magic Artifact
    Unmarshaller解析xml文件
    sax解析xml文件,封装到对象中
    cas环境搭建
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3226776.html
Copyright © 2020-2023  润新知