2.5学习总结

news2024/10/7 12:25:26

2.5
1.传纸条
2.装箱问题
3.开心的金明
4.传球游戏
5.修改数组
6.对局匹配
7.刷题统计

传纸条https://www.luogu.com.cn/problem/P1006

题目描述

小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。一次素质拓展活动中,班上同学安排坐成一个 �m 行 �n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了。幸运的是,他们可以通过传纸条来进行交流。纸条要经由许多同学传到对方手里,小渊坐在矩阵的左上角,坐标 (1,1)(1,1),小轩坐在矩阵的右下角,坐标 (�,�)(m,n)。从小渊传到小轩的纸条只可以向下或者向右传递,从小轩传给小渊的纸条只可以向上或者向左传递。

在活动进行中,小渊希望给小轩传递一张纸条,同时希望小轩给他回复。班里每个同学都可以帮他们传递,但只会帮他们一次,也就是说如果此人在小渊递给小轩纸条的时候帮忙,那么在小轩递给小渊的时候就不会再帮忙。反之亦然。

还有一件事情需要注意,全班每个同学愿意帮忙的好感度有高有低(注意:小渊和小轩的好心程度没有定义,输入时用 00 表示),可以用一个 [0,100][0,100] 内的自然数来表示,数越大表示越好心。小渊和小轩希望尽可能找好心程度高的同学来帮忙传纸条,即找到来回两条传递路径,使得这两条路径上同学的好心程度之和最大。现在,请你帮助小渊和小轩找到这样的两条路径。

输入格式

第一行有两个用空格隔开的整数 �m 和 �n,表示班里有 �m 行 �n 列。

接下来的 �m 行是一个 �×�m×n 的矩阵,矩阵中第 �i 行 �j 列的整数表示坐在第 �i 行 �j 列的学生的好心程度。每行的 �n 个整数之间用空格隔开。

输出格式

输出文件共一行一个整数,表示来回两条路上参与传递纸条的学生的好心程度之和的最大值。

输入输出样例

输入 #1复制

3 3
0 3 9
2 8 5
5 7 0

输出 #1复制

34

说明/提示

【数据范围】

对于 30%30% 的数据,满足 1≤�,�≤101≤m,n≤10。
对于 100%100% 的数据,满足 1≤�,�≤501≤m,n≤50。

思路:动态规划,模拟两条不相交的路径,每走一步都有四种情况:

1.第一张纸条向下传,第二张纸条向下传;

2.第一张纸条向下传,第二张纸条向右传;

3.第一张纸条向右传,第二张纸条向下传;

4.第一张纸条向右传,第二张纸条向右传;

给走的方向加一些限定,就可以形成不相交的两条路径:

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x& - (x))
#define int long long 
int a[55][55],dp[55][55][55][55];
int m,n;
int maxn(int a,int b,int c,int d){
	return max(a,b)>max(c,d)?max(a,b):max(c,d);
}
signed main(){
	cin>>m>>n;
	for (int i=1;i<=m;++i){
		for (int j=1;j<=n;++j){
			cin>>a[i][j];
		}
	}
	for (int i=1;i<=m;++i){
		for (int j=1;j<=n;++j){
			for (int k=i+1;k<=m;++k){
				for (int l=1;l<j;++l){
					dp[i][j][k][l]=maxn(dp[i-1][j][k-1][l],dp[i][j-1][k][l-1],dp[i-1][j][k][l-1],dp[i][j-1][k-1][l])+a[i][j]+a[k][l];
				}
			}
		}
	}
	cout<<dp[m-1][n][m][n-1];
}

装箱问题https://www.luogu.com.cn/problem/P1049

题目描述

有一个箱子容量为 �V,同时有 �n 个物品,每个物品有一个体积。

现在从 �n 个物品中,任取若干个装入箱内(也可以不取),使箱子的剩余空间最小。输出这个最小值。

输入格式

第一行共一个整数 �V,表示箱子容量。

第二行共一个整数 �n,表示物品总数。

接下来 �n 行,每行有一个正整数,表示第 �i 个物品的体积。

输出格式

  • 共一行一个整数,表示箱子最小剩余空间。

输入输出样例

输入 #1复制

24
6
8
3
12
7
9
7

输出 #1复制

0

说明/提示

对于 100%100% 数据,满足 0<�≤300<n≤30,1≤�≤200001≤V≤20000。

