牛客寒假算法集训营1 补题

news2024/12/28 23:48:38

标题迷惑大赏

A、World Final? World Cup! 

题目描述

众所周知,2022年是四年一度的世界杯年,那么当然要整点足球题。本题需要你模拟一次点球大战。
假设对战双方为A和B,则点球大战中双方会按照ABABABABAB方式来罚点球,即两队交替罚点球、各罚五次、A队先罚。点球有罚进和罚不进两种结果,罚中的一方加一分。
其判断胜负的规则为得分多者获胜,而若在罚完某一球后(无论是哪队罚的),当前双方比分已经使得无论之后的罚球结果如何都不会影响比赛的结果,则此时比赛结束。特别地,若直到10球踢完都没有分出胜负则再继续加踢更多的点球。
现在,给出接下来双方10个点球的结果,你需要判断点球大战会在踢完几球时结束,或指出10球内没有分出胜负。

输入描述:

输入第一行包含一个整数T(1≤T≤1024),表示样例组数。
每组测试用例包括一个长度为10的字符串S,第i个字符表示第i个点球的结果,0表示罚不进、1表示罚进,保证不会出现其他字符。

输出描述:

对每组测试用例,输出一个整数,表示点球大战会在第几回合结束,若10轮之内没有分出胜负,输出−1。

简单模拟:

(1)当剩余场次全赢,都无法取胜那么,即可退出循环,得到点球场次

(2)当遍历完整个字符串时,处于平局,即可输出-1

#include<iostream>

using namespace std;

int t;
string s;

int main()
{
    cin >> t;
    while(t --)
    {
        cin >> s;
        // 偶是A
        // 奇是B
        int A = 0 , B = 0;
        int n = s.size();
        int res = 0;
        for(int i = 0;i < n;i ++)
        {
            res = i + 1;
            if(s[i] == '1')
            {
                if(i & 1) B ++;
                else A ++;
            }
            if(A + (n - res) / 2 < B) break;
            if((n - res) % 2 == 0) 
            {
                if(B + (n - res) / 2 < A) break;
            }
            else 
            {
                if(B + (n - res) / 2 + 1 < A) break;
            }
        }
        if(A == B) res = -1;
        cout << res << endl;
    }
    return 0;
}

C、现在是,学术时间
        北京IT大学(BIT)计算机学院为了在下一轮学科评估中让计算机学科获得A+的评定结果,进行了如引进强大的老师、加强课程之类、提高授课质量等多方面的努力。而为了提高学科评估中,学术成果一项的得分,计算机学院的院长打算通过重新分配论文的方式使得学院里所有教授的H指数值之和尽可能大。具体来说,H指数用于粗略的评估一位教授的学术水平。一位教授可以发表多篇论文,每篇论文有一个引用量。定义一位教授的H指数为使得"该教授发表的所有论文中,有至少H篇论文的引用量大于等于H"这一命题成立的最大的H。现在,院长发现学院里的每位老师当前的发表文章数都为000,且恰好每人都有一篇写好的论文未发表,由于院长很懂学术界,他也可以准确的预知到每篇文章发表后的引用量。院长决定以最优的方式重新分配这些论文,他可以任意指定一篇论文由哪位教授发表。规定每篇论文只能被一位教授发表,一位教授可以发表多篇论文。假设重新分配并发表后第i位教授的H指数为hi,院长希望最大化Σhi,即所有教授的H指数之和最大。请你帮院长计算出这一最大的值为多少。

输入描述:

输入第一行为一个正整数T(1≤T≤105),表示样例组数。
每组样例包括两行。
第一行是一个正整数n(1≤n≤105),表示北京IT大学计算机学院的教授数量;第二行包括n个非负整数,第i个数字ai(0≤ai≤109)表示第i位教授写好但未发表的文章在发表后会获得的引用量。

输出描述:

对于每组样例,输出一个整数,表示Σhi​最大的值为多少。

可以使用贪心的思想

和最大即就是使每一个h最大即可,进一步思考即就是尽可能的选择论文,只有当引用量处于0的时候,无法增加最大值。因此答案一定就是n - 0的个数

#include<iostream>
#include<algorithm>
#include<cstring>

