算法竞赛入门【码蹄集进阶塔335题】(MT2291-2295)

news2024/11/28 13:55:34

算法竞赛入门【码蹄集进阶塔335题】(MT2291-2295)


文章目录

  • 算法竞赛入门【码蹄集进阶塔335题】(MT2291-2295)
  • 前言
      • 为什么突然想学算法了?
      • 为什么选择码蹄集作为刷题软件?
  • 目录
    • 1. MT2291 饿饿!饭饭!
    • 2. MT2292 甜甜花的研究
    • 3. MT2293 赌石
    • 4. MT2294 square
    • 5. MT2295 越狱
    • 结语


前言

在这里插入图片描述

为什么突然想学算法了?

> 用较为“官方”的语言讲,是因为算法对计算机科学的所有分支都非常重要。 在绝大多数的计算机科学分支领域中,要想完成任何实质性的工作,理解算法的基础知识并掌握与算法密切相关的数据结构知识是必不可少的。
> 但从实际而言,是因为当下快到了考研和找工作的年纪(ಥ_ಥ),无论走哪一条路,都不免需要一些相对丰富的算法知识,是故,便产生了一个暑假速成算法的计划,可能对于像我这种算法竞赛小白而言,几乎很难,但我仍然还是想尝试一下,毕竟,梦想还是要有的,万一实现了呢?~( ̄▽ ̄~)~

在这里插入图片描述


为什么选择码蹄集作为刷题软件?

码蹄集,是在全国高等学校计算机教学与产业实践资源建设专家委员会(TIPCC) 指导下建设的,其依托全国各大名校计算机系和清华大学出版社等单位的强大资源,旨在为计算机学习爱好者提供全面和权威的计算机习题。
在这里插入图片描述


目录

1. MT2291 饿饿!饭饭!

(1)题目描述
嗯哼,小码哥在新的一年里不会忘记身为干饭人的初心!

众所周知,小码哥非常不喜欢一直吃同样的东西,但由于理想与现实的差距,食堂在这n天里只会供应k种餐食。

在一天吃3餐的情况下,前w天一共wx3顿饭小码哥不希望有任何一顿重复。现在请问食堂有多少种方案可以满足超级可爱乖巧的小码哥的需要。

格式

输入格式:
第一行,三个整数n,k,w表示n天内食堂只会供应k种餐室,小码哥的意义详见题面。
.
输出格式: 输出一行一个数,表示满足小码哥需要的方案数。

样例1

输入: 5 4 1
.
输出格式: 24

备注:

数据范围: 1≤n, w, k≤ 12

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;
typedef long long ll;
ll ans = 1;
int main( )
{
    int n,k,w;
    cin>>n>>k>>w;
    w*=3;
    if(w>k) ans=0;
    for(int i =k-w+1; i<=k;i++) ans*=i;
    cout<<ans<<endl;
    return 0;
}

2. MT2292 甜甜花的研究

(1)题目描述

小码哥酷爱研究植物,他对甜甜花的研究无人能及,可他仍然在不断研究着。现在小码哥有n粒甜甜花的种子,每一粒种子都能长出不同的甜甜花,由于种子实在太多,小码哥一个人实在无法照料,于是他雇佣了m位种植能手,第i个人能照料a株甜甜花,请问小码哥有多少种分配方式将这些种子分配出去?

格式

输入格式:
输入共两行:
第一行输入用空格隔开的两个正整数n、m ,
第二行输入m个正整数,分别代表ai。
.
输出格式:
输出一个整数表示方法个数
由于结果可能很大,须将结果对12520取模

样例1

输入:
5 2
3 1
.
输出:
20

备注:

其中: n≤104,m ≤100,ai ≤100数据保证种子有剩余

(2)参考代码

#include<bits/stdc++.h> 

using namespace std;
typedef long long int ll;
const int mod=12520,N=10010;

ll C(ll n,ll m){
    ll ans = 1;
    for(ll i=1;i<=n;i++) ans*=i;
    for(ll i=1;i<=m;i++) ans/=i;
    for(ll i=1;i<=n-m;i++) ans/=i;
    return ans;
}

int main( )
{
    int n,m,a1,a2;
    cin>>n>>m>>a1>>a2;
    ll num1 = C(n,a1)%12520;
    ll num2 = C(m,a2)%12520;
    ll result = num1*num2;
    cout<<result<<endl;   
    return 0;
}

3. MT2293 赌石

(1)题目描述
富饶的璃月街道上有一家石料店,店主小码哥是个精明的商人,为了使他的赌石生意更加红火,他根据赌徒的心理设计了一个有趣的买卖规则:他在店铺的两边放了个小桶,一个桶里有n个红球,另一个有n个蓝球。每一批2n个璞石与这些球一—对应,对每个来买璞石的客户石头都会让他们在原地闭眼旋转数圈后走向一个小桶,若拿到蓝球则可免费获得一块石头,但若拿到红球则需要付出两倍的价钱。