思路:动态规划,01背包问题,把v当做是背包的总共 容量,而物品的体积也是物品的价值,找到在背包容量为v的情况下,前n个物品可以形成的最大价值,然后减去背包容量就是最小剩余容量

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x& - (x))
#define int long long 
int a[35],dp[20005];
int v,n;
signed main(){
	cin>>v>>n;
	for (int i=1;i<=n;++i){
			cin>>a[i];
	}
	for (int i=1;i<=n;++i){
		for (int j=v;j>=a[i];--j){
			dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
		}
	}
	cout<<v-dp[v];
}

开心的金明https://www.luogu.com.cn/problem/P1060

题目描述

金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 �N 元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的 �N 元。于是,他把每件物品规定了一个重要度,分为 55 等:用整数 1−51−5 表示,第 55 等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过 �N 元(可以等于 �N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大。

设第�j件物品的价格为 ��vj​,重要度为 ��wj​,共选中了 �k 件物品,编号依次为 �1,�2,…,��j1​,j2​,…,jk​,则所求的总和为:

��1×��1+��2×��2…+���×���vj1​​×wj1​​+vj2​​×wj2​​…+vjk​​×wjk​​。

请你帮助金明设计一个满足要求的购物单。

输入格式

第一行,为 22 个正整数,用一个空格隔开:�,�n,m(�<30000,�<25n<30000,m<25)其中 �n 表示总钱数,�m 为希望购买物品的个数。

从第 22 行到第 �+1m+1 行,第 �j 行给出了编号为 �−1j−1 的物品的基本数据,每行有 22 个非负整数 �,�v,p(其中 �v 表示该物品的价格 (�≤10000)(v≤10000),�p 表示该物品的重要度(1≤�≤51≤p≤5)。

输出格式

11 个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值(<100000000<100000000)。

输入输出样例

输入 #1复制

1000 5
800 2
400 5
300 5
400 3
200 2

输出 #1复制

3900

思路:总的背包容量为总金额,每个物品的价格就是单个物品的容量,乘上重要度就是这个物品的价值

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x& - (x))
#define int long long 
int a[35],v[35],dp[30005];
int n,m;
signed main(){
	cin>>n>>m;
	for (int i=1;i<=m;++i){
			cin>>a[i]>>v[i];
	}
	for (int i=1;i<=m;++i){
		for (int j=n;j>=a[i];--j){
			dp[j]=max(dp[j],dp[j-a[i]]+a[i]*v[i]);
		}
	}
	cout<<dp[n];
}

传球游戏https://www.luogu.com.cn/problem/P1057

题目描述

上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。

游戏规则是这样的:�n 个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目。

聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了 �m 次以后,又回到小蛮手里。两种传球方法被视作不同的方法,当且仅当这两种方法中,接到球的同学按接球顺序组成的序列是不同的。比如有三个同学 11 号、22 号、33 号,并假设小蛮为 11 号,球传了 33 次回到小蛮手里的方式有 1→2→3→11→2→3→1 和 1→3→2→11→3→2→1,共 22 种。

输入格式

一行,有两个用空格隔开的整数 �,�(3≤�≤30,1≤�≤30)n,m(3≤n≤30,1≤m≤30)。

输出格式

11 个整数,表示符合题意的方法数。

输入输出样例

输入 #1复制

3 3

输出 #1复制

2

说明/提示

数据范围及约定

  • 对于 40%40% 的数据,满足:3≤�≤30,1≤�≤203≤n≤30,1≤m≤20;
  • 对于 100%100% 的数据,满足:3≤�≤30,1≤�≤303≤n≤30,1≤m≤30。

思路:dp[i][j]表示了经过j次传球传到第i个人的次数,由于是成环的,所以第一个人和最后一个人需要特判,对于第i个人,可以有前面和后面两个人传过来,对于次数j,是由j-1次转移来的

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x& - (x))
#define int long long 
int a[35],dp[35][35];
int n,m;
signed main(){
	cin>>n>>m;
	dp[1][0]=1;
	for (int i=1;i<=m;++i){
		dp[1][i]=dp[n][i-1]+dp[2][i-1];
		dp[n][i]=dp[n-1][i-1]+dp[1][i-1];
		for (int j=2;j<n;++j){
			dp[j][i]=dp[j-1][i-1]+dp[j+1][i-1];
		}
	}
	cout<<dp[1][m];
}

修改数组https://www.luogu.com.cn/problem/P8686

题目描述

