155b_Combination

来源:互联网 发布:历年固定资产投资数据 编辑:程序博客网 时间:2024/04/28 01:06

原题链接:http://codeforces.com/problemset/problem/155/B

分析:

        题意分析:给你一些卡片,有正面和背面。拿出一张卡片,加上正面的分数后,又可以拿背面张卡片数到手上,问最多可以的多少分。

       算法分析:用一个队列模拟取牌统计。

我的代码:

#include<stdio.h>#include<algorithm>#include<queue>using namespace std;struct Node{    int x;    int y;    bool operator <(const Node &a) const{        return y>a.y ||(y==a.y&&x>a.x);    }}p[1005];int main(){    int n;    while(1==scanf("%d",&n))    {        for(int i=0;i<n;i++)        {            scanf("%d%d",&p[i].x,&p[i].y);        }        sort(p,p+n);        queue<Node> Q;        int i=0,sum=0;        Q.push(p[i]);        while(!Q.empty())        {            Node u=Q.front();            Q.pop();            sum+=u.x;           // printf("sum=%d\n",sum);            int e=i+u.y;            for(int j=i+1;j<=e;j++)            {            //    printf("i=%d\n",i);                if(j>=n) break;                Q.push(p[j]);                i++;            }        }        printf("%d\n",sum);    }    return 0;}

总结:读不懂题目意思是硬伤~~o(>_<)o ~~


原创粉丝点击