2023首届大学生算法大赛——补题

article/2025/8/4 10:18:01

1. 拿饼干

内存限制:128Mb

时间限制:1s

题目描述

小明今天外出野炊。他的母亲为他制作了M种他喜欢的饼干,共有N块。每块饼干都被标了编号,从1一直标到N。第i块饼干的重量是W[i]。饼干种类的编号是T[i],从1一直到M。小明想尽可能拿到最大总重量的饼干,但每种饼干只拿一块,而且他的背包的最大承重不能超过C。请帮助小明进行选择,别忘了要确保每种饼干至少拿一块。

输入

第一行包含三个整数N,M,C,之间用一个空格隔开。N代表饼干总数,M代表饼干种类数,C代表小明的背包的总重量。

第二行包含包含N个整数,W[1], W[2], …, W[i], …, W[N],之间用一个空格隔开,标明了每块饼干的重量。

第三行包含N个整数,T[1], T[2], …, T[i], …, T[N] ,之间用一个空格隔开,标明了每块饼干的类型。

输出

显示小明的背包拿足了饼干后的重量。

样例输入

复制

5 3 50
10 3 23 13 21
1 2 2 1 3

样例输出

复制

37

提示

约束条件

1 <= M <= N <= 500

1 <= C <= 10000

1 <= W[i] <= 50

1 <= T[i] <= M

输入样例 1

5 3 50

10 3 23 13 21

1 2 2 1 3

输出样例 1

37

输入样例说明1

小明可以这样选择饼干:

1. 重量为13的第1种饼干;

2. 重量为3的第2种饼干;

3. 重量为21的第3种饼干;

因此总重量为13 + 3 + 21 = 37,未超过背包的最大承重。

输入样例 2

3 2 10

11 12 13

1 2 1

输出样例 2

0

输入样例说明2

小明无论怎么拿都超过了背包最大承重量,因此无法拿走任何一块饼干。

题解 :

分析:典型的分组背包,为确保每种饼干至少拿一块,所以要做标记。

#include<iostream>
#include<cstring>
using namespace std;
int n,m,c;
int s[501],t[501],w[501][501];
int dp[10003],vis[10003],vis2[10003];int main(){cin>>n>>m>>c;for(int i=1; i<=n; i++) cin>>t[i];for(int type,i=1; i<=n; i++){cin>>type;w[type][++s[type]]=t[i];}for(int i=1; i<=m; i++){for(int j=1;j<=c;j++) vis[j]=vis2[j];memset(vis2, 0, sizeof(vis2));for(int j=c; j>=1; j--){for(int k=1; k<=s[i]; k++){if(j>=w[i][k]&&(i==1||vis[j-w[i][k]])){if(dp[j-w[i][k]]+w[i][k]>dp[j]){dp[j]=dp[j-w[i][k]]+w[i][k];vis2[j]=1;}}}}}cout<<dp[c];return 0;
}

2. 村庄

内存限制:64Mb

时间限制:1s

题目描述

很久很久以前, 在一个国家里有N个村庄。起初,这N个村庄相互之间通过M座桥梁相连,桥梁从1到M进行编号。第i座桥在第Ai​个村庄和第Bi​个村庄之间进行连接。因此人们可以在任意两个村庄之间利用这些桥梁进行通行。

为了阻止人们相互联络,入侵者决定一个接一个地毁坏这些桥梁。从第1座桥开始,依次摧毁,直至第K(1 <= K <= M)座桥。

村庄a和村庄b组成一个村庄组合(a, b)(a < b),当第一座桥到第K座桥被依次摧毁后,计算到底有多少个 (a, b)(a < b)这样的村庄组合不能通过剩余的一座或多座桥梁进行来往通行。

输入

第一行包含三个整数N, M, K,分别表示村庄总数、桥梁总数和被摧毁的桥梁数目。

接着有M行,每一行包含两个整数ai, bi,表示由第i座桥梁连接着的两个村庄的编号。

输出

打印出在第一座桥到第K座桥被摧毁后相互不能通行村庄组合的数目。

样例输入

复制

4 5 3
1 2
2 3
3 4
4 1
1 3

样例输出

复制

3

提示

数据范围:

       2 <= N <= 10^5

       1 <= K <= M <= 10^5

       1 <= ai < bi <= N

       所有的村庄组合(ai, bi) 各不相同。

题解: 

分析:这道题跟图论不占边,考的是并查集的算法。

#include<iostream>
using  namespace std;
int n,m,k;
int pre[100003],num[100003];int find(int x){if(x==pre[x]) return x;return pre[x]=find(pre[x]);
}void join(int x,int y){int fx=find(x);int fy=find(y);if(fx!=fy){pre[fx]=fy;}
}int main(){cin>>n>>m>>k;for(int i=1;i<=n;i++) pre[i]=i;for(int x,y,i=1;i<=m;i++){cin>>x>>y;if(i>k){join(x,y);}}for(int i=1; i<=n; i++){num[find(i)]++;}long long ans=0;for(int i=1; i<=n; i++){if(num[i]){for(int j=i+1; j<=n; j++){if(num[j]) ans+=num[i]*num[j];}}}cout<<ans;return 0;
}