给定一个长度为 �N 的数组 �=[�1,�2,⋯��]A=[A1​,A2​,⋯AN​],数组中有可能有重复出现的整数。

现在小明要按以下方法将其修改为没有重复整数的数组。小明会依次修改 �2,�3,⋯ ,��A2​,A3​,⋯,AN​。

当修改 ��Ai​ 时,小明会检查 ��Ai​ 是否在 �1A1​ ∼ ��−1Ai−1​ 中出现过。如果出现过,则小明会给 ��Ai​ 加上 11;如果新的 ��Ai​ 仍在之前出现过,小明会持续给 ��Ai​ 加 11,直到 ��Ai​ 没有在 �1A1​ ∼ ��−1Ai−1​ 中出现过。

当 ��AN​ 也经过上述修改之后,显然 �A 数组中就没有重复的整数了。

现在给定初始的 �A 数组,请你计算出最终的 �A 数组。

输入格式

第一行包含一个整数 �N。

第二行包含 �N 个整数 �1,�2,⋯ ,��A1​,A2​,⋯,AN​。

输出格式

输出 �N 个整数,依次是最终的 �1,�2,⋯ ,��A1​,A2​,⋯,AN​。

输入输出样例

输入 #1复制

5
2 1 1 3 4

输出 #1复制

2 1 3 4 5

说明/提示

对于 80%80% 的评测用例,1≤�≤100001≤N≤10000。

对于所有评测用例,1≤�≤1051≤N≤105,1≤��≤1061≤Ai​≤106。

思路:使用并查集的方法,每输入一个数a,就输出它的根节点find(a),然后把a的根节点和a的根节点+1合并起来

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x& - (x))
#define int long long 
int n,f[1000005];
int find(int x){
	if (f[x]==x)return x;
	else{
		f[x]=find(f[x]);
		return f[x];
	}
}
void unionn(int i,int j){
	f[find(i)]=find(j);
}
signed main(){
	cin>>n;
	for (int i=1;i<=100005;++i){
		f[i]=i;
	}
	for (int i=1;i<=n;++i){
		int x;
		cin>>x;
		cout<<find(x)<<" ";
		unionn(find(x),find(x)+1);
	}
}

对局匹配https://www.luogu.com.cn/problem/P8656

题目描述

小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。

小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是 �K 的两名用户匹配在一起。如果两人分差小于或大于 �K,系统都不会将他们匹配。

现在小明知道这个网站总共有 �N 名用户,以及他们的积分分别是 �1,�2,⋯��A1​,A2​,⋯AN​。

小明想了解最多可能有多少名用户同时在线寻找对手,但是系统却一场对局都匹配不起来(任意两名用户积分差不等于 �K)?

输入格式

第一行包含两个个整数 �N 和 �K。

第二行包含 �N 个整数 �1,�2,⋯ ,��A1​,A2​,⋯,AN​。

输出格式

一个整数,代表答案。

输入输出样例

输入 #1复制

10 0
1 4 2 8 5 7 1 4 2 8

输出 #1复制

6

输入 #2复制

10 1
2 1 1 1 1 4 4 3 4 4

输出 #2复制

8

说明/提示

对于 30%30% 的数据,1≤�≤101≤N≤10。

对于 100%100% 的数据,1≤�≤1051≤N≤105,0≤�,��≤1050≤K,Ai​≤105 。

思路:把所有积分相同的人数加起来,并判断两种情况k是否等于0

如果等于0,那么记录积分的种类,就是答案,因为每个种类的积分就放一个人,是不能比赛的

如果不等于0,就把相差k的积分的人数相减,最后加起来就是答案

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x& - (x))
#define int long long 
const int N=1e5+5;
int n,k,a[N],s[N];
signed main(){
	cin>>n>>k;
	for (int i=0;i<n;++i){
		int x;
		cin>>x;
		s[x]++;
	}
	if (k==0){
		int cnt=0;
		for (int i=0;i<=N;++i){
			if (s[i]!=0)cnt++;
		}
		cout<<cnt;
		return 0;
	}else if (k!=0){
		for (int i=0;i<=N-k;++i){
			if (s[i]<s[i+k]) s[i+k]-=s[i];
			else s[i+k]=0;
		}
	}
	int cnt=0;
	for (int i=0;i<N;++i){
		cnt+=s[i];
	}
	cout<<cnt;
}

刷题统计https://www.luogu.com.cn/problem/P8780

题目描述

