zoukankan      html  css  js  c++  java
  • 小红花。

    fj在圣诞节来临之际,决定给他的奶牛发一些小红花。
    现在Fj一共有N头奶牛,这N头牛按照编号1..N,排成一队,来接受Fj颁发的小红花,每头奶牛最多只能戴一朵小红花,当然,不可能每头牛都能带上小红花。
    于是,奶牛们就开始提要求:在编号为第s头的奶牛到编号为第e头的奶牛之间,最少要分配X朵小红花,这些要求Fj当然必须要满足,现在Fj想知道,在满足要求的情况下,最少要购买多少朵小红花。

    INPUT:

    第一行两个整数:N和M。表示有N头牛,M个要求。
    接下来M行,每行3个整数,si,ei,Xi。表示一个要求,在第si到ei之间,至少要有Xi头牛获得小红花。0<si≤ei≤30000。Xi<=ei-si+1。

    9
    4
    1 4 2
    4 6 2
    8 9 2
    3 5 2

    OUTPUT:

    一个整数,Fj最少要买的小红花的个数。

    5

    思路:

    依然的一道贪心。

    策略如下:

    以区间的右端点排序,左端点为次要关键字(升序);

    bool mys(node a,node b)
    {
        return (a.r==b.r) ? (a.l<b.l) : (a.r<b.r);
    }

    然后从右端点开始放,直到放完。

    cpp:

     1 #include<iostream>
     2 #include<string>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cstdio>
     6 #include<cmath>
     7 #include<iomanip>
     8 #include<queue>
     9 #include<vector>
    10 #include<cstring>
    11 using namespace std;
    12 const int maxn=500001;
    13 int n,m;
    14 int flag[maxn],ans=0;
    15 struct node
    16 {
    17     int l,r,v;
    18 }e[maxn];
    19 
    20 bool mys(node a,node b)
    21 {
    22     return (a.r==b.r) ? (a.l<b.l) : (a.r<b.r);
    23 }
    24 
    25 int main()
    26 {
    27     /*freopen("2.in","r",stdin);
    28     freopen("2.out","w",stdout);*/
    29     //ios::sync_with_stdio(false);
    30     cin>>n>>m;
    31     memset(flag,0,sizeof(flag));
    32     for(int i=1;i<=m;i++)
    33         cin>>e[i].l>>e[i].r>>e[i].v;
    34     sort(e+1,e+1+m,mys);
    35     for(int i=1;i<=n;i++)
    36     {
    37         int hua=e[i].v;
    38         int tmp=e[i].r;
    39         for(int j=e[i].l;j<=e[i].r;j++)
    40             if(flag[j])    hua--;
    41         for(;hua>0;tmp--)
    42         {
    43             if(!flag[tmp])
    44             {
    45                 flag[tmp]=1;
    46                 ans++;
    47                 hua--;
    48             }
    49         }
    50     }
    51     cout<<ans<<endl;
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    k-近邻算法
    配置nginx 高并发 php
    ubuntu上安装mysql 编译安装
    Webpack探索【1】--- 基础知识
    【JavaScript专题】--- 立即执行函数表达式
    Eslint使用指南
    Maven学习笔记【2】 -- 安装和配置
    Maven学习笔记【1】 -- Maven简介
    Git中如何将代码恢复到之前某个节点
    密码硬编码(Password Management: Hardcoded Password)
  • 原文地址:https://www.cnblogs.com/zyker/p/5979914.html
Copyright © 2011-2022 走看看