牛客刷题-Day7

news/2025/9/28 23:39:59/文章来源:https://www.cnblogs.com/Cocoicobird/p/19117834

牛客刷题-Day7

今日刷题:\(1031-1035\)

1032 迁徙过程中的河流

题目描述

牛市的幸存的先民在流星雨之后就忍痛离开了这片土地,选择迁徙,在迁徙的途中,他们需要渡过一条河。因为牛市的树木在流星雨中被严重破坏,所以他们只造出了一艘小船,船太小了,一次只能乘坐两人。
牛市的先民们每个人划船的速度都不尽相同,所以每个人都有一个渡河时间T,为了保证船的平衡,当穿上有两个人的时候,需要他们按照慢的那个人的速度划船,也就是说船到达对岸的时间等于船上渡河时间长的那个人的时间。
现在已知 \(N\) 个人的渡河时间 \(T\),请问最少要花费多少时间,才能使所有人都过河。

输入描述

输入文件第一行为先民的人数 \(N\)\(N≤100000\)),以下有 \(N\) 行,每行一个整数为每个人的渡河时间。

输出描述

输出文件仅包含一个数,表示所有人都渡过河的最少渡河时间。

示例1

输入

4
5
7
11
16

输出

42

说明
首先 \(1\)\(2\) 先到河对岸花费 \(7\),然后 \(1\) 回来花费 \(5\)\(3\)\(4\) 到河对岸花费 \(16\)\(2\) 回来花费 \(7\)\(1\)\(2\) 再到河对岸花费 \(7\)

解题思路

首先是贪心,将渡河时间按照递增的顺序进行排序。

  • 状态表示:\(f_i\) 表示前 \(i\) 个人渡河耗费的时间,求最小值;
  • 状态计算:两种方式,首先是耗时最少的 \(a_1\) 为来回接送的人员,\(a_1\) 先回去然后带着 \(a_i\) 过去,则 \(f_i=f_{i-1} + a_1 + a_i\);其次\(a_1\) 先回去,两个耗时相近的一起过去,然后 \(a_2\) 去接 \(a_1\)\(f_i=f_{i-2} + a_1 + a_i + a_2 * 2\)

C++ 代码

#include <bits/stdc++.h>
using namespace std;
const int N = 100010;int n, a[N];
int f[N]; // 表示前 i 个人过河的时间int main() {scanf("%d", &n);for (int i = 1; i <= n; i++)scanf("%d", &a[i]);sort(a + 1, a + n + 1);memset(f, 127, sizeof f);f[1] = a[1], f[2] = a[2];for (int i = 3; i <= n; i++)f[i] = min(f[i - 1] + a[1] + a[i], f[i - 2] + a[1] + a[i] + a[2] * 2);printf("%d\n", f[n]);return 0;
}

1034 [USACO 2009 Dec G]Video Game Troubles

题目描述

Farmer John's cows love their video games! FJ noticed that after playing these games that his cows produced much more milk than usual, surely because contented cows make more milk.
The cows disagree, though, on which is the best game console. One cow wanted to buy the Xbox 360 to play Halo 3; another wanted to buy the Nintendo Wii to play Super Smash Brothers Brawl; a third wanted to play Metal Gear Solid 4 on the PlayStation 3. FJ wants to purchase the set of game consoles (no more than one each) and games (no more than one each -- and within the constraints of a given budget) that helps his cows produce the most milk and thus nourish the most children.
FJ researched \(N\) (\(1 <= N <= 50\)) consoles, each with a console price \(P_i\) (\(1 <= P_i <= 1000\)) and a number of console-specific games \(G_i\) (\(1 <= G_i <= 10\)). A cow must, of course, own a console before she can buy any game that is specific to that console. Each individual game has a game price \(GP_j\) (\(1 <= GP_j <= 100\)) and a production value (\(1 <= PV_j <= 1,000,000\)), which indicates how much milk a cow will produce after playing the game. Lastly, Farmer John has a budget \(V\) (\(1 <= V <= 100,000\)) which is the maximum amount of money he can spend. Help him maximize the sum of the production values of the games he buys.
Consider one dataset with \(N=3\) consoles and a $V=\(800\) budget. The first console costs \(\$300\) and has \(2\) games with cost \(\$30\) and \(\$25\) and production values as shown:

Game #    Cost    Production Value1       $30          502       $25          80

The second console costs \(\$600\) and has only \(1\) game:

Game #    Cost    Production Value1       $50          130

The third console costs \(\$400\) and has \(3\) games:

Game #    Cost    Production Value1       $40         702       $30         403       $35         60

Farmer John should buy consoles \(1\) and \(3\), game \(2\) for console \(1\), and games \(1\) and \(3\) for console \(3\) to maximize his expected production at \(210\):

                          Production ValueBudget:     $800      Console 1  -$300Game 2   -$25              80Console 3  -$400Game 1   -$40              70Game 3   -$35              60
-------------------------------------------Total:         0 (>= 0)      210

