2.29总结

P1802 5 倍经验日 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目背景

现在乐斗有活动了!每打一个人可以获得 5 倍经验!absi2011 却无奈的看着那一些比他等级高的好友,想着能否把他们干掉。干掉能拿不少经验的。

题目描述

现在 absi2011 拿出了 x 个迷你装药物(嗑药打人可耻…),准备开始与那些人打了。

由于迷你装药物每个只能用一次,所以 absi2011 要谨慎的使用这些药。悲剧的是,用药量没达到最少打败该人所需的属性药药量,则打这个人必输。例如他用 2 个药去打别人,别人却表明 3 个药才能打过,那么相当于你输了并且这两个属性药浪费了。

现在有 n 个好友,给定失败时可获得的经验、胜利时可获得的经验,打败他至少需要的药量。

要求求出最大经验 s,输出 5s。

输入格式

第一行两个数,n 和 x。

后面 n 行每行三个数,分别表示失败时获得的经验 losei​,胜利时获得的经验 wini​ 和打过要至少使用的药数量usei​。

输出格式

一个整数,最多获得的经验的五倍。

输入输出样例

输入 

6 8
21 52 1
21 70 5
21 48 2
14 38 3
14 36 1
14 36 2

输出 

4

思路:采用01背包做法,当剩余药品数量大于等于打败所需药品数量时,加上胜利经验值(此时药品总数需减去打败所使用的药品),若小于则加上失败经验值,f[i]的含义就是当有i个药品时能获得的最大经验值

代码

#include<iostream>
#include<math.h>
#include<algorithm>
#include<cstring>
using namespace std;
long long n, x;
long long a[1001][1010], b[1000010],f[1000010];
int main() {
	cin >> n >> x;
	for (int i = 1; i <= n; i++)
		cin >> a[i][0] >> a[i][1] >> b[i];
	for (int i = 1; i <= n; i++) {
		for (int j = x; j >= 0; j--) {
			if (j >= b[i])
				f[j] = max(f[j] + a[i][0], f[j - b[i]] + a[i][1]);
			else f[j] += a[i][0];
		}
	}
	cout << f[x] * 5 << endl;
	return 0;
}

P1616 疯狂的采药 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目背景

此题为纪念 LiYuxiang 而生。

题目描述

LiYuxiang 是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同种类的草药,采每一种都需要一些时间,每一种也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”

如果你是 LiYuxiang,你能完成这个任务吗?

此题和原题的不同点:

1. 每种草药可以无限制地疯狂采摘。

2. 药的种类眼花缭乱,采药时间好长好长啊!师傅等得菊花都谢了!

输入格式

输入第一行有两个整数,分别代表总共能够用来采药的时间 t 和代表山洞里的草药的数目 m。

第 2 到第 (m+1) 行,每行两个整数,第 (i+1) 行的整数 ai​,bi​ 分别表示采摘第 i 种草药的时间和该草药的价值。

输出格式

输出一行,这一行只包含一个整数,表示在规定的时间内,可以采到的草药的最大总价值。

输入输出样例

输入 

70 3
71 100
69 1
1 2

输出 

140

说明/提示

数据规模与约定
  • 对于 30% 的数据,保证 m≤10^3 。
  • 对于 100% 的数据,保证 1≤m≤10^4,1≤t≤10^7,且 1≤m×t≤10^7,1≤ai​,bi​≤10^4。

思路:这道题同样也可以用01背包来解决,但是这道题必须使用long long防止数组越界

代码

#include<iostream>
#include<math.h>
#include<algorithm>
#include<cstring>
using namespace std;
long long m, t;
long long w[1010000],v[1010000],f[10100000];
int main() {
	cin >> t >> m;
	for (long long i = 1; i <= m; i++)
		cin >> w[i] >> v[i];
	for (long long i = 1; i <= m; i++) {
		for (long long j = w[i]; j <= t; j++) {
			f[j] = max(f[j], f[j - w[i]] + v[i]);
		}
	}
	cout << f[t] << endl;
	return 0;
}

P1002 [NOIP2002 普及组] 过河卒 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目描述

棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。

棋盘用坐标表示,A 点 (0,0)、B 点 (n,m),同样马的位置坐标是需要给出的。

现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。

输入格式

一行四个正整数,分别表示 B 点坐标和马的坐标。

输出格式

一个整数,表示所有的路径条数。

输入输出样例

输入 

6 6 3 3

输出 

6

说明/提示

对于100% 的数据,1≤n,m≤20,0≤ 马的坐标 ≤20。

思路:把一整个棋盘看成是一个初始化为0的数组,把马可能走到的八个点包括它本身标记为已走过(数组为1),再用一个二维数组来记录从起始点到目的点的最多路径,从起始点开始,要往下寻找只能往下或者往右走,并且要该点为0时(表示能走)才能产生一条新的路径,step[i][j]的作用就是一直递归直到循环结束(不断更新为最大值),因为一个点可以产生两条路,依次类推即可

