C. Fountains
\(整体思路没错,但是我貌似太麻烦了.......\)
\(分情况讨论\)
\(Ⅰ.coin和diamond各选一个物品,这个简单\)
\(Ⅱ.在coin中选两个或者在diamond选两个\)
\(开始我想着枚举一个物品找另一个物品肯定超时\)
\(那我们可以直接预处理sumn[i]表示花费i时的最大收益,但是这样做可能这个最大收益就是枚举物品本身(重复了)\)
\(\color{Red}{至此有三种解决方案}\)
\(Ⅰ.\)
\(那我们额外记录sumn[i]时选的物品是谁,假如就是枚举的物品本身我们再对这个物品单独求解\)
\(Ⅱ.\)
\(开二维数组sumn[i][2]同时把次大值也装进去,如果余额大于等于枚举的商品且sumn[rest][0]==枚举商品价值\)
\(那么我们就取次小值,因为此时sumn[rest][0]装的值是枚举商品\)
\(Ⅲ.\)
#include <bits/stdc++.h>
using namespace std;
const int maxn=100009;
struct p{
int v,w;
}a[maxn],b[maxn];
int cnt1,cnt2;
int vis1[100009],vis2[100009];//储存物品花费i时美感最大值
int sumn1[100009],sumn2[100009],ans;
int num1[maxn],num2[maxn],vnum1[maxn],vnum2[maxn];
int main()
{
int n,m1,m2;
cin>>n>>m1>>m2;
for(int i=1;i<=n;i++)
{
int l,r;char s;
cin>>l>>r>>s;
if(s=='C')
{
if(vis1[r]<l) vnum1[r]=cnt1+1;
a[++cnt1].v=l,a[cnt1].w=r,vis1[r]=max(vis1[r],l);
}
else
{
if(vis2[r]<l) vnum2[r]=cnt2+1;
b[++cnt2].v=l,b[cnt2].w=r,vis2[r]=max(vis2[r],l);
}
}
int maxn1=-1,maxn2=-1;
for(int i=1;i<=100000;i++)
{
if(sumn1[i-1]<vis1[i]) num1[i]=vnum1[i];
else num1[i]=num1[i-1];
if(sumn2[i-1]<vis2[i]) num2[i]=vnum2[i];
else num2[i]=num2[i-1];
sumn1[i]=max(sumn1[i-1],vis1[i]);
sumn2[i]=max(sumn2[i-1],vis2[i]);
}
for(int i=1;i<=cnt1;i++)
if(a[i].w<=m1)
{
maxn1=max(maxn1,a[i].v);//买得起
if(num1[m1-a[i].w]==i)//可能存在相等(选自己)
{
int temp=-1;
for(int j=1;j<=cnt1;j++)
if(i!=j&&a[j].w<=m1-a[i].w)
temp=max(temp,a[j].v);
if(temp==-1) continue;
ans=max(ans,temp+a[i].v);
}
else if(sumn1[m1-a[i].w]!=0)
ans=max(ans,a[i].v+sumn1[m1-a[i].w]);
}
for(int i=1;i<=cnt2;i++)
if(b[i].w<=m2)
{
maxn2=max(maxn2,b[i].v);
if(num2[m2-b[i].w]==i)
{
int temp=-1;
for(int j=1;j<=cnt2;j++)
if(i!=j&&b[j].w<=m2-b[i].w)
temp=max(temp,b[j].v);
if(temp==-1) continue;
ans=max(ans,temp+b[i].v);
}
else if(sumn2[m2-b[i].w]!=0)
ans=max(ans,b[i].v+sumn2[m2-b[i].w]);
}
if(maxn1!=-1&&maxn2!=-1) ans=max(ans,maxn1+maxn2);
cout<<ans;
}
C. Fountains的更多相关文章
- Fountains(非线段树版(主要是不太会用))
Arkady plays Gardenscapes a lot. Arkady wants to build two new fountains. There are n available foun ...
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C. Fountains 【树状数组维护区间最大值】
题目传送门:http://codeforces.com/contest/799/problem/C C. Fountains time limit per test 2 seconds memory ...
- codeforces 799C Fountains
C. Fountains time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 树状数组 Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C. Fountains
C. Fountains time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- codeforces 799 C. Fountains(二分+思维)
题目链接:http://codeforces.com/contest/799/problem/C 题意:要求造2座fountains,可以用钻石,也可以用硬币来造,但是能用的钻石有限,硬币也有限,问能 ...
- CodeForce-799C Fountains (记忆化DP)
Fountains CodeForces - 799C 某土豪想要造两座喷泉.现在有 n 个造喷泉的方案,我们已知每个方案的价格以及美观度.有两种合法的货币:金币和钻石.这两种货币之间不能以任何方式转 ...
- Codeforces Round #413, rated, Div. 1 + Div. 2 C. Fountains(贪心 or 树状数组)
http://codeforces.com/contest/799/problem/C 题意: 有n做花园,有人有c个硬币,d个钻石 (2 ≤ n ≤ 100 000, 0 ≤ c, d ≤ 100 ...
- C.Fountains(Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2)+线段树+RMQ)
题目链接:http://codeforces.com/contest/799/problem/C 题目: 题意: 给你n种喷泉的价格和漂亮值,这n种喷泉题目指定用钻石或现金支付(分别用D和C表示),C ...
- 【预处理】【分类讨论】Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C. Fountains
分几种情况讨论: (1)仅用C或D买两个 ①买两个代价相同的(实际不同)(排个序) ②买两个代价不同的(因为买两个代价相同的情况已经考虑过了,所以此时对于同一个代价,只需要保存美丽度最高的喷泉即可)( ...
- [#413c] Fountains
http://codeforces.com/contest/799/problem/C 解题关键:树状数组取最大值,注意先搜索,后加入,此种情况可以取出最大值. 为什么可以取到最大值? 1.当分别用两 ...
随机推荐
- 传智博客2015年最新版iOS基础视频_最适合初学者入门
视频介绍: 本视频是iOS学院精心录制的免费精华版iOS语言基础视频,该视频特点在于最大程度保证了知识点的完整性,按知识点进行视频录制,每个视频控制在20分钟左右,不会使学生产生疲劳,授课讲究通俗易懂 ...
- Docker-Bridge Network 02 容器与外部通信
本小节介绍bridge network模式下,容器与外部的通信. 1.前言2.容器访问外部2.1 访问外网2.2 原理2.3 一张图总结2.4 抓包3.外部访问容器3.1 创建nginx容器并从外部访 ...
- Python-气象-大气科学-可视化绘图系列(三)—— 地图上自动标注省会名称(demo调整中)(代码+示例)
本文为原创文章 本文链接:https://www.cnblogs.com/zhanling/p/12606990.html # -*- coding: utf-8 -*- ''' Author: He ...
- Daily Scrum 1/7/2015
Process: Zhaoyang: Do some code intergration and test the total feature in the IOS APP. Yandong: Cod ...
- PrestoSPI安全扩展
由于Presto官方文档和谷歌搜索都没有相关的内容,git项目中也没有支持sentry的安全插件扩展,因此只能从源码中寻找答案,在梳理完SPI包的安全相关源码结构后,已实现了一个自定义的安全插件,经验 ...
- hadoop 伪分布配置
配置 Hadoop 伪分布式 任务配置说明: VMware 15 Centos 6.5 java -jdk 1.8 hadoop-2.6.0-cdh5.14.0.tar.gz 第一步 自行安装虚拟机 ...
- 尝试用Vue.js开发网页小游戏的过程
准备 首先去官方下载并安装VSCODE,下载地址 https://code.visualstudio.com/.安装后打开会发现是英文版的,需要去安装插件来汉化.具体是在扩展插件搜索chinese,选 ...
- thinkphp5.0 url跳转
<a href="{:url('member/index/index',['id'=>5])}">跳转</a> define()自定义常量在thiin ...
- 关于宝塔下的项目中的php不能访问的问题
遇到的问题是访问项目根目录的所有php文件都是报404错,而其他文件则可以,比如txt,最后查资料发现 在宝塔运行网站的时候会在项目的根目录自动生成一个.user.ini文件,这个文件主要是防止对指定 ...
- 查看现有的 cipher suite
openssl ciphers [-v] [-ssl2] [-ssl3] [-tls1] [cipherlist]