acmicpc-asia-tokyo-regional-contestC-Shopping(贪心)

来源:互联网 发布:自学cg插画知乎 编辑:程序博客网 时间:2024/05/29 09:13

题目链接

http://codeforces.com/gym/100803/attachments

这道题的思路就是先按照第一个排序,把有重合的区间合并就好了

AC代码

#include<stdio.h>#include<algorithm>#include<iostream>#include<cstring>using namespace std;#define inf 999999struct node{    int x,y;}p1[1010],p2[1010];bool cmp(node a,node b){    return a.x<b.x;}int main(){    int m,n;    int sum=0;    int tot;    int maxn,minn;    memset(p1,0,sizeof(p1));    memset(p2,0,sizeof(p2));    scanf("%d%d",&m,&n);    for(int i=1;i<=n;i++)        scanf("%d%d",&p1[i].x,&p1[i].y);    sort(p1+1,p1+n+1,cmp);    tot=0;    for(int i=1;i<=n;i++)    {        if(p1[i].x<=p2[tot].y)            p2[tot].y=max(p1[i].y,p2[tot].y);        else{            tot++;            p2[tot].x=p1[i].x;            p2[tot].y=p1[i].y;        }    }    sum=m+1;    for(int i=1;i<=tot;i++)        sum+=(p2[i].y-p2[i].x)*2;    printf("%d\n",sum);}



0 0
原创粉丝点击