JZOJ 8.15 B组总结

NO.1 平台

Description
  Alice要搭建平台,平台不能漂在空气中,必须要有两根柱子支撑,具体地说,每个平台的两端必须由一根柱子支撑,柱子的另一端在地板或另一个平台上。
  给你平台的放置位置(如下左图所示),每个平台的位置由它的高度(离地面的垂直距离)和水平方向两个端点的坐标决定,每根柱子必须安放在离端点0.5个单位的位置,如下右图所示。
  这里写图片描述

  编程计算所需柱子总长是多少。


思路:暴力枚举
暴力O(n^2)枚举,任意一个平台,对除它外的任意平台的贡献就好了


代码:

uses math;
var n,i,lmax,rmax,j,ans:longint;h,l,r:array[0..101]of longint;
beginreadln(n);for i:=1 to n do readln(h[i],l[i],r[i]);for i:=1 to n dobeginlmax:=h[i];rmax:=h[i];for j:=1 to n doif (i<>j)and(h[i]>h[j]) thenbeginif (l[i]<r[j])and(l[i]>=l[j]) then lmax:=min(lmax,h[i]-h[j]);if (r[i]>l[j])and(r[i]<=r[j]) then rmax:=min(rmax,h[i]-h[j]);end;ans:=ans+lmax+rmax;end;writeln(ans);
end.

NO.2 单足跳

Description
  游戏在一行N个方块中进行,编号为1到N,一开始Alice在方块1中,第一次只能跳到方块2中,接下来每一次跳跃必须满足以下两个限制:
  (1) 如果是向前跳(即跳到比现在编号大的方块),跳跃距离必须比上一次要大1;
  (2) 如果是向后跳(即跳到比现在编号小的方块),跳跃距离必须跟上一次一样。
  例如,第一次跳跃后,Alice可以跳回1也可以跳到4。
  每进入一个方块,Alice必须支付一定的费用,Alice的目标花最少的钱从方块1跳到方块N。编程计算最小的花费。
Input
  第一行包含一个整数N(2<=N<=1000),表示方块的个数。
  接下来N行,每行包含一个不超过500的正整数表示进入该方块的费用。
Output
  输出Alice跳到N的最小花费。
Sample Input

输入1:
6
1
2
3
4
5
6

输入2:
8
2
3
4
3
1
6
1
4

Sample Output

输出1:
12

输出2:
14


思路:dp
设f[i][j]为跳了i步,当前在第j个格子的最小花费
那么就枚举跳了多少步
再转移一下就好了


代码:

var n,ans,i,j:longint;v:array[0..1001]of longint;f:array[0..1001,0..1001]of longint;
beginreadln(n);ans:=maxlongint;for i:=1 to n do readln(v[i]);fillchar(f,sizeof(f),$7f);f[1,2]:=v[2];for i:=1 to n-1 dobeginfor j:=n downto i+1 do if f[i,j]+v[j-i]<f[i,j-i] then f[i,j-i]:=f[i,j]+v[j-i];for j:=1 to n-i do if f[i,j]<>2139062143 then f[i+1,i+j+1]:=f[i,j]+v[i+j+1];if f[i,n]<ans then ans:=f[i,n];end;write(ans);
end.

NO.3 生日聚餐

Description
  Alice在餐馆里当服务员,今天是她生日,她请求厨师帮她准备生日晚餐,晚餐由N种原料做成,每道菜所需每种原料的数量是一样的。
  厨房里有一些原料,但不够,Alice还需要从旁边的超市中购买一些回来。超市里什么原料都有,每种原料都分大包装和小包装。Alice有M元钱,她想利用这M元钱购买原料使得能做出最多的菜。
Input
  第一行包含两个整数N和M(1<=N<=100,1<=M<=100000),接下来N行,每行包含6个正整数,用来描述这种原料的信息,具体如下:
  (1) X:10<=X<=100,表示一道菜中必须含有这种原料的数量;
  (2) Y:1<=Y<=100,表示这种原料厨房已有的数量;
  (3) Sm:1<=Sm<=100,表示超市里小包装中含有这种原料数量;
  (4) Pm:10<=Pm<=100,表示小包装的价格;
  (5) Sv:1<=Sv<=100,表示超市里大包装中含有这种原料数量;   
(6) Pv:10<=Pv<=100,表示大包装的价格;
Output
输出最多能做多少道菜。
Sample Input

输入1:
2 100
10 8 10 10 13 11
12 20 6 10 17 24

输入2:
3 65
10 5 7 10 13 14
10 5 8 11 14 15
10 5 9 12 15 16

Sample Output

输出1:
5

输出2:
2

Hint
【样例说明】
  样例1中,Alice购买第一种原料3个小包装和1个大包装,购买第二种原料1个小包装和2个大包装,一共花费3×10+1×11+1×10+2×24=99元。
  两种原料的数量分别为51个(8+3×10+11)和60个(20+1×6+2×17),可以做出5道菜。