输入描述

  • Line \(1\): Two space-separated integers: \(N\) and \(V\)
  • Lines \(2..N+1\): Line \(i+1\) describes the price of and the games ?available for console \(i\); it contains: \(P_i\), \(G_i\), and \(G_i\) pairs of space-separated integers \(GP_j\), \(PV_j\)

输出描述

  • Line \(1\): The maximum production value that Farmer John can get with his budget.
示例1

输入

3 800 
300 2 30 50 25 80 
600 1 50 130 
400 3 40 70 30 40 35 60 

输出

210

解题思路

具有依赖关系的背包问题。
首先因为购买主机不增加收益,因此可以先不考虑主机,直接对主机 \(i\) 的游戏进行 \(01\) 背包问题的求解,然后再扣除消费。

C++ 代码

#include <bits/stdc++.h>
using namespace std;
const int N = 55, M = 20, V = 100010;struct Computer {int p, g;int gp[M], pv[M];
} c[N];
int n, v;
int f[V], ft[V]; // ft[i] 表示前 i 个主机和游戏,不考虑 i 主机价格的值int main() {scanf("%d%d", &n, &v);for (int i = 1; i <= n; i++) {scanf("%d%d", &c[i].p, &c[i].g);for (int j = 1; j <= c[i].g; j++)scanf("%d%d", &c[i].gp[j], &c[i].pv[j]);}for (int i = 1; i <= n; i++) {for (int j = 0; j <= v; j++)ft[j] = f[j];for (int j = 1; j <= c[i].g; j++)for (int k = v; k >= c[i].gp[j]; k--)ft[k] = max(ft[k], ft[k - c[i].gp[j]] + c[i].pv[j]);for (int j = c[i].p; j <= v; j++)f[j] = max(f[j], ft[j - c[i].p]);}int ans = 0;for (int j = 0; j <= v; j++)ans = max(ans, f[j]);printf("%d\n", ans);return 0;
}

1035 简单瞎搞题

题目描述

一共有 \(n\) 个数,第 \(i\) 个数是 \(x_i\)
\(x_i\) 可以取 \([l_i , r_i]\) 中任意的一个值。
\(S=∑x_i^2\),求 \(S\) 种类数。

输入描述

第一行一个数 \(n\)
然后 \(n\) 行,每行两个数表示 \(l_i,r_i\)

输出描述

输出一行一个数表示答案。

示例1

输入

5
1 2
2 3
3 4
4 5
5 6

输出

26

备注

\(1 ≤ n , l_i , r_i ≤ 100\)

解题思路

  • 状态表示:\(f_{i,j}\) 表示前 \(i\) 个区间取 \(i\) 个数的平方和为 \(j\),是否成立;
  • 状态计算:\(f_{i,j}=f_{i,j} | f_{i-1,j-k*k}\)
    此题目根据数据范围平方和最大为 \(100*100*100=10^6\),而 \(i\) 的范围为 \(100\),区间长度为 \(100\),故时间复杂度为 \(O(10^10)\),会超时,使用 \(bitset\) 优化平方和的范围。

C++ 代码

#include <bits/stdc++.h>
#include <bitset>
using namespace std;
const int N = 110, M = 1000010;int n, l[N], r[N];
bitset<M> f[N];
// f[i][j] 表示从前 i 个里面选数和为 j 是否可能
// f[i][j] = f[i - 1][j - k * k] 如果第 i 个选择 k
int main() {scanf("%d", &n);for (int i = 1; i <= n; i++)scanf("%d%d", &l[i], &r[i]);f[0][0] = 1;for (int i = 1; i <= n; i++)for (int k = l[i]; k <= r[i]; k++) {f[i] |= (f[i - 1] << (k * k));}printf("%d\n", f[n].count());return 0;
}

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

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

相关文章

做网站类的书本信息网络建构是什么意思

ELK/EFK日志系统 如果今天谈论到要部署一套日志系统&#xff0c;相信用户首先会想到的就是经典的ELK架构&#xff0c;或者现在被称为Elastic Stack。 Elastic Stack架构为Elasticsearch Logstash Kibana Beats的组合&#xff0c;其中&#xff0c;Beats负责日志的采集&…

第2周

1 nginx配置结构和流量逻辑过程 1.1 nginx配置结构全局配置段:控制软件运行 events配置段:配置Nginx的事件驱动模型和连接处理机制(接收连接用户) http配置段:配置http服务的全局参数(处理连接)Server配置段:定义虚…

步进电机T型加减速

步进电机T型加减速【嵌入式必读】彻底理解步进电机梯形加减速运动算法原理_步进电机梯形加减速算法-CSDN博客 【嵌入式必读】【一文彻底理解】步进电机驱动算法——梯形加减速运动算法代码实现_步进电机加减速程序编写…

知名的建站公司找人做短视频网站

标准是可以分类的。比如根据层次、专业、对象、目的、功能等维度进行分类。 以层次进行分类&#xff1a; 可以分为国际标准、区域标准、国家标准、团体标准、企业标准、行业标准 以专业进行分类&#xff1a; 可以分为农业、医药、卫生、劳动保护、矿业、化工、机械等等。 以对象…

做网站为什么要投资钱诸城 建设外贸网站