假设每个人每次拿到蓝球和红球的概率相同,现在请你求出一个桶里没球而另一个桶里还剩两个球的概率,精确到小数点后四位。


格式

输入格式: 输入一个正整数代表这批璞石的个数。
.
输出格式: 输出一个四位小数代表所求答案。

样例1

输入格式: 256
.
输出格式: 0.9500

(2)参考代码

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
 
using namespace std;
 
typedef long double LD;
 
LD C_div(int k, int n)
{
    LD res = 1;
    
    for (int i = n, j = 1; j <= k; i -- , j ++ )
        res = res * i / j;
    
    for (int i = 1; i <= k; i ++ ) res /= (LD)4.0;
    return res;
}
 
int main()
{
    int n;
    cin >> n;
    
    n /= 2;
    
    printf("%.4llf", 1 - C_div(n - 1, 2 * n - 2));
    return 0;
}

4. MT2294 square

(1)题目描述
猩猩,骆驼,还有泡泡经常喜欢在饭后到操场上散步,由于猩猩的走路姿势最突出最显眼,理所应当的成为他们中的主角,所以我的题目就说猩猩散步了。(骆驼和泡泡别有意见哈,和猩猩争啥…)

当然,话说回来,猩猩在OI上的能力也是不容低估的,你看,散步时还会想一道与此相关的问题,这是道经典的不能再经典的问题了。

在一个mxn的矩阵上,猩猩在左下角的顶点出现了,他只能沿着路径向上或者向右走,他的目标是“蠕动”到右上角的顶点,问他有多少路径可以选择。嗯,这个、这个、这个似乎地球人都知道怎么做,但是请注意,我有个条件没给呢! m和n现在的最大范围是50000,这可怎么办?仔细想想吧。


格式

输入格式:
只有一行,包含两个整数m和n,其均不小于4,上限均为50000。
.
输出格式: 由于最后的答案数目过大,所以只检查后100位,输出时每行十个数字,没空格间隔,共十行,如果答案位数没超过100位,则需要在空位上补0。

样例1:

输入: 7 4
.
输出
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000000
0000000330

(2)参考代码

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 7;
int ans[110];
int cnt[N];
int b[110];
void multi(int x)
{
    memcpy(b, ans, sizeof b);
    memset(ans, 0, sizeof ans);
    int j = 0;
    while (x) {
        int z = x % 10;
        x /= 10;
        for (int i = 1; i <= 100; i++) {
            if (i + j <= 100)
                ans[i + j] += z * b[i];
        }
        j++;
    }
    for (int i = 1; i <= 100; i++) {
        ans[i + 1] += ans[i] / 10;
        ans[i] %= 10;
    }
}
int main()
{
    int m, n;
    cin >> m >> n;
    if (m > n)
        swap(m, n);
    for (int i = 0; i < m; i++) {
        int x = m + n - i;
        for (int j = 2; j <= x / j; j++) {
            while (x % j == 0) {
                x /= j;
                cnt[j]++;
            }
        }
        if (x != 1)
            cnt[x]++;
    }
    for (int i = 1; i <= m; i++) {
        int x = i;
        for (int j = 2; j <= x / j; j++) {
            while (x % j == 0) {
                x /= j;
                cnt[j]--;
            }
        }
        if (x != 1)
            cnt[x]--;
    }
    ans[1] = 1;
    for (int i = 1; i < N; i++) {
        while (cnt[i]) {
            multi(i);
            cnt[i]--;
        }
    }
    for (int i = 100; i >= 1; i--) {
        cout << ans[i];
        if (i % 10 == 1)
            cout << endl;
    }
    return 0;
}


5. MT2295 越狱

(1)题目描述
监狱有n个房间,每个房间关押一个犯人,有m种宗教,每个犯人会信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱。

答案对1007取模。


格式

输入格式: 输入只有一行两个整数,分别代表宗教数m 和房间数n。
.
输出格式: 输出一行一个整数代表答案。

样例1

输入格式: 2 3
.
输出格式: 6

备注:

其中: 1≤m ≤le8,1 ≤n ≤1e10

(2)参考代码

#include<bits/stdc++.h> 
/*
思路:不越狱的状态好计算所以:越狱数=总的状态数-不越狱的状态数
其中 总的状态数为:m^n
    不越狱的状态数: m*(m-1)^(n-1) :只有第一个可以选择m个宗教,其他的只能选和前一个不同的宗教所以是m-1种情况
这里计算用了快速幂的方法。
*/
using namespace std;
long long p=1007;
long long qpow(long long x, long long y){
    if(y==0)
        return 1;
    if(y%2==1){
        return qpow(x, y - 1) * x % p;
    }else{
        long long t = qpow(x, y/2) % p;
        return t*t % p;
    }
}
int main( )
{
    long long m,n;
    cin>>m>>n;
    long long ans = qpow(m,n)-(m*qpow(m-1,n-1)%p);
    cout<<(ans+p)%p<<endl;//注意需要+p之后再取 %p,防止有负数
    return 0;
}