3. 幸运数字

内存限制:64Mb

时间限制:1s

题目描述

数字8、2、6、9是大多数中国人中最喜欢的幸运数字。这几个数字的组合也被视为幸运数字,例如88。

小龙非常喜欢幸运数字。他认为只有满足以下条件的正整数才算是好的整数:

8、2、6、9中的每个数字至少在这个整数中出现一次,而且没有除了这四个之外的其他数字。

小龙想知道在1和N(含N)之间有多少个满足这一条件的整数。

输入

输入一个整数N。

输出

打印输出1到N(含N)之间幸运数字的总数量。

样例输入

复制

5673

样例输出

复制

6

提示

数据范围:

       1 <= N < 10^12

样例说明:

       有6个不大于5673的幸运数字:2689、2698、2869、2896、2968、2986

题解: 

分析:DFS。(学习了此人的博客)2023首届大学生算法大赛——正式赛 5、7(DFS)_panjyash的博客-CSDN博客

#include<iostream>
using namespace std;
typedef long long LL;
LL n,ans;void dfs(LL u,bool f2,bool f6,bool f8,bool f9){if(u>n) return ;if(f2&&f6&&f8&&f9) ans++;dfs(u*10+2,1,f6,f8,f9);dfs(u*10+6,f2,1,f8,f9);dfs(u*10+8,f2,f6,1,f9);dfs(u*10+9,f2,f6,f8,1);
}int main(){cin>>n;dfs(0, 0, 0, 0, 0);cout<<ans;return 0;
}


http://chatgpt.dhexx.cn/article/Xs9teRRd.shtml

相关文章

2023首届大学生算法大赛 - 逆序对

一眼应该能看出来这道题朴素算法是冒泡排序&#xff0c;但是逆序对这类题要求复杂度小于等于O&#xff08;nlogn&#xff09;&#xff0c; 因此可以用线段树&#xff0c;树状数组&#xff0c;归并排序之类的试试。 洛谷上有一样的题&#xff1a;逆序对 - 洛谷 AC代码&#xff…

2023首届大学生算法大赛 - 村庄

读题可以发现&#xff0c;如果两个村庄不能互相连通&#xff0c;那就算作一对 &#xff08;a<b&#xff09;。 显然是可以用floyd全局多源最短路来做的&#xff0c;如果不存在最短路&#xff0c;那么就是不能互通&#xff0c;但是这道题的数据范围N<10^5&#xff0c;跑f…

算法“视”界杯上演十强争锋,大赛终极一战圆满落幕

​8月16日&#xff0c;2021腾讯广告算法大赛“决赛十强答辩&获奖名单公布”于线上顺利举行&#xff0c;本场直播共有9600余位技术同学在“腾讯广告视频号、腾讯营销学院、腾讯视频、腾讯优图、腾讯云AI和云社区”六大平台同步观看&#xff0c;这场精彩纷呈的算法竞技圆满落…

算法顶级比赛汇总

可参赛的算法比赛 阿里云天池大数据竞赛 时间&#xff1a;每年各个季度很多类型都会出题&#xff08;比赛总时间大概为两个月&#xff09; 内容&#xff1a;各个类型的算法题都会出、奖金上万不等 形式&#xff1a;在线提交&#xff08;提交后在线检查结果&#xff09;、离线…

URL与域名的含义

1、URL的含义和格式 用户使用浏览器访问网站时&#xff0c;需要在浏览器的地址栏中输入网址&#xff08;网站地址&#xff09;&#xff0c;这个网址就是URL&#xff08;Uniform Resource Locator&#xff0c;统一资源定位符&#xff09;。URL信息会通过HTTP请求发送给服务器&a…

如何在phpstudy设置多站点和二级域名

相信很多新手站长都使用过phpstudy来建立自己的站点吧&#xff0c;很多新手站长可能都习惯于直接将源码复制到根目录下&#xff0c;直接使用IP地址&#xff1a;127.0.0.1进行访问吧。可能很多人也发现了一些问题&#xff0c;就是自己在建立多个站点或者二级域名的时候会发现文件…

企业邮箱和邮箱域名是什么意思?它们有什么区别?

单说域名和邮箱很多人都知道其中的意思&#xff0c;那么合在一起的邮箱域名是什么意思呢?企业邮箱域名要怎么选呢?多人听说企业邮箱或者是域名邮箱这两个词&#xff0c;但是他们所代表的意思和区别却并不了解。 1、企业邮箱和邮箱域名是什么意思? 企业邮箱指的是以特定域名…

域名是如何变成IP的

本教程是博主个人心血&#xff0c;禁止转载&#xff01;&#xff01; 01_一次Http请求都干了啥 问题引入 我们上篇博客做了一个Http请求的抓包&#xff0c;里面只是介绍了抓到的大概有哪些内容。 好了&#xff0c;先做一个回顾。 上次我们说道&#xff1a;一次http请求分为三…

企微配置可信域名