using namespace std;

const int N = 1e5 + 10;
int t , n;
int a[N];

int main()
{
    scanf("%d" , &t);
    while(t --)
    {
        scanf("%d" , &n);
        int res = n;
        for(int i = 0;i < n;i ++)
        {
            scanf("%d" , &a[i]);
            if(!a[i]) res --;
        }
        printf("%d\n" , res);
    }
    return 0;
}

H、本题主要考察了DFS
        PTA的拼图由n∗n个大小为1∗1的拼图块组成,每个拼图块都是在正方形的1∗1拼图块基础上生成的,生成方法为:对于每一条边,可以选择不变、向里削出一个半圆形的缺口、向外补上一个半圆形的凸出三种操作之一。因此,一个拼图块可以由一个长度为444的字符串描述,四个字符分别表示上、右、下、左四条边进行的操作,上述三种操作依次记为0,1,2下图的左图为一个2∗2的拼图。而右图为左图中左上角的一块1∗1拼图的字符串描述,由于其上、右、下、左进行的操作分别为不变、凸出、缺口、不变,因此这块拼图对应的字符串为0210。

输入描述:

输入第一行是一个整数T(1≤T≤100),表示测试用例组数。

对于每组测试用例:

第一行为一个正整数n(2≤n≤20),表示拼图的大小。

接下来n^2-1行,每行一个长度为4的字符串,表示一块拼图正面朝上、未经旋转的形状。保证字符串中只含0,1,2三种字符。

输入数据保证n^2-1块拼图是从一个合法的n∗n拼图中按如题面所述的过程获得的。

分析:不进行操作的每一块拼图的价值是10,因此一共的价值就是10*n*n用已知的拼图价值一减去即使需要的拼图的价值

#include<iostream>

using namespace std;

int t;
int main()
{
    cin >> t;
    while(t --)
    {
        int n;
        cin >> n;
        int res = 0;
        for(int i = 1;i <= n * n - 1;i ++)
        {
            string s;
            cin >> s;
            res += 10;
            for(int j = 0;j < s.size();j ++)
                if(s[j] == '1') res --;
                else if(s[j] == '2') res ++;
        }
        cout << 10 * n * n - res << endl;
    }
    return 0;
}

L、本题主要考察了运气

没什么说的输出32即可


M、本题主要考察了找规律

小波奇日常想太多,她认为分仙贝时好感度的变化是有规律的,不过并不是给的仙贝越多,好感度上升的就越多,而是应该看小波奇给出的仙贝数与她当前手里总仙贝的比值。也就是说,若小波奇当前还剩下x(x>0)个仙贝,并给了一位朋友y个仙贝(x,y都为整数),则这位朋友对小波奇的好感度将增加y/x(这个值可以为小数)。

现在,小波奇可以任意安排送仙贝的顺序和每次送仙贝的个数,但不能给同一个人送两次仙贝,允许最后手中还有剩余的仙贝,允许最终有朋友没有分到仙贝。社恐的朋友非常重要,所以请你帮助小波奇算一算,在最优送仙贝策略下,小波奇和所有人的好感度之和最大为多少(假设初始小波奇和所有人好感度都为0)。

分析:不要被题目迷惑,是一道经典的dp

集合表示:从前i个人中选,送出仙贝个数为j的最大值