图神经网络实战——图论 0. 前言1. 图属性1.1 有向图和无向图1.2 加权图与非加权图1.3 连通图非连通图1.4 其它图类型 2. 图概念2.1 基本对象2.2 图的度量指标2.2 邻接矩阵表示法 3. 图算法3.1 广度优先搜索3.2 深度优先搜索 小结系列链接 0. 前言 图论 (Graph theory) 是数学…

苍穹外卖-day03(公共字段自动填充,新增菜品,菜品分页查询,删除菜品,修改菜品) - a

苍穹外卖-day03(公共字段自动填充,新增菜品,菜品分页查询,删除菜品,修改菜品) 课程内容公共字段自动填充 新增菜品 菜品分页查询 删除菜品 修改菜品功能实现:菜品管理 菜品管理效果图:1. 公共字段自动填充 1.1 问题分…

网站想上线怎么做网上做调查问卷赚钱的网站

P4705 玩游戏 有ansk∑i1n∑j1m(aibj)knm先舍弃nm不管ansk∑r0k∑i1n∑j1mCkrairbjk−r∑r0k∑i1n∑j1mk!r!(k−r)!airbjk−rk!∑r0k(1r!∑i1nair)(1(k−r)!∑j1mbjk−r)不难发现这就是一个卷积的形式了&#xff0c;但是我们现在还不知道∑i1nair,∑i1mbir,(r∈[0,k])设A(x)为∑…

PWN手的成长之路-03-bjdctf_2020_babystack

首先nc一下远程环境,看一下他有什么功能。发现有两个输入,第一个是输入名字的长度,第二个是输入名字。file 查看一下给的附件。是一个64位的 ELF 可执行文件。checksec 查看文件的安全保护。得知启动了NX栈保护,其…

石家庄高端外贸建站centos 下载wordpress

/Files/litaocnblogs/LTWCF.rar转载于:https://www.cnblogs.com/litaocnblogs/archive/2009/08/20/1550669.html

烟台 网站建设淘宝官网首页电脑版登录

文章目录 一、题目二、一般遍历解法三、利用完全二叉树性质四、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、一般遍历解法 思路分析&#xff1a;利用层序遍历&#xff0c;然后用num记录节点数量。其他的例如…

网站ppt怎么做微信小程序加盟哪个好

文章目录前言一、工行业务背景1.1、工行云计算架构组成1.2、工行云平台技术栈1.3、工行金融云成效1.3.1、入云规模同业最大1.3.2、业务如云场景广1.4、容灾及高可用保障1.5、PaaS 层多集群现状1.5.1、集群种类多1.5.2、k8s 集群 node 数量限制1.5.3、业务扩展快1.5.4、故障域分…

设计研发网站做网站要坚持

Box是一个用来组合和控制子元素布局的组件。它可以在一个矩形区域内排列一个或多个子元素&#xff0c;并根据所提供的参数来控制它们的位置、大小和样式。 Box的功能类似传统的FrameLayout。 下面通过示例了解Box的使用方法&#xff0c;首先看一个最简单的示例&#xff0c;如下…

对四大经典请求方式的疑惑

Apifox 中的 `Param` 和 HTTP 请求的结构。 ### ✅ 1. Apifox 中的 "Param" 部分对应什么? 在 Apifox(以及类似的 API 工具如 Postman)中,当你在接口配置里看到 **`Params`** 或 **`Query Params`** 这个…

南山区住房与建设局官方网站北京微网站建设设计服务公司

一、文本溢出 当容器中的文本内容超出容器的宽度或高度时&#xff0c;就会出现文本溢出的情况。下面介绍几种CSS实现文本溢出的方法。 单行文本溢出省略&#xff1a; 单行文本溢出省略通常用于标题等文本显示&#xff0c;可以通过设置white-space和text-overflow属性实现。w…

上海排名优化推广工具seo分析是什么意思

博主介绍&#xff1a;✌全网粉丝22W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

2026 NOI 做题记录(四)

推荐阅读:C、G、J、P、S、W、XContest Link By DaiRuiChen007A. [QOJ7559] Bocchi the Rock (3.5) Problem Link 首先判定一组方案是否合法,把所有同色边缩起来,首先我们的弧必须连接所有异奇偶的点对,且任意一种连…

简单快速理解遗传算法

简单快速理解遗传算法<!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, init…

浙江网站怎么做推广网站编辑器介绍

【VBA解决方案】全自动将Word中的文本公式转换为标准公式 写在最前面VBA代码全自动方法将md文档导出为word代码如何运行VBA代码注意事项 一些如何实现的回忆记录步骤解析手动将文本转换为Word公式代码逻辑步骤设想代码解析代码解释总结 其他背景介绍应用场景VBA脚本介绍如何使用…

wordpress 不能上传seo怎么优化一个网站

摘要&#xff1a;开发中经常需要校验用户提交的值是否满足要求&#xff0c;Valid可用于方法参数、返回值等的验证&#xff0c;但是对于参数为列表时无效&#xff0c;此处记录几种对列表进行验证的方法 Valid 注解通常用于验证单个对象的字段&#xff0c;而不是整个列表。仅添加…