zoukankan      html  css  js  c++  java
  • HDU_3177 Crixalis's Equipment(贪心)

      这道题思路。。。想破脑袋没想起来,开始按A排序,后来按B排序,再后来按A/B排序,然后正序走一遍,逆序走一遍,都不对!最后看的解题报告,崩溃!!!按B-A排序。至于证明,不会!这道题告诉我们,关于贪心问题,只要涉及到排序,+,-,*,/,都试试,没准有一个可以的。。。

    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>

    using namespace std;

    const int N = 1007;
    struct node
    {
    int a;
    int b;
    }num[N];

    int cmp(const void * c, const void * d)
    {
    node
    * e = (node *)c;
    node
    * f = (node *)d;
    int cha1 = e->b - e->a;
    int cha2 = f->b - f->a;
    if(cha1 == cha2) return e->a - f->a;
    else return cha2 - cha1;

    }
    int main()
    {
    //freopen("data.in", "r", stdin);

    int T, n, v, i;
    int flag;

    scanf(
    "%d", &T);
    while(T--)
    {
    scanf(
    "%d%d", &v, &n); flag = 0;
    for(i = 0; i < n; i++)
    {
    scanf(
    "%d%d", &num[i].a, &num[i].b);
    if(num[i].b > v || num[i].a > v)
    flag
    = 1;
    }
    if(flag) { printf("No\n"); continue; }
    qsort(num, n,
    sizeof(node), cmp);
    i
    = 0;
    while(i < n)
    {
    if(v >= num[i].a && v >= num[i].b)
    { v
    -= num[i].a; i++;}
    else
    {flag
    = 1; break;}
    }
    if(!flag) printf("Yes\n");
    else printf("No\n");
    }
    return 0;
    }

  • 相关阅读:
    Python 进度条
    python多线程的使用
    Python 进程间通信问题—Manager方法
    生产消费者模型(进程通信,队列)
    进程锁 购票问题
    多进程并行实现socket并发代码
    一次完整的socket文件的传输
    python实现基本计算器(可处理括号和负值)
    模拟论坛登录
    JS
  • 原文地址:https://www.cnblogs.com/vongang/p/2145341.html
Copyright © 2011-2022 走看看