代码

#include<iostream>
#include<math.h>
#include<algorithm>
#include<cstring>
using namespace std;
long long dx[8] = {1,1,-1,-1,2,2,-2,-2};
long long dy[8] = {2,-2,2,-2,1,-1,1,-1 };
long long vis[1010][1010];
long long step[1010][1010];
long long a, b, n, m, w, v;
int main() {
	cin >> a >> b >> n >> m;
	a++;
	b++;
	n++;
	m++;
	step[1][1] = 1;
	vis[n][m] = 1;
	for (int i = 0; i < 8; i++) {
		w = n, v = m;
		w += dx[i];
		v += dy[i];
		vis[w][v] = 1;
	}
	for (int i = 1; i <= a; i++) {
		for (int j = 1; j <= b; j++) {
			if((i!=1||j!=1)&&vis[i][j]==0)
			step[i][j] = step[i - 1][j] + step[i][j - 1];
		}
	}
	cout << step[a][b] << endl;
	return 0;
}

  • 34
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要从官方网站下载 glibc-2.29,首先需要访问 GNU C Library(glibc)的官方网站。在浏览器中输入 https://www.gnu.org/software/libc/download.html,然后找到 glibc-2.29 的下载链接。 点击该下载链接后,会打开一个页面,列出了 glibc-2.29 的下载选项。根据你的操作系统和架构选择合适的下载选项。通常提供了不同的压缩格式,如.tar.gz 或.tar.xz。选择下载格式后,点击下载链接,开始下载 glibc-2.29 的压缩包。 下载完成后,你需要解压缩该压缩包。你可以使用压缩软件,如7-Zip 或 WinRAR,打开压缩包并解压缩到一个合适的位置,例如你的计算机的某个文件夹。 解压缩后,你会获得一个文件夹,其中包含了 glibc-2.29 的源代码和其他相关文件。你可以根据你的需求和使用情况,对 glibc-2.29 进行编译和安装。 编译和安装过程可能会有一些特定的步骤和要求,可以在下载的文件夹中找到 README 或 INSTALL 文件以获取详细的安装指南。 总结而言,下载 glibc-2.29 可以通过访问 GNU C Library 的官方网站,在下载页面选择适合你的操作系统和架构的压缩包,下载并解压缩后,按照提供的安装指南进行编译和安装。 ### 回答2: 要下载glibc-2.29,你可以按照以下步骤进行: 1. 打开glibc官方网站(https://www.gnu.org/software/libc/)。 2. 导航到下载页面,找到glibc-2.29版本的下载链接。 3. 点击下载链接,选择一个可信的下载源。 4. 确认下载目录,并开始下载glibc-2.29的源代码压缩文件。 5. 等待下载完成后,解压缩源代码文件。 6. 进入解压缩后的目录,你可以看到glibc-2.29的源代码文件夹。 7. 使用你喜欢的编译器,如GCC,进行编译。你可以按照官方的指南或者README文件进行编译设置。 8. 在编译完成后,可以在生成的目录中找到编译后的glibc-2.29库文件。 9. 如果你希望将glibc-2.29安装到系统目录中,可以使用以下命令进行安装(可能需要root权限): ``` make install ``` 该命令将把glibc-2.29库文件复制到系统目录中。 10. 安装完成后,你可以在系统中使用glibc-2.29库进行开发或者执行相应的操作。 需要注意的是,下载和安装glibc-2.29的过程可能需要一些软件开发和编译知识,如果你对此不太熟悉,建议参考官方文档或者寻求专业人士的帮助。 ### 回答3: glibc-2.29 是一个GNU C函式库,它提供了执行C程序所需的基本函数,包括内存管理、字符串操作、输入输出、文件操作等。如果您需要使用glibc-2.29,您可以通过以下方式进行下载。 首先,您可以前往glibc官方网站,找到glibc-2.29的下载链接。官方网站通常提供可靠的软件下载源,确保您下载到的是正版、无毒、未经篡改的软件。 第二种方式是通过各大软件仓库进行下载。不同操作系统如Linux、Unix、Mac OS X等都有各自的软件仓库,您可以在相应的软件仓库中搜索glibc-2.29,找到适用于您的操作系统版本的软件包进行下载。 另外,您也可以通过软件版本库管理工具进行下载,如apt、yum、brew等。这些工具会自动从指定的软件版本库中下载并安装glibc-2.29。 无论您选择哪种方式进行下载,建议在下载前先确保您的网络连接是稳定的,以避免下载过程中出现中断或下载速度过慢导致的问题。 最后,下载完成后,您还需要进行安装和配置。这通常包括解压缩下载的软件包,执行相应的安装脚本,然后根据您的操作系统和使用需求进行相应的配置。 总结来说,下载glibc-2.29主要有两种途径:通过官方网站下载或通过操作系统的软件仓库进行下载。无论哪种方式,下载后还需进行安装和配置,以便正确使用glibc-2.29提供的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值