小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 �a 道题目,周六和周日每天做 �b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 �n 题?

输入格式

输入一行包含三个整数 �,�a,b 和 �n.

输出格式

输出一个整数代表天数。

输入输出样例

输入 #1复制

10 20 99

输出 #1复制

8

说明/提示

对于 50%50% 的评测用例,1≤�,�,�≤1061≤a,b,n≤106.

对于 100%100% 的评测用例,1≤�,�,�≤10181≤a,b,n≤1018.

#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x& - (x))
#define int long long 
signed main(){
	int n,m,k;
	cin>>n>>m>>k;
	int week=n*5+m*2;
	int day=(k/week)*7;
	k %=week;
	if (k<=n*5) day+=k/n+(k%n==0 ? 0:1);
	else {
		day+=5; k-=5*n;
		day+=k/m+(k%m==0 ? 0:1); 
	}
	cout<<day;
}

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

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

相关文章

【已解决】青龙面板依赖安装失败原因

青龙面板必须安装依赖&#xff0c;才可以执行脚本&#xff0c;这是不争的事实。 如果脚本跑不起来&#xff0c;就去看看依赖吧。 NodeJs 依赖如下 axios request canvas cheerio js-base64 dotenv magic tough-cookie ws7.4.3 require requests date-fns ts-md5 typescript j…

Office恢复旧UI|Office UI问题|Word UI|小喇叭找不到

Office恢复旧UI&#xff5c;Office UI问题&#xff5c;Word UI&#xff5c;小喇叭找不到 问题描述&#xff1a;Office新版本默认新UI&#xff0c;主界面没有小喇叭可以切换到旧UI. 解决方案&#xff1a; 以下述内容新建.txt&#xff0c;保存并改后缀为.reg&#xff0c;双击打开…

从领域外到领域内:LLM在Text-to-SQL任务中的演进之路

导语 本文介绍了ODIS框架&#xff0c;这是一种新颖的Text-to-SQL方法&#xff0c;它结合了领域外示例和合成生成的领域内示例&#xff0c;以提升大型语言模型在In-context Learning中的性能。 标题&#xff1a;Selective Demonstrations for Cross-domain Text-to-SQL会议&am…

Qt设计师中(没有现成的控件):如何添加QToolBar工具栏

1、在QtCreator设计师界面中,在MainWindow上右键,有“添加工具栏”菜单项 2、但只有在MainWindow上右键才有&#xff0c;在其它控件上方点击则没有&#xff0c;那么怎么在对话框上添加呢&#xff1f; 可以添加一个QWidget&#xff0c;然后手动在ui文件里把class改为QToolBar就…

ONLYOFFICE 桌面编辑器8.0上新!六大更新内容等你来用!

各位铁铁&#xff0c;相信你们对ONLYOFFICE都不陌生了&#xff0c;那么今天咱们具体来看看ONLYOFFICE桌面编辑器8.0的上的六大新内容吧~ 更新一&#xff1a;可填写的PDF表单 8.0版本中最引人瞩目的改进之一&#xff0c;是具备创建高度复杂的PDF表单的能力&#xff0c;并允许用…

CSS的Day05(浮动+flex布局)

跟着黑马程序员的课&#xff0c;稍稍对CSS的了解 常见的显示模式&#xff1a;行内、块级、行内块 在HTML中&#xff0c;标准流也称为文档流或普通流&#xff0c;是指元素按照其在HTML文档中的出现顺序依次排列的方式。在标准流中&#xff0c;元素会自动占据父容器的空间&#…

什么是TCP三次握手、四次挥手?

&#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是小徐&#x1f947;☁️博客首页&#xff1a;CSDN主页小徐的博客&#x1f304;每日一句&#xff1a;好学而不勤非真好学者 &#x1f4dc; 欢迎大家关注&#xff01; ❤️ 1、三次握手 你(客户端)给一个朋友(服务器)打电…

前端面试题-网络部分-http和其他协议之间的区别-ajax请求的步骤-XSS,CSRF-http的加密过程- 浏览器缓存

前端面试题-网络部分-http和其他协议之间的区别-ajax请求的步骤-XSS,CSRF-如果ajax请求-http的加密过程 http和其他协议之间的区别http和tcp之间的区别http和websocket协议有什么区别 Ajax请求的步骤什么是XSS&#xff0c;CSRF攻击https加密的过程浏览器缓存 http和其他协议之间…

