前言:T3写挂了,有点难受。

---------------

T1 中位数

题意简述:给你一段长度为$n$的序列,分别输出$[1,2k-1]$的中位数$(2k-1\leq n)$。

-------------

其实正解是用两个堆分别为大根堆和小根堆。但我这里偷了个懒,直接由STL函数upper_bound二分查找插入数字(STL大法好

Code:

#include<bits/stdc++.h>
using namespace std;
vector<int> v;
int n;
int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++)
{
int x;
scanf("%d",&x);
v.insert(upper_bound(v.begin(),v.end(),x),x);
if (i%==)
printf("%d\n",v[(i-)/]);
}
return ;
}

T2 多边形

题意简述:给你一个有n个边的多边形,每个顶点上有一个数字,每条边上为$+$或$\times $ .现在去掉任意一条边,求运算的最大值.

--------------

这道题其实跟石子合并有点像,不过有一点要注意:1.子区间的合并受运算符号限制;2.可能有负数,所以我们同时要维护最小值,因为有可能负乘负大于当前数.

题目细节较多.

Code:

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
int f[maxn*][maxn*][maxn*],mf[maxn*][maxn*][maxn*];
int ch[maxn*],a[maxn*];
int n,ans=-0x3f3f3f3f;
int maxx(int a,int b,int c,int d,int e)
{
return max(a,max(b,max(c,max(d,e))));
}
int minn(int a,int b,int c,int d,int e)
{
return min(a,min(b,min(c,min(d,e))));
}
int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++)
for (int j=;j<=n*;j++)
for (int k=;k<=n*;k++) f[i][j][k]=-0x3f3f3f3f,mf[i][j][k]=0x3f3f3f3f;
for (int i=;i<=*n;i++)
{
if (i%==){
char c;cin>>c;
if (c=='t') ch[i/+]=;
else ch[i/+]=;
}
else cin>>a[i/];
}
for (int i=n+;i<=n*;i++)
{
a[i]=a[i-n];
ch[i]=ch[i-n];
}
for (int i=;i<=n;i++)
for (int j=;j<=n*;j++) f[i][j][j]=mf[i][j][j]=a[j];
for (int i=;i<=n;i++)
{
for (int len=;len<=n;len++)
{
for (int j=i;j<=i+n-;j++)
{
int k=j+len-;
if (k>=i+n) break;
for (int l=j;l<k;l++)
{
if (ch[l+]==) {
f[i][j][k]=max(f[i][j][k],f[i][j][l]+f[i][l+][k]);
mf[i][j][k]=min(mf[i][j][k],mf[i][j][l]+mf[i][l+][k]);
}
else{
f[i][j][k]=maxx(f[i][j][k],f[i][j][l]*f[i][l+][k],f[i][j][l]*mf[i][l+][k],mf[i][j][l]*f[i][l+][k],mf[i][j][l]*mf[i][l+][k]);
mf[i][j][k]=minn(mf[i][j][k],f[i][j][l]*f[i][l+][k],f[i][j][l]*mf[i][l+][k],mf[i][j][l]*f[i][l+][k],mf[i][j][l]*mf[i][l+][k]);
}
}
}
}
ans=max(ans,f[i][i][i+n-]);
}
printf("%d",ans);
return ;
}

T3 连锁店

题意简述:张三开了$n$个连锁店,每个连锁店能用$a_{i}$个空瓶换$b_{i}$瓶水.每个店都可以无限次兑换,现在李四有$s$瓶水,求最多的兑换次数.如果不存在输出$-1$.

$n\leq 100000$,$s,a_{i},b_{i}\leq 10^{19}$.

---------------------

无解的情况:当$s\geq a_{i}$并且$a_{i}\leq b_{i}$.在输入的时候顺便判断.

我们考虑贪心:以$a_{i}-b_{i}$作为关键字排序很显然差值越小,兑换次数越多.

记得开$unsigned$ $long$ $long$.