状态计算:f[i , j] = max\left\{\begin{matrix} & f[i , j] & \\ & f[i - 1 , j - k] + k / j & \end{matrix}\right.

#include<iostream>

using namespace std;

const int N = 510;
int n , m;
double f[N][N];

int main()
{
	cin >> n >> m;
	for(int i = 1;i <= n;i ++)
		for(int j = 1;j <= m;j ++)
			for(int k = 0;k <= j;k ++)
				f[i][j] = max(f[i][j] , f[i - 1][j - k] + 1.0 * k/j);
	
	printf("%.6lf" , f[n][m]); 
	return 0;
}

K、主要考察dp

给定由0和1组成的长度为n的字符串,要求其中有m个1。定义一段长度为3的连续子区间中,如果1的个数大于0的个数,则该区间为坏的。请问所有满足条件的字符串中,坏区间最少有多少?

分析:跟dp没有什么关系,我是用的贪心

构造100100....1111这样的序列,可以保证坏区间最少

#include<iostream>

using namespace std;

int n , m;

int main()
{
    cin >> n >> m;
    int one = m , zero = n - m;
    //100100 ... 11111
    zero /= 2;
    if(!zero) cout << n - 2 << endl;// 表示没有100 全为1
    else cout << max(0 , one - zero - 1); // 剩余的1的个数就是总数减去凑100的1的个数
    return 0;
}

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

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

相关文章

【闪电侠学netty】第7章 数据载体ByteBuf的介绍

1. 内容概要 1.1 总结 1.1.1 内存管理 Netty 使用的是堆外内存&#xff0c;需要手动释放&#xff0c;使用引用计数的方式管理内存&#xff0c;当引用计数 0&#xff0c;回收ByteBuf 底层内存 原则&#xff1a;谁使用retain() , 谁释放release() 1.1.2 创建ByteBuf的方式 B…

ASCII码,字符,字符串三者之间的关系

程序调试中遇到问题&#xff1a;在使用sprintf 函数&#xff0c;在转换字符串时&#xff0c;如果遇到0时&#xff0c;会自动认为是结束标志&#xff0c;0以后的内容不会被添加进来。复习一下字符串&#xff1a;一. ASCII码是什么&#xff1f;ASCII 全称为 ( American Standard …

【2023更新】通过硬件触发信号实现OAK多相机之间的同步拍摄

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手…

经典文献阅读之--NeRF-SLAM(单目稠密重建)

0. 简介 最近几年随着深度学习的发展&#xff0c;现在通过深度学习去预估出景深的做法已经日渐成熟&#xff0c;所以随之而来的是本文的出现《Real-Time Dense Monocular SLAM with Neural Radiance Fields》。这篇文章是一个结合单目稠密SLAM和层次化体素神经辐射场的3D场景重…

【自学Docker 】Docker管理命令大全(下)

文章目录Docker kill命令Docker kill命令概述Docker kill命令语法Docker kill命令参数案例使用容器 ID 杀掉容器使用容器名杀掉容器Docker kill命令总结Docker rm命令Docker rm命令概述Docker rm命令语法Docker rm命令参数案例删除已停止的容器删除正在运行的容器Docker rm命令…

13.拷贝控制

文章目录拷贝控制13.1拷贝、赋值与销毁13.1.1拷贝构造函数合成拷贝构造函数拷贝初始化参数和返回值编译器可以绕过拷贝构造函数13.1.2拷贝赋值运算符重载赋值运算符合成拷贝赋值运算符13.1.3析构函数析构函数完成什么工作什么时候会调用析构函数合成析构函数13.1.4三/五法则需要…

寒假题练——day(4)

题目 1 一个数组中只有两个数字是出现一次&#xff0c;其他所有数字都出现了两次。 编写一个函数找出这两个只出现一次的数字。 #include<stdio.h> int main() {int arr[] { 1, 3, 8, 1, 3, 8, 4, 6 };int num 0;int sz sizeof(arr) / sizeof(arr[0]);int i 0;int…

【Linux】六、Linux 基础IO(二)|重定向|如何理解 Linux一切皆文件|缓冲区

目录 五、重定向 5.1 什么是重定向 5.2 系统调用 dup2 5.3 三种重定向测试 5.3.1 输出重定向(>) 5.3.2 追加重定向(>>) 5.3.3 输入重定向(<) 5.4 父子进程拷贝问题 六、如何理解 Linux一切皆文件 七、缓冲区 7.1 认识缓冲区 7.2 缓冲区的刷新策略 …

连续系统PID的Simulink仿真-2

仍以二阶线性传递函数为被控对象&#xff0c;进行模拟PID 控制。被控对象形式为,其中b为在[103,163]范围内随机变化&#xff0c;a为在[15,35]范围内随机变化&#xff0c;则被控对象的描述方式可转换为&#xff1a;S函数是Simulink一项重要的功能&#xff0c;采用S函数可实现在S…

Pandas 数据清洗

Pandas 数据清洗数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况&#xff0c;如果要对使数据分析更加准确&#xff0c;就需要对这些没有用的数据进行处理。在这个教程中&#xff0c;我们将利用 Pandas包来进行数…

微软ATP带你看| 爆火的ChatGPT是什么?

&#xff08;本文阅读时间&#xff1a;7分钟&#xff09;OpenAI最新聊天机器人ChatGPT火爆全网&#xff01;能写代码、编剧本&#xff0c;马斯克都盛赞它“好得吓人”&#xff01;ChatGPT是什么GPT(Generative Pre-trained Transformer)系列是由OpenAI提出的非常强大的预训练语…

MaxCompute SQL示例解析

MaxCompute SQL示例解析 介绍MaxCompute SQL常见使用场景&#xff0c;掌握SQL的写法。 准备数据集 本文以emp表和dept表为示例数据集。您可以自行在MaxCompute项目上创建表并上传数据。 emp.csv中数据如下 7369,SMITH,CLERK,7902,1980-12-17 00:00:00,800,20 7499,ALLEN,SALES…

aws codebuild 使用和配置codebuild测试报告

参考资料 使用 Amazon CodeBuild 中的测试报告在 CodeBuild 使用AWS CLI样本中创建测试报告aws-codebuild-samples 在codebuild构建过程中获取有关在构建期间运行的测试的详细信息。 codebuild测试报告 通过在buildspec.yaml中配置报告组&#xff0c;运行构建项目时系统将运…

【代码随想录】96.不同的二叉搜索树

96.不同的二叉搜索树 思路 n为1的时候有一棵树&#xff0c;n为2有两棵树&#xff0c;这个是很直观的。 n为3的时候&#xff0c;有哪几种情况。 当1为头结点的时候&#xff0c;其右子树有两个节点&#xff0c;看这两个节点的布局&#xff0c;是不是和 n 为2的时候两棵树的布…

控价公司可以帮我们做什么?什么时候需要找第三方控价公司?

如果&#xff0c;我们品牌的销售渠道遭遇了低价乱价、窜货、侵权、假冒等问题&#xff0c;扰乱了我们品牌的渠道秩序&#xff0c;或者是我们在品牌发展的过程中&#xff0c;想通过对行业和竞品的了解来明确发展方向和策略&#xff0c;而自己又分身乏术或无从下手&#xff0c;这…

车辆信息查询

要想查一辆汽车的信息&#xff0c;除了去各个汽车平台上查询&#xff0c;比如汽车之家、易车网、懂车帝等&#xff0c;还可以使用“汽车公告查询”。 通过常规网页百度搜索引擎&#xff0c;输入关键字“汽车公告查询”&#xff0c;就会获取到相关搜索结果&#xff0c;汽车公告查…

C进阶_内存库函数

目录 memcpy 模拟实现memcpy memmove 模拟实现memmove memcmp memcpy 它的函数原型为&#xff1a; void * memcpy ( void * destination, const void * source, size_t num ); 函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。 这个函数…

104、【树与二叉树】leetcode ——98. 验证二叉搜索树:递归法[先序+中序+后序]+迭代法(C++版本)

题目描述 原题链接&#xff1a;98. 验证二叉搜索树 解题思路 BST的特点是&#xff1a;当前结点的值&#xff0c;比左子树中的全部结点都大&#xff0c;比右子树中全部结点都小。在代码实现中&#xff0c;要注意不要对比的是某一结点和某一侧的全部值之间的关系&#xff0c;不…

【论文阅读】CenterNet

论文题目&#xff1a;Objects as Points&#xff08;CVPR2019&#xff09; 论文地址&#xff1a;https://arxiv.org/pdf/1904.07850.pdf 发布时间&#xff1a;2019.4.16 机构&#xff1a;UT Austin&#xff0c;UC Berkeley 代码&#xff1a;https://github.com/xingyizhou/…

小程序事件基础

小程序事件--基础小程序事件事件简介小程序事件—事件传参事件对象属性target和currentTarget事件对象属性获取和设置data数据获取&设置data获取和设置data数据—进阶小程序的渲染层与逻辑层小程序事件 事件简介 事件是视图层到逻辑层的通讯方式。负责将用户对于的页面的操…