结语

感谢大家一直以来的不断支持与鼓励,码题集题库中的进阶塔350题正在逐步更新,之后会逐步跟进星耀,王者的题,尽请期待!!!
同时,也希望这些题能帮助到大家,一起进步,祝愿每一个算法道路上的“苦行僧”们,都能够历经磨难,终成正果,既然选择了这条路,走到了这里,中途放弃,岂不是太过可惜?

另附中国计算机学会的杰出会员、常务理事轩哥博士的B站视频讲解链接https://space.bilibili.com/518554541/?spm_id_from=333.999.0.0,供大家更好的进行学习与刷题~( ̄▽ ̄~)~

愿你的结局,配得上你一路的颠沛流离。

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

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

相关文章

【2013NOIP普及组】T4. 车站分级 试题解析

【2013NOIP普及组】T4. 车站分级 试题解析 时间限制: 1000 ms 内存限制: 131072 KB 【题目描述】 一条单向的铁路线上,依次有编号为 1,2,…,n 的 n 个火车站。每个火车站都有一个级别,最低为 1 级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟…

护眼灯真的有用吗?2022双十二选哪个牌子的护眼台灯好

护眼灯对保护眼睛是真的有用&#xff0c;它不是那种如医学奇迹般的治疗眼睛疾病&#xff0c;或者降低近视度数等等&#xff0c;这样的伪科学只会让人觉得是智商税。护眼灯的作用原理很简单也很有效&#xff0c;即通过各种方法提高光线的舒适度&#xff0c;使人眼在晚上长时间工…

厦门市会展局携手美创:以数据为核心的安全建设守护“云上会展”

新冠疫情影响下&#xff0c;会展业与云计算、大数据、物联网等数字技术加速融合&#xff0c;“云上会展”成为新趋势。然而风口之下&#xff0c;高价值的展会敏感数据无时不面临着被窃取、攻击的风险。因此&#xff0c;成熟配套的数据安全能力体系建设&#xff0c;也是会展业创…

Monaco Editor教程(二十):在编辑器的某个特定位置插入自定义的dom内容,图片,表单,表格,视频

前言 哇咔咔&#xff0c;这是我的第20篇Monaco教程&#xff0c;写完这一篇会暂时休息一段时间&#xff0c;练练字&#xff0c;存存稿&#xff0c;读读书&#xff0c;顺便修修文章。 目前全网成系统的monaco中文专栏应该只有我这一个&#xff0c;欢迎评论区打脸。自结束了GitLa…

面试题------线程池的拒绝策略

面试题------线程池的拒绝策略 线程池有7个核心参数 1.核心线程数 2.最大线程数 3.非核心线程存活时间 4.存活时间的单位 5.工作队列 6.线程自定义的一些配置 7.拒绝策略&#xff08;当达到最大线程数、且工作队列也满了会执行拒绝策略&#xff09; public ThreadPoolExecutor…

马上2023年了,学一下gradle(Gradle)安装及配置

Gradle学习 例如&#xff1a;相信已经很多公司在用了&#xff0c;但是小伙伴对此还是很模糊 文章目录Gradle学习Gradle一、Gradle介绍&#xff1f;二、常见的项目构建工具gradle安装1.下载2. 配置&#xff08;环境变量&#xff09;2.1打开环境变量2.2**新建环境变量**2.3在Pat…

【C++】STL—vector的常用接口

文章目录前言一、vector介绍二、vector的使用1. vector的定义2. vector的遍历2.1.operator[ ]2.2.迭代器2.3.范围for3. vector的空间增长问题3.1.size和capacity3.2.max_size和empty3.3.reserve3.4.resize3.5.Shrink to fit4. vector的增删查改4.1.push_back和pop_backinsert和…

Vue 3的高颜值UI组件库

Vue 3.0 已经发布两年多的时间&#xff0c;今年 2 月 Vue 3.0 也正式成为新的默认版本。今天就来分享 7 个适用于 Vue 3 的高颜值 UI 组件库&#xff01; Element Plus Element Plus 是一套由饿了么开源出品的为开发者、设计师和产品经理准备的基于 Vue 3.0 的组件库。Elemen…

【能源管理】制造行业中汽车厂房综合能效管理平台应用分析

