3月28号

今天写了一些算法题:

P1866 编号

题目描述

太郎有 N 只兔子,现在为了方便识别它们,太郎要给他们编号。兔子们向太郎表达了它们对号码的喜好,每个兔子 i 想要一个整数,介于 1 和 Mi​ 之间(可以为 1 或 Mi​)。当然,每个兔子的编号是不同的。现在太郎想知道一共有多少种编号的方法。

你只用输出答案对 109+7 取余的结果即可。如果这是不可能的,就输出 0。

输入格式

第一行是一个整数 N。

第二行 N 个整数 Mi​。

输出格式

一个整数,表示方案总数。

输入输出样例

输入 #1复制

2
5 8

输出 #1复制

35

说明/提示

数据范围及约定

对于全部数据,1≤N≤50,1≤Mi​≤1000。

#include<bits/stdc++.h>
using namespace std;
long long n,sum=1,a[55];
int main(){ios::sync_with_stdio(false);cin.tie(NULL);cin>>n;for(int i=0;i<n;i++){cin>>a[i];}sort(a,a+n);for(int i=0;i<n;i++){sum=sum*(a[i]-i);sum=sum%1000000007;}cout<<sum;return 0;
}

P1892 [BalticOI 2003] 团伙

#include<bits/stdc++.h>
using namespace std;
int n,m,p,q,sum=0,f[1005],a[1005],b[1005];
char c;
int find(int x){while(f[x]!=x)x=f[x];return x;
}
void add(int x,int y){x=find(x);y=find(y);if(x==y)return;f[y]=x;return;
}
int main(){ios::sync_with_stdio(false);cin.tie(NULL);cin>>n>>m;for(int i=1;i<=n;i++){f[i]=i;}for(int i=1;i<=m;i++){cin>>c>>p>>q;if(c=='F')add(p,q);else{if(a[p]==0)a[p]=find(q);else add(q,a[p]);if(a[q]==0)a[q]=find(p);else add(p,a[q]);}}for(int i=1;i<=n;i++){b[find(i)]++;}for(int i=1;i<=n;i++){if(b[i])sum++;}cout<<sum;return 0;
}

P1044 [NOIP 2003 普及组] 栈

题目背景

栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。

栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈)。

栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。

题目描述

宁宁考虑的是这样一个问题:一个操作数序列,1,2,…,n(图示为 1 到 3 的情况),栈 A 的深度大于 n。

现在可以进行两种操作,

  1. 将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的 push 操作)
  2. 将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的 pop 操作)

使用这两种操作,由一个操作数序列就可以得到一系列的输出序列,下图所示为由 1 2 3 生成序列 2 3 1 的过程。

(原始状态如上图所示)

你的程序将对给定的 n,计算并输出由操作数序列 1,2,…,n 经过操作可能得到的输出序列的总数。

输入格式

输入文件只含一个整数 n(1≤n≤18)。

输出格式

输出文件只有一行,即可能输出序列的总数目。

输入输出样例

输入 #1复制

3

输出 #1复制

5

说明/提示

【题目来源】

NOIP 2003 普及组第三题

#include<bits/stdc++.h>
using namespace std;
long long n,a[1000];
int main(){ios::sync_with_stdio(false);cin.tie(NULL);cin>>n;a[1]=1;for(int i=2;i<=18;i++){a[i]=a[i-1]*2*(2*i-1)/(i+1);}cout<<a[n];return 0;
}

P1469 找筷子

题目描述

经过一段时间的紧张筹备,电脑小组的“RP 餐厅”终于开业了,这天,经理 LXC 接到了一个定餐大单,可把大家乐坏了!员工们齐心协力按要求准备好了套餐正准备派送时,突然碰到一个棘手的问题:筷子!

CX 小朋友找出了餐厅中所有的筷子,但遗憾的是这些筷子长短不一,而我们都知道筷子需要长度一样的才能组成一双,更麻烦的是 CX 找出来的这些筷子数量为奇数,但是巧合的是,这些筷子中只有一只筷子是落单的,其余都成双,善良的你,可以帮 CX 找出这只落单的筷子的长度吗?

输入格式

第一行是一个整数,表示筷子的数量 n。

第二行有 n 个整数,第 i 个整数表示第 i 根筷子的长度 ai​。

输出格式

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

输入输出样例

输入 #1复制

9
2 2 1 3 3 3 2 3 1

输出 #1复制

2

说明/提示

数据规模与约定
  • 对于 30% 的数据,保证 n≤105。
  • 对于 100% 的数据,保证 1≤n≤107+1,1≤ai​≤109。
提示
  • 请注意数据读入对程序效率造成的影响。
  • 请注意本题的空间限制为 4 Mb。
#include<bits/stdc++.h>
using namespace std;
int ans,n,a;
int main()
{ios::sync_with_stdio(false);cin.tie(NULL);cin>>n;for (int i=1;i<=n;i++){cin>>a;ans^=a;}printf("%d",ans);return 0;
}

P2437 蜜蜂路线

题目背景

题目描述