思路:二分+贪心
每次二分求出一个mid,表示全部菜至少要做mid道
再用贪心,求出每一道菜最小需要的钱数,加起来,判断一下是否符合条件,符合l=mid+1 不符合 r=mid


代码:

#include<cstdio>
#include<iostream>
using namespace std;
int x[101],y[101],sm[101],pm[101],sv[101],pv[101],f[101][100001];
int mid,n,m,l,r;
bool pd(int q)
{
    int s[101],k,ans,sum=0;
    for (int i=1;i<=n;i++) s[i]=q*x[i]-y[i];
    for (int i=1;i<=n;i++)
    {   
        ans=2147483647;
        for (int j=0;j<=s[i]/sm[i]+2;j++)
        {
            if (s[i]-j*sm[i]>0) k=(s[i]-sm[i]*j-1)/sv[i]+1; else k=0;
            ans=min(ans,j*pm[i]+k*pv[i]);
            if (j*pm[i]>=ans) break;
        }
        sum+=ans;
        if (sum>m) return false;
    }
    if (sum<=m) return true;
}
int main()
{
    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++) scanf("%d%d%d%d%d%d",&x[i],&y[i],&sm[i],&pm[i],&sv[i],&pv[i]);
    l=0; r=m;
    while (l<r)
    {
        mid=(l+r)>>1;
        if (pd(mid)) l=mid+1; else r=mid;
    }
    printf("%d\n",l-1);
    return 0;
}

NO.4 数学题

Description
  当Alice在浏览数学书时,看到一个等式A=S,奇怪的是A和S并不相等。Alice发现可以通过在A中添加加号“+”从而使得等式成立。
  编程计算最少需要插入多少加号使得等式成立。允许每个数有多个前导0。
Input
  输入第一行包含一个等式形式为A=S。
  A和S都是没有前导0的正整数,并保证不相同。
  A最多有1000位。
  S<=5000。
  输入保证有解。
Output
  输出最少需要插入的加号数量。
Sample Input

输入1:
143175=120

输入2:
5025=30

输入3:
999899=125

Sample Output

输出1:
2

输出2:
1

输出3:
4


思路:DP
设f[i][j]为前i位和为j需要的最少加号个数
f[l,j+sum]:=min(f[l,j+sum],f[i,j]+1);
if (j+sum=n)and(l=k) then ans:=min(ans,f[i,j]);
l为枚举到第l位,sum为第i~l位的数字和,k为a的长度


代码:

uses math;
var s,st,s2:ansistring;s1:string[1];a:array[0..1000]of longint;f:array[0..1000,0..5000]of longint;i,j,k,m,n,t,ans,l,sum,p,w:longint;procedure init;
beginreadln(s);st:=copy(s,1,pos('=',s)-1);val(copy(s,pos('=',s)+1,length(s)),n);for i:=1 to length(st) dobegink:=k+1;a[k]:=ord(s[i])-48;end;for i:=0 to 1000 do for j:=0 to 5000 do f[i,j]:=maxlongint;f[0,0]:=0;ans:=maxlongint;
end;function make:longint;
begins2:='';for p:=t to l dobeginstr(a[p],s1);s2:=s2+s1;end;val(s2,sum);if j+sum<=n thenbeginf[l,j+sum]:=min(f[l,j+sum],f[i,j]+1);if (j+sum=n)and(l=k) then ans:=min(ans,f[i,j]);endelse exit(1);exit(0);
end;begininit;for i:=0 to k dofor j:=0 to n doif f[i,j]<maxlongint thenbegint:=i+1;while (a[t]=0)and(t<k) do t:=t+1;w:=min(k,t+length(st));for l:=t to w do if make=1 then break;end;writeln(ans);
end.

转载于:https://www.cnblogs.com/Comfortable/p/8412255.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416131.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vux 修改 设置 主题 颜色

vux使用的预处理语言是less&#xff0c;使用变量对主题颜色进行管理&#xff0c;所以修改主题需要两步走。 1、在src目录下面创建style/theme.less文件。内容如下 zPrimaryColor:#01428C;header-background-color:zPrimaryColor; 2、在build/webpack.base.conf.js文末加上一…

g2o求解BA 第10章

1、g2o_bal_class.h1.1 projection.hg2o还是用图模型和边&#xff0c;顶点就是相机和路标&#xff0c;边就是观测&#xff0c;就是像素坐标。只不过这里的相机是由旋转&#xff08;3个参数&#xff0c;轴角形式&#xff0c;就是theta*nx,theta*ny,theta*ny),位移(3个参数&#…

宝塔面板 Windows 2012 R2 使用指南(在更新中)

第一次使用Windows系统服务器 1、安装宝塔Windows面板 For 2012 R2镜像。 从镜像市场选择 输入宝塔Windows面板 For 2012 R2进行选择&#xff0c;点击使用。 设置密码 2、使用windows电脑进行远程桌面连接

支付宝当面付接口如何计算优惠