Code:

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
const int maxn = 1e5+,mod = 1e9+;
struct node{ll x,y,z;}a[maxn];
bool operator < (const node a,const node b){
if(a.z != b.z)return a.z < b.z;
return a.x<b.x;
}
int main()
{
int n,flag = ; ll s,ans = ;
scanf("%d%llu",&n,&s);
for(int i=;i<n;i++){
scanf("%llu%llu",&a[i].x,&a[i].y);
if(a[i].x>s)n--,i--;
else if(a[i].x<=a[i].y)flag = ;
a[i].z = a[i].x-a[i].y;
}
if(flag)return *puts("-1");
sort(a,a+n);
for(int i=;i<n;i++){
if(s>=a[i].x){
ll tmp = (s-a[i].x)/a[i].z+;
ans += tmp;
s -= tmp*a[i].z;
}
printf("%llu\n",ans);
return ;
}

3月21日考试 题解(数据结构+区间DP+贪心)的更多相关文章

  1. 3月28日考试 题解(二分答案+树形DP+数学(高精))

    前言:考试挂了很多分,难受…… --------------------- T1:防御 题意简述:给一条长度为$n$的序列,第$i$个数的值为$a[i]$.现让你将序列分成$m$段,且让和最小的一段尽 ...

  2. 7月15日考试 题解(链表+状压DP+思维题)

    前言:蒟蒻太弱了,全打的暴力QAQ. --------------------- T1 小Z的求和 题目大意:求$\sum\limits_{i=1}^n \sum\limits_{j=i}^n kth ...

  3. 7月13日考试 题解(DFS序+期望+线段树优化建图)

    T1 sign 题目大意:给出一棵 N 个节点的树,求所有起点为叶节点的有向路径,其 上每一条边权值和的和.N<=10000 水题.考试的时候毒瘤出题人(学长orz)把读入顺序改了一下,于是很多 ...

  4. 6月28日考试 题解(GCD约分+动态规划+树状数组二维偏序)

    前言:考的一般般吧……T3暴力没打上来挺可惜的,到手的75分没了. ---------------------------------- T1 [JZOJ4745]看电影 Description 听说 ...

  5. 2016年12月21日 星期三 --出埃及记 Exodus 21:16

    2016年12月21日 星期三 --出埃及记 Exodus 21:16 "Anyone who kidnaps another and either sells him or still h ...

  6. 2016年11月21日 星期一 --出埃及记 Exodus 20:12

    2016年11月21日 星期一 --出埃及记 Exodus 20:12 "Honor your father and your mother, so that you may live lo ...

  7. 2016年10月21日 星期五 --出埃及记 Exodus 19:5

    2016年10月21日 星期五 --出埃及记 Exodus 19:5 Now if you obey me fully and keep my covenant, then out of all na ...

  8. 成都Uber优步司机奖励政策(2月21日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. 长沙4月21日开发者大会暨.NET社区成立大会活动纪实

    活动总结 2019年4月21日是一个斜风细雨.微风和煦的美好日子,由长沙.NET技术社区.腾讯云云加社区.微软Azure云技术社区.中国.NET技术社区.长沙柳枝行动.长沙互联网活动基地(唐胡子俱乐部 ...

随机推荐

  1. HashMap等集合初始化时应制定初始化大小

    阿里巴巴开发规范中,推荐用户在初始化HashMap时,应指定集合初始值大小. 一.原因 这个不用多想,肯定是效率问题,那为什么会造成效率问题呢? 当我们new一个HashMap没有对其容量进行初始化的 ...

  2. Layui数据表格动态加载操作按钮

    效果: 方法一:绑定模版选择器 <div class="layui-card"> <div class="layui-card-body layui-r ...

  3. java动态代理基本原理及proxy源码分析一

    本系列文章主要是博主在学习spring aop的过程中了解到其使用了java动态代理,本着究根问底的态度,于是对java动态代理的本质原理做了一些研究,于是便有了这个系列的文章 为了尽快进入正题,这里 ...

  4. 记一次WPF程序带参数启动

    问题:总共有两个程序.第一个程序使用Process带参数启动第二个程序. 网上一堆人都说什么重写Main入口啊 什么的.然后还一堆人跟着复制发文章.我也是醉了,简直是坑人.为何要舍近求远,直接重写AP ...

  5. 消息队列-一篇读懂rabbitmq(生命周期,confirm模式,延迟队列,集群)

    什么是消息队列? 就是生产者生产一条消息,发送到这个rabbitmq,消费者连接rabbitmq并且进行消费,生产者和消费者并需要知道对方是如何工作的,从而实现程序之间的解耦,异步和削峰,这也就是消息 ...

  6. shell专题(九):函数

    9.1 系统函数 1.basename基本语法 basename [string / pathname] [suffix]   (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字 ...

  7. 爬虫前篇 /https协议原理剖析

    爬虫前篇 /https协议原理剖析 目录 爬虫前篇 /https协议原理剖析 1. http协议是不安全的 2. 使用对称秘钥进行数据加密 3. 动态对称秘钥和非对称秘钥 4. CA证书的应用 5. ...

  8. Python之爬虫(十四) Scrapy框架的架构和原理

    这一篇文章主要是为了对scrapy框架的工作流程以及各个组件功能的介绍 Scrapy目前已经可以很好的在python3上运行Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是 ...

  9. Kubernetes容器化工具Kind实践部署Kubernetes v1.18.x 版本, 发布WordPress和MySQL

    Kind 介绍 Kind是Kubernetes In Docker的缩写,顾名思义是使用Docker容器作为Node并将Kubernetes部署至其中的一个工具.官方文档中也把Kind作为一种本地集群 ...

  10. springboot使用maven命令打包jar及配置文件配置

    sspringboot项目如果不想每次修改配置文件就要重新打包jar的话,可以进行以下配置进行打包 1.在resources下新建assembly文件夹package.xml <?xml ver ...