这题其实可以用vector水掉!

定义:

记住要用结构体(c为价格,x为美丽值)!

以c排序。

struct Node {
int x,c;
bool operator < (const &Node t) const {
return c<t.c;
}
}
vector <Node> a;

插入:

upper_bound的作用是将当前节点插到合适位置,以达到排序效果。

记住不能插入同样价格的花。

所以用vis[]数组统计。

if (vis[c]) continue;
vis[c]=1;
a.insert(upper_bound(a.begin(),a.end(),(Node){x,c}),(Node){x,c});

删除:

大节点就删除最后一个,记住要把vis[]清掉。

vector区间是左闭右开的,所以删除erase(a.end()-1)。

即:

if (opt==2) vis[a[a.size()-1].c]=0,a.erase(a.end()-1);

小节点就删除第一个,即:

if (opt==3) vis[a[0].c]=0,a.erase(a.begin());

代码:

注意要开long long~

#include <bits/stdc++.h>
using namespace std;
typedef int _int;
#define int long long
struct Node {
int x,c;
bool operator < (const Node &t) const {
return c<t.c;
}
};
vector <Node> a;
int ans1,ans2;
bool vis[1000001];
_int main()
{
int opt,x,c;
while (1) {
scanf("%lld",&opt);
if (opt==-1) break;
if (opt==1) {
scanf("%lld%lld",&x,&c);
if (vis[c]) continue;
vis[c]=1;
a.insert(upper_bound(a.begin(),a.end(),(Node){x,c}),(Node){x,c});
}
if (!a.size()) continue;
if (opt==3) vis[a[0].c]=0,a.erase(a.begin());
if (opt==2) vis[a[a.size()-1].c]=0,a.erase(a.end()-1);
}
int len=a.size();
for (int i=0;i<len;++i) ans1+=a[i].x,ans2+=a[i].c;
cout<<ans1<<' ';
cout<<ans2<<endl;
return 0;
}

洛谷 P2073 送花的更多相关文章

  1. 洛谷P2073 送花 [2017年6月计划 线段树01]

    P2073 送花 题目背景 小明准备给小红送一束花,以表达他对小红的爱意.他在花店看中了一些花,准备用它们包成花束. 题目描述 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花 ...

  2. [洛谷P2073] 送花

    送花 题目背景 小明准备给小红送一束花,以表达他对小红的爱意.他在花店看中了一些花,准备用它们包成花束. 题目描述 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花束,他不断地 ...

  3. 洛谷 P2073 送花【Treap】题解+AC代码

    题目背景 小明准备给小红送一束花,以表达他对小红的爱意.他在花店看中了一些花,准备用它们包成花束. 题目描述 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花束,他不断地向里面 ...

  4. 洛谷 P2073 送花 treap 无指针

    看了那么多题解都没做对,结果今早上按自己的思路和模板做了做,然后过了. 平衡树裸题 直接上代码: #include<bits/stdc++.h> #define rint register ...

  5. AC日记——送花 洛谷 P2073

    送花 思路: 线段树: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 struct TreeN ...

  6. 【洛谷】【treap/堆】P2073 送花

    [题目描述:] 这些花都很漂亮,每朵花有一个美丽值W,价格为C. 小明一开始有一个空的花束,他不断地向里面添加花.他有以下几种操作: 操作 含义 1 W C 添加一朵美丽值为W,价格为C的花. 3 小 ...

  7. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  8. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  9. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

随机推荐

  1. [svc][bg]phabricator-zh_CN汉化包

    汉化phabricator审计系统 主要是用来审计一些开发bug的,客服会提交一些bug,测试也会提交一些bug给开发. https://github.com/wanthings/phabricato ...

  2. 详解Java中格式化日期的DateFormat与SimpleDateFormat类

    DateFormat其本身是一个抽象类,SimpleDateFormat 类是DateFormat类的子类,一般情况下来讲DateFormat类很少会直接使用,而都使用SimpleDateFormat ...

  3. application/x-www-form-urlencoded和multipart/form-data的区别

    在学习<form>元素时,enctype属性有三个值 enctype属性表格: 值 描述 application/x-www-form-urlencoded 在发送前编码所有字符(默认) ...

  4. poj Buy Tickets

    题目链接:http://poj.org/problem?id=2828 类似的题目:http://www.cnblogs.com/lovychen/p/3674048.html 测试数据: in: 4 ...

  5. Java的ThreadContext类加载器的实现

    疑惑 以前在看源码的时候,总是会遇到框架里的代码使用Thread.currentThread.getContextClassLoader()获取当前线程的Context类加载器,通过这个Context ...

  6. maven仓库国内镜像

    <mirror>        <id>alimaven</id>        <name>aliyun maven</name>     ...

  7. spring aop切面编程实现操作日志步骤

    1.在spring-mvc.xml配置文件中打开切面开关: <aop:aspectj-autoproxy proxy-target-class="true"/> 注意: ...

  8. 浅谈myeclipse2015做cordova/phonegap开发

    近期公司项目经理要求用cordova写安卓程序,之前对cordova什么都不懂,然后从网上搜啊搜,好歹有所了解了,感觉做web开发的比較合适,属于三种开发模式的第三种. myeclipse2015有个 ...

  9. Golang并发原理及GPM调度策略(一)

    其实从一开始了解到go的goroutine概念就应该想到,其实go应该就是在内核级线程的基础上做了一层逻辑上的虚拟线程(用户级线程)+ 线程调度系统,如此分析以后,goroutine也就不再那么神秘了 ...

  10. Flow construction SGU - 176 有源汇有上下界最小流 二分法和回流法

    /** 题目:Flow construction SGU - 176 链接:https://vjudge.net/problem/SGU-176 题意: 有源汇有上下界的最小流. 给定n个点,m个管道 ...