支付宝当面付官方接口文档&#xff1a;https://docs.open.alipay.com/194/105170/ 在弄清楚如何计算优惠之前先了解下相关金额参数&#xff1a; 1、请求中金额参数total_amount&#xff1a;订单总金额&#xff0c;订单总金额&#xff0c;单位为元&#xff0c;精确到小数点后两位…

微信 公众号 JS接口安全域名 是啥 什么意思

在微信开发时&#xff0c;需要点击【公众号设置】→【功能设置】→【JS接口安全域名】填写自己的访问域名。 因为微信的安全做得比较好&#xff0c;我们根据 微信 js sdk写的函数、方法&#xff0c;只有在指定的安全域名下才能被微信唤起。 注意&#xff1a;设置完安全域后&am…

oracle知识博客链接

http://blog.csdn.net/YiQiJinBu/article/category/1100395/1 转载于:https://www.cnblogs.com/fushou/p/7387964.html

sign check fail: check Sign and Data Fail解决方案

我们先看一下类似的错误信息如下&#xff1a; com.alipay.api.AlipayApiException: sign check fail: check Sign and Data Fail这里着重说明&#xff0c;报这个错误是因为支付宝公钥&#xff08;alipay_public_key&#xff09;使用错误导致的&#xff01; 很多开发者把自己生成…

js 判断 浏览器 是否为 微信 浏览器

//判断是否是微信浏览器的函数 function isWeiXin(){var ua window.navigator.userAgent.toLowerCase();if(ua.match(/MicroMessenger/i) micromessenger){return true;}else{return false;} } isWeiXin()

kafka 常用命令汇总

启动 kafka 服务 # 使用 -daemon 选项表示后台运行kafka服务 ./kafka-server-start.sh -daemon ../config/server.properties 创建主题 ./kafka-topics.sh --create --zookeeper zk_host:port --replication-factor 1 --partitions 1 --topic topic_name 列举所有主题 ./kafka-…

支付宝接口报错 insufficient-isv-permissions 错误原因: ISV权限不足解决方案

原贴地址&#xff1a;https://openclub.alipay.com/read.php?tid1672&fid72&#xff0c;欢迎大家访问错误信息一般如下&#xff1a; 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足错误原因&#xff1a; 1.应用未上线 2.正式环境和沙箱环境网关使用…

Luogu P1115 最大子段和(dp 贪心)

P1115 最大子段和 题目描述 给出一段序列&#xff0c;选出其中连续且非空的一段使得这段和最大。 输入输出格式 输入格式&#xff1a; 输入文件maxsum1.in的第一行是一个正整数N&#xff0c;表示了序列的长度。 第2行包含N个绝对值不大于10000的整数A[i]&#xff0c;描述了这段…

微信 手机 网站 开发 签名 signature node (在更新中)

在进行微信手机网站开发时&#xff0c;第一座大山就是获取签名。下面是微信JS-SDK开发文档的内容&#xff0c;本文主要理清思路&#xff0c;开发起来&#xff0c;就很快了。 wx.config({debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来&#xff0c;若…

无效的appid排查方案

原贴地址&#xff1a;https://openclub.alipay.com/read.php?tid1909&fid72&ant_sourcezsearch&#xff0c;欢迎大家访问 报错信息一般如下&#xff1a; {"code":"40002","msg":"Invalid Arguments","sub_code":&q…

微信 IP白名单

买了周杰伦演唱会的门票才能去周杰伦演唱会听歌。在微信开发中获取access_token也是讲得同一个道理。我们首先需要设置微信的IP白名单。 点击查看即可配置。

教你设置eclipse自动生成的author等注释

每新建一个类上面都会有一行注释&#xff1a; /*** author 颠覆白的黑* version 创建时间&#xff1a;2018年3月26日 下午5:29:31* 类说明 */操作步骤和大家分享一下&#xff1a; window&#xff0d;>preference&#xff0d;>java&#xff0d;>code styple&#xff0…

前端学习(2546):debugger

执行进行数据代理 变量存储了一下 加入断点

暑期学习2

关于video视频插入 仍然是mime类型不支持&#xff0c;于是我将火狐换掉换成了chrome。 然后在运行的时候 第一点、视频文件无法找到&#xff1b;第二点、html5video.js无法找到 于是我先讲html5video.js删除重新去下载了个video文件复制进js包中 其实就只剩下视频文件无法找到这…

http 请求头 header Referer 含义和作用

Referer是header的一部分&#xff0c;当浏览器向web服务器发送请求的时候&#xff0c;一般会带上Referer&#xff0c;告诉服务器页面的请求地址&#xff0c;服务器就可以进行信息处理了。 HTTP Referer的一些实际用途&#xff1a; 1、防盗链。 我在www.google.com里有一个ww…

教你配置支付宝应用网关和授权回调地址

1.应用网关和授权回调地址是什么&#xff1f; a).应用网关是用于接收支付宝异步通知&#xff0c;例如口碑开店中&#xff0c;需要配置此网关来接收【开发者门店被动通知】。 注&#xff1a;这里的异步通知不是我们接口参数中的notify_url&#xff0c;是口碑开…