BUGKU-WEB Simple_SSTI_1

02 Simple_SSTI_1 题目描述 没啥好说的~ 解题思路 进入场景后&#xff0c;显示&#xff1a; You need pass in a parameter named flag。ctrlu 查看源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><titl…

函数对象(仿函数)的相关基本概念及用法

函数对象&#xff08;仿函数&#xff09; 基本概念 重载函数调用操作符的类&#xff0c;其对象称为函数对象 函数对象使用重载的&#xff08;&#xff09;时&#xff0c;行为类似函数调用&#xff0c;因此也被称为仿函数 本质 函数对象&#xff08;仿函数&#xff09;是一…

机器学习本科课程 大作业 多元时间序列预测

1. 问题描述 1.1 阐述问题 对某电力部门的二氧化碳排放量进行回归预测&#xff0c;有如下要求 数据时间跨度从1973年1月到2021年12月&#xff0c;按月份记录。数据集包括“煤电”&#xff0c;“天然气”&#xff0c;“馏分燃料”等共9个指标的数据&#xff08;其中早期的部分…

yarn/npm certificate has expired

目录 报错 原因&#xff1a;HTTPS 证书验证失败 方法 a.检查网络安全软件&#xff1a;可能会拦截或修改 HTTPS 流量 b.strict-ssl:false关闭验证【临时方法】 报错 info No lockfile found. [1/4] Resolving packages... error Error: certificate has expired at TLS…

【华三】GRE VPN 实验配置

【华三】GRE VPN 实验配置 前言报文格式实验需求配置思路配置拓扑GRE配置步骤R1基础配置GRE 配置ISP_R2基础配置R3基础配置GRE 配置PCPC1PC2抓包检查OSPF建立GRE隧道建立配置文档前言 VPN :(Virtual Private Network),即“虚拟专用网络”。 它是一种通过公用网络(通常是互…

骨传导耳机是什么原理?适合什么场景使用?

骨传导耳机是一种非常特殊的蓝牙耳机&#xff0c;它们通过骨传导技术将声音直接传送到内耳。这种技术不同于传统耳机&#xff0c;它不通过空气传送声音&#xff0c;而是通过头骨的振动来传送声音。 骨传导耳机的传声原理跟传统耳机有所不同&#xff0c;传统耳机通过空气振动将…

爱上算法:每日算法(24-2月2号)

&#x1f31f;坚持每日刷算法&#xff0c;将其变为习惯&#x1f91b; 题目链接&#xff1a;101. 对称二叉树 最开始肯定是比较简单的想法&#xff0c;就是遍历左右节点呀&#xff0c;不相等我就直接返回false。 但是这样错了&#xff0c;我们要的是以根节点为轴&#xff0c;而…

使用 Python、Elasticsearch 和 Kibana 分析波士顿凯尔特人队

作者&#xff1a;来自 Jessica Garson 大约一年前&#xff0c;我经历了一段压力很大的时期&#xff0c;最后参加了一场篮球比赛。 在整个过程中&#xff0c;我可以以一种我以前无法做到的方式断开连接并找到焦点。 我加入的第一支球队是波士顿凯尔特人队。 波士顿凯尔特人队是…

【Linux】文件周边002之初步理解文件管理(打开的文件)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.&#xff08;打开…

PMP资料怎么学?PMP备考经验分享

PMP考试前大家大多都是提前备考个一两个月&#xff0c;但是有些朋友喜欢“不走寻常路”&#xff0c;并不打算去考PMP认证&#xff0c;想要单纯了解PMP&#xff0c;不管要不要考证&#xff0c;即使是仅仅学习了解一下我个人都非常支持&#xff0c;因为专业的基础的确能提高工作效…

【Linux系统 02】Shell脚本

目录 一、Shell概述 二、输入输出 三、分支控制 1. 表达式 2. if 分支 3. case 分支 四、循环控制 1. for 循环 2. while 循环 3. select 循环 五、函数 一、Shell概述 Shell是Linux系统连接用户和操作系统的外壳程序&#xff0c;将用户的输入和请求选择性传递给操…

Unity笔记:相机移动

基础知识 鼠标输入 在Unity中&#xff0c;开发者在“Edit” > “Project Settings” > “Input Manager”中设置输入&#xff0c;如下图所示&#xff1a; 在设置了Mouse X后&#xff0c;Input.GetAxis("Mouse X")返回的是鼠标在X轴上的增量值。这意味着它会…