hdu5127

非常卡时间,不能用set

而却糖果是不会重的,之前认为会重也一直超时

别忘了清空,不清空也会超时

#include<bits/stdc++.h>
using namespace std;
typedef  pair<long long ,long long > candy;
list<candy> s;
int main()
{

    int n;
    while( scanf("%d",&n) && n ){
        s.clear();
         while(n--){
        long long x,y,z;
        scanf("%I64d%I64d%I64d",&z,&x,&y);
        candy aa ; aa.first=x; aa.second=y;
        if(z==1 ) { s.push_front(aa); }
        else if(z==-1) {
                for(list<candy>::iterator i=s.begin();i!=s.end();i++)
                if((*i).first==x&&(*i).second==y) { s.erase(i); break;  }
        }
        else if(z==0) {
                long long sum=-0x7f7f7f7f;
            for(list<candy>::iterator i=s.begin();i!=s.end();i++) {

                    sum = max(sum, (*i).first*x+(*i).second*y);

            }
            cout<<sum<<endl;
        }
    }

    }

    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 07:48:33

hdu5127的相关文章

HDU5127 神坑题

题意:三个操作 1  a b : 队列中加入(x = a, y = b); -1  a b : 队列中减去(x = a, y = b); 0  p q :从队列的数对中查询哪一对x,y能够让 p * x + q * y最大; 分析:因为一开始就觉得如果暴力绝对会超时,但是时限是30 000 ms,而且看见FB的又是8800ms过的,所以就暴力一次试试,但是TLE. 1 #include <iostream> 2 #include <cmath> 3 #include <vec

hdu-5127------hdu5137

hdu-5127 思路: 本来正解好像是动态凸包,暴力10000+ms可以搞过去; hdu-5128 思路: 枚举两个长方形的对角线,然后判断是否不相交,更新答案就好; hdu-5130 思路: 将题给的条件变换后是求一个圆与多边形的面积交;将多边形三角剖分后求与圆的面积和; hdu-5131 思路: 写个cmp函数,sort一下就好了; hdu-5135 思路: 暴力枚举每个三角形的三条边,判断是否合法,更新答案; hdu-5137 思路: 枚举要劝阻的那个人,然后跑最短路dijkstra算法