安科瑞 李亚俊 平台概述 壹捌柒贰壹零玖捌柒伍柒AcrelEMS-EV汽车厂房能效管理平台集变电站综合自动化、电力监控、电气安全、电能质量分析及治理、能耗管理、能效分析、照明控制、充电桩运营管理、设备运维于一体&#xff0c;为建立可靠、安全的工厂能源管理体系提供数据支持…

【Flink】处理迟到元素(续)、自定义水位线和多流的合并与合流

文章目录一 处理迟到元素1 处理策略&#xff08;3&#xff09;使用迟到元素更新窗口计算结果a 代码编写b 测试二 自定义水位线1 产生水位线的接口2 自定义水位线的产生逻辑三 多流的合流与分流1 union算子2 水位线传递规则&#xff08;1&#xff09; 分流a 代码编写b 测试&…

virtio-net 实现机制【二】(图文并茂)

4. virio-net前端驱动分析 4.1 重要数据结构 4.1.1 send_queue结构 send_queue结构是对virtqueue的封装&#xff0c;是virtio-net的发送队列&#xff0c;即数据流向从前端驱动&#xff08;Guest&#xff09;到后端驱动&#xff08;Host&#xff09; 4.1.2 receive_queue结构…

【PlasticSCM Could Edition】新版本云托管浅试2

【PlasticSCM Could Edition】新版本云托管浅试2首先修复更改托管提一嘴首先 建议还是使用 PlasticHub&#xff0c;不要去用 PlasticSCM Cloud 原因&#xff1a; 由于比较新&#xff0c;伴随着的就是 —— 太多 bigs 了&#xff01;而且不知道怎么去改。 当时我创建了一个…

数据结构复习

期末的一套模拟题&#xff0c;仅供参考&#xff0c;切莫作为期末考试依据&#xff01;&#xff01;&#xff01; 选择题 数组A[1..5,1..6]每个元素占5个单元&#xff0c;将其按行优先次序存储在起始地址为1000的连续的内存单元中&#xff0c;则元素A[5,5]的地址为&#xff1a;…

轻量应用服务器部署vue项目

首先我已经拥有一个轻量云服务器了.windows2012的版本&#xff1a; 1.搭建 FTP 服务 为了将我们打包好的vue项目传到服务器&#xff0c;我们要先在服务器搭建FTP服务。 具体步骤可以参考官方文档&#xff0c;官方文档的教程十分清楚详细&#xff0c;按照步骤来就不会出错&am…

传奇服务端服务端运行7个窗口的各窗口功能讲解

大家都知道打开传奇版本里的游戏引擎后&#xff0c;就会弹出7各窗口&#xff0c;下面给大家讲解下各窗口的功能定义 GameCenter是游戏服务器启动程序&#xff0c;负责将DBServer.exe处转来的客户 端转发到相应的M2Server.exe。 DBServer.exe是用户数据库服务器&#xff0c;负责…

Allure与Jenkins持续集成

目标&#xff1a;每次提交代码到代码托管平台&#xff08;gitee&#xff09;&#xff0c;自动触发jenkins项目构建&#xff0c;生成allure测试报告&#xff0c;并发送邮件通知。 1、部署jenkins Jenkins — 快速入门 2、配置Gitee &#xff08;1&#xff09;Plugin Manager&…

01_openstack概述

一、openstack起源 Openstack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的项目Openstack是一套IaaS解决方案Openstack是一个开源的云计算管理平台以Apache许可证为授权二、Openstack七大组件 1、Horizaon组件 Horizon为Openstack服务的Web控制面板&#xff…

leecode#用Read4读取n个字符#相交链表

题目描述&#xff1a; 给你一个文件&#xff0c;并且该文件只能通过给定的 read4 方法来读取&#xff0c;请实现一个方法使其能够读取 n 个字符。 分析&#xff1a; read4 方法&#xff1a;API read4 可以从文件中读取 4 个连续的字符&#xff0c;并且将它们写入缓存数组 buf…

为什么电脑运行越来越慢?解决方法又是什么呢?

文章目录为什么电脑运行越来越慢&#xff1f;解决方法又是什么呢&#xff1f;一&#xff0c;电脑运行慢的原因二&#xff0c;提高电脑运行速度的方法1&#xff0c;重启电脑2&#xff0c;还原&#xff08;重置&#xff09;操作系统3&#xff0c;关闭不使用的应用程序4&#xff0…

CrossOver2023Win电脑软件操作在Mac、Linux系统运行教程

在Mac系统中一直存在一个比较令用户们头疼的问题&#xff0c;那就是安装不了想要的Windows软件。如果使用的第一台电脑就是MacBook那接触到的Windows软件想必并不是很多。但我们中的大多数人都是从小先学习了Windows的操作系统&#xff0c;再过渡到Mac系统上的。 那有小伙伴会…