1、企微配置可信域名 2、企微获取成员userID 3、企微获取用户敏感数据 4、企微配置回调服务 文章目录 一、简介1、官方文档介绍2、可信域名入口3、企微校验原理 二、前端校验三、后端服务校验1、原理2、获取校验文件内容。3、编写后端接口4、部署到服务器5、配置域名解析到服务…

注册域名时如何填写域名信息

目前国内域名注册规则越来越详细&#xff0c;要求也越来越严格&#xff0c;所以说大家在国内注册域名时一定要如实填写&#xff0c;这样才能正常使用。下面总结一些域名注册的要求和经验&#xff0c;帮助大家正确注册域名。 一、注册域名时乱写信息可以吗&#xff1f; 注册域…

微信的服务器域名地址,微信服务器域名设置

senparclsx 15 个回复 • 查看 447 次 • 53天前 sy87468118 14 个回复 • 查看 354 次 • 100天前 magiboy 13 个回复 • 查看 711 次 • 111天前 yintingji 12 个回复 • 查看 664 次 • 121天前 LXL.WxDeveloper 11 个回复 • 查看 329 次 • 73天前 zxz524 9 个回复 • 查看…

什么是论坛域名?论坛域名适用在哪些地方?

论坛域名是什么样的?论坛域名好不好?论坛域名适用在哪些地方?大家都知道论坛是发帖回帖讨论的平台&#xff0c;是Internet上的一种电子信息服务系统。每个用户都可以在上面书写&#xff0c;可发布信息或提出看法。下面我们就来看看论坛域名的介绍吧! 1、什么是论坛域名? …

碳中和城市建筑能源系统(3):负荷篇(龙惟定)2022

碳中和城市建筑能源系统(3):负荷篇 摘要 本文是碳中和城市建筑能源系统系列文章的第三篇。碳中和城市能源系统要实现“两个替代”&#xff0c;即能源生产的可再生能源替代和能源消费的电力替代。因此有&#xff12;个关键点对负荷分析提出了要求&#xff1a;一是建筑电气化&a…

阿里毕玄:智能时代,运维工程师在谈什么?

导读&#xff1a;智能化运维的终极目标&#xff0c;就是将运维人员从繁琐的工作中解放出来&#xff0c;提高整体运维效率&#xff0c;降低运维成本&#xff0c;实现业务系统的高可用性。 目前业界真正的智能化运维的落地实践其实并不多&#xff0c;大多还是停留在自动化甚至人工…

智能时代,运维工程师该谈什么?

智能时代&#xff0c;运维工程师该谈什么&#xff1f; 原创 2017-10-31 毕玄 高效开发运维 作者&#xff5c;毕玄 编辑&#xff5c;谢然 每家公司对于所谓运维团队到底应该做些什么&#xff0c;都有各自的看法。本文首先由阿里巴巴的运维团队在整个阿里巴巴的业务里承担的责任为…

阿里巴巴毕玄解密AIOps:一文读懂阿里巴巴运维体系的前世今生

【编者按】林昊(毕玄)&#xff0c;阿里巴巴研发效能事业部负责人。2007年加入阿里&#xff0c;10年间打造了阿里目前使用最为广泛的核心中间件之一的服务框架&#xff1b;建设了阿里的HBase团队&#xff0c;发展到今天HBase已经是阿里最重要的NoSQL产品&#xff1b;打造阿里基于…

区块链成熟度评测报告(3)——可靠性、易用性、可扩展性对比

可靠性对比 区块链的可靠性主要考察区块链网络、共享帐本、账户体系三个方面。 (一)区块链网络:商业区块链A、商业区块链B、Fabric均网络可靠 区块链网络主要测试三个指标:记账节点高可用、服务节点之间高可用、区块链网络的网络抖动是否影响系统服务等级。第一、二个指…

关于前后端接口的可扩展性思考

在写iOS和Android客户端程序&#xff0c;尤其是涉及到和后端对接口的时候&#xff0c;大家通常会针对下面三个问题引发一些争论&#xff1a; 不能写死容错能力过度设计 之所以会争论&#xff0c;是因为这三点很多时候是对的&#xff0c;但是如果不分情况和场合的应用就会出现一…

区块链的可扩展性问题及解决方案对比

区块链的性能问题 VISA是目前世界上广泛使用的信用卡品牌&#xff0c;区块链要达到实用水平&#xff0c;性能上至少需要能跟VISA之类的支付系统作比较。根据VISA在2015年的记录&#xff0c;全年共产生92,064百万笔支付交易&#xff0c;平均2920tps&#xff0c;按平均每笔交易5…

#私藏项目实操分享# 提高区块链的可扩展性并不需要牺牲安全和去中心化

可扩展性难题&#xff1f;区块链不可能三角&#xff1f;这篇论文可能有解决之道 背景 “The block chain scalability trilemma”(可扩展性难题)-是由以太坊创始人Vitalik Buterin创造的词语&#xff0c;国内亦被翻译为“区块链不可能三角”问题、“三元悖论”&#xff0c;是指…