一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房 m 开始爬到蜂房 n,m<n,有多少种爬行路线?(备注:题面有误,右上角应为 n−1)

输入格式

输入 m,n 的值

输出格式

爬行有多少种路线

输入输出样例

输入 #1复制

1 14

输出 #1复制

377

说明/提示

对于100%的数据,1≤M,N≤1000

#include<bits/stdc++.h>
using namespace std;
int n,m,len=1,a[5005]={1},b[5005]={1},c[5005]={1};
void f(){int jw=0;for(int i=0;i<len;i++){c[i]=a[i]+b[i]+jw;jw=c[i]/10;c[i]=c[i]%10;}if(jw!=0){c[len]=jw;len++;}for(int i=0;i<len;i++){a[i]=b[i];b[i]=c[i];}
}
int main(){ios::sync_with_stdio(false);cin.tie(NULL);cin>>n>>m;for(int i=3;i<=m-n+1;i++){f();}for(int i=len-1;i>=0;i--){cout<<c[i];}return 0;
}

P1255 数楼梯

题目描述

楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。

编一个程序,计算共有多少种不同的走法。

输入格式

一个数字,楼梯数。

输出格式

输出走的方式总数。

输入输出样例

输入 #1复制

4

输出 #1复制

5

说明/提示

  • 对于 60% 的数据,N≤50;
  • 对于 100% 的数据,1≤N≤5000。
#include<bits/stdc++.h>
using namespace std;
int n,len=1,a[5005]={1},b[5005]={1},c[5005]={1};
void f(){int jw=0;for(int i=0;i<len;i++){c[i]=a[i]+b[i]+jw;jw=c[i]/10;c[i]=c[i]%10;}if(jw!=0){c[len]=jw;len++;}for(int i=0;i<len;i++){a[i]=b[i];b[i]=c[i];}
}
int main(){ios::sync_with_stdio(false);cin.tie(NULL);cin>>n;for(int i=2;i<=n;i++)f();for(int i=len-1;i>=0;i--){cout<<c[i];}return 0;
}

 

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

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

相关文章

数据结构与算法:2,冒泡排序

以从小到大排序为例&#xff1a; 冒泡排序步骤&#xff1a; 1&#xff0c;从左到右(或从右到左)对比相邻两个数&#xff0c;左边的数 大于 右边的数 则交换位置 2,重复第一个步骤 ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​…

从春招“AI热潮”看科技变革中的就业新趋势

随着2025年春招市场的火热进行&#xff0c;人工智能&#xff08;AI&#xff09;相关岗位成为求职市场上的“香饽饽”&#xff0c;引发了社会各界的广泛关注。这一现象背后&#xff0c;不仅反映了AI技术的快速发展&#xff0c;更揭示了科技变革对就业市场带来的深远影响。从春招…

人工智能之数学基础:矩阵的相似变换

本文重点 矩阵的相似变换是线性代数中一个至关重要的概念,它揭示了矩阵之间的一种特殊关系,并通过可逆矩阵将一个矩阵转化为另一个相似矩阵,同时保持矩阵的某些本质特征不变。在机器学习领域,矩阵的相似变换发挥着不可或缺的作用,广泛应用于数据降维、聚类分析、分类推荐…

docker torcherve打包mar包并部署模型

使用Docker打包深度网络模型mar包到服务端 参考链接&#xff1a;Docker torchserve 部署模型流程——以WSL部署YOLO-FaceV2为例_class myhandler(basehandler): def initialize(self,-CSDN博客 1、docker拉取环境镜像命令 docker images出现此提示为没有权限取执行命令&…

JAVA实现动态IP黑名单过滤

一些恶意用户(可能是黑客、爬虫、DDoS 攻击者)可能频繁请求服务器资源&#xff0c;导致资源占用过高。因此需要一定的手段实时阻止可疑或恶意的用户&#xff0c;减少攻击风险。 通过 IP 封禁&#xff0c;可以有效拉黑攻击者&#xff0c;防止资源被滥用&#xff0c;保障合法用户…

RocketMQ可视化工具使用 - Dashboard(保姆级教程)

1、github拉取代码&#xff0c;地址&#xff1a; https://github.com/apache/rocketmq-dashboard 2、指定Program arguments&#xff0c;本地启动工程 勾上这个Program arguments&#xff0c;会出现多一个对应的框 写入参数 --server.port1280 --rocketmq.config.namesrvAddr…

湖南(源点咨询)市场调研 商业综合体定位调研分享(上篇)

​ 该项目位于某新一线城市的城市副中心区域&#xff0c;系一个正在发展中的中央居住区&#xff0c;项目本身是一个涵盖社区综合服务中心、商业、文体活动中心、卫生服务、社区养老等多功能复合的公共配套项目&#xff0c;本次调研主要针对其商业&#xff08;及其他可商用的&a…

硬件测试工装设计不合理的补救措施

硬件测试工装设计不合理的补救措施主要包括重新评估设计需求、优化工装结构、强化工装校准与验证。其中&#xff0c;优化工装结构尤其重要&#xff0c;通过结构优化能够有效解决因设计不合理导致的测试准确性下降和可靠性不足的问题。根据工程实践数据&#xff0c;经过优化结构…

PyQt6实例_批量下载pdf工具_使用pyinstaller与installForge打包成exe文件

目录 前置&#xff1a; 步骤&#xff1a; step one 准备好已开发完毕的项目代码 step two 安装pyinstaller step three 执行pyinstaller pdfdownload.py&#xff0c;获取初始.spec文件 step four 修改.spec文件&#xff0c;将data文件夹加入到打包程序中 step five 增加…

open-cv的安装

python -m pip install numpy matplotlib opencv-python 【记得科学上网&#xff0c;不然太慢了】

AI写一个视频转图片帧工具(python)

现在的AI写python太方便了 说的话 我想用python实现一个能够将视频的所有帧数转化为图片的软件&#xff0c;可以自由配置转换的帧率或者全部&#xff0c;需要有界面&#xff0c;我需要增加一点功能&#xff0c;就是我需要读取出视频的分辨率&#xff0c;然后设置输出帧的分辨…

Axure RP9.0教程: 多级联动【设置选项改变时->情形->面板状态】(给动态面板元件设置相关交互事件的情形,来控制其他面板不同的状态。)

文章目录 引言I 多级联动(省、市、区)实现思路添加三省、市、区下拉列表给省下拉框添加数据源将市、区下拉框添加不同状态,分别以省、市命名给省下拉控件设置选项改变时的交互事件省下拉控件的交互事件情形市下拉交互事件的配置II 知识扩展: 展示省 → 地级市 → 区县的多级…

浙江大学|DeepSeek系列专题公开课|第一季|PDF+视频(全)

大家好&#xff0c;我是吾鳴。 之前吾鳴给大家分享过由浙大出品的DeepSeek系列专题公开课的教程&#xff0c;不过都比较零散&#xff0c;而且都只有PDF&#xff0c;有粉丝朋友直呼看得不过瘾。今天吾鳴把视频也给大家找来了&#xff0c;而且把第一季的DeepSeek系列公开课也稍做…

数据可视化(matplotlib)-------图表样式美化

目录 一、图表样式概述 &#xff08;一&#xff09;、默认图表样式 &#xff08;二&#xff09;、图表样式修改 1、局部修改 2、全局修改 二、使用颜色 &#xff08;一&#xff09;、使用基础颜色 1、单词缩写或单词表示的颜色 2、十六进制/HTML模式表示的颜色 3、RGB…

SpringBoot3解决跨域请求问题(同源策略、JSONP、CORS策略)(Access-Control-Allow-Origin)(2025详细教程)

目录 浏览器跨域请求问题。 浏览器同源策略。 第三方API调用。 前后端分离项目。 一、JSONP。&#xff08;dataType:jsonp&#xff09; &#xff08;1&#xff09;代码示例。 <1>前端ajax04.jsp页面。(发起Ajax请求) <2>后端springboot接口。(/hello)(返回JSONPObj…

rent8_wechat-新增提醒收租功能

本次更新中&#xff0c;rent8_wechat 小程序全新推出了“提醒收租”功能&#xff0c;为房东提供更加便捷的收租体验。房东只需在小程序内点击“提醒收租”按钮&#xff0c;系统便会在需要收租当天的上午9点准时推送通知&#xff0c;贴心提醒房东及时收取租金。 以下是该功能的…

诠视科技MR眼镜如何安装apk应用

诠视科技MR眼镜如何安装apk应用 1、使用adb工具安装1.1 adb工具下载1.2 解压adb文件1.3 使用adb安装apk 2、拷贝到文件夹安装 1、使用adb工具安装 1.1 adb工具下载 点击下面的链接开始下载adb工具&#xff0c;下载结束以后解压文件。 下载链接: https://download.xvisiotech…

JAVA学习*异常

什么是异常 在 Java 里&#xff0c;异常是指程序运行期间出现的不正常状况&#xff0c;它会中断程序的正常执行流程。 异常的分类 Java 中的异常是对象&#xff0c;这些对象都继承自 Throwable类。Throwable类有两个主要的子类&#xff1a;Error 和 Exception。 Error类表示…

DataGear 5.3.0 制作支持导出表格数据的数据可视化看板

DataGear 内置表格图表底层采用的是DataTable表格组件&#xff0c;默认并未引入导出数据的JS支持库&#xff0c;如果有导出表格数据需求&#xff0c;则可以在看板中引入导出相关JS支持库&#xff0c;制作具有导出CSV、Excel、PDF功能的表格数据看板。 在新发布的5.3.0版本中&a…

【电气设计】接地/浮地设计

在工作的过程中&#xff0c;遇到了需要测量接地阻抗的情况&#xff0c;组内讨论提到了保护接地和功能接地的相关需求。此文章用来记录这个过程的学习和感悟。 人体触电的原理&#xff1a; 可以看到我们形成了电流回路&#xff0c;导致触电。因此我们需要针对设备做一些保护设计…