AtCoder Beginner Contest 358 A~E(F,G更新中...)

A.Welcome to AtCoder Land

题意

给出两个字符串 S , T S, T S,T,请你判断是否满足:

  • 字符串 S S SAtCoder

  • 字符串 T T TLand

分析

输入后判断即可

代码

#include<bits/stdc++.h>
using namespace std;
void solve() {
    string s, t;
    cin >> s >> t;
    if (s == "AtCoder" && t == "Land") {
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }
}
int main() {
    solve();
    return 0;
}

B.Ticket Counter(思维)

题意

N N N个人会进入会场买票,每个人买票均需要花费 A A A分钟,其中第 i i i个人会在 T i T_i Ti时间到达,如果到达后前面的人还没买完票,就需要等待前面的人完成后继续,否则,可以直接开始买票。

问:经过多少时间后,所有人都买到了票。

分析

由于保证了到达时间是有序的,那么可以依次遍历每个人,第 i i i个人的开始买票时间为第 i − 1 i - 1 i1个人的结束时间和第 i i i个人的到达时间中的较大值,那么结束时间即为开始时间加上花费的时间。

输出第 n n n个人的结束时间即为答案。

代码

#include<bits/stdc++.h>
using namespace std;
int t[105];
void solve() {
    int n, a;
    cin >> n >> a;
    int now = 0;
    for (int i = 1; i <= n; i++) {
        cin >> t[i];
        now = max(now, t[i]);
        now += a;
        cout << now << endl;
    }
}
int main() {
    solve();
    return 0;
}

C. Popcorn(二进制枚举)

题意

N N N种爆米花,爆米花总共有 M M M种味道,使用一个包含 M M M个字符的字符串 S i S_i Si表示第 i i i种爆米花拥有的味道,即使用 S i , j = ′ o ′ S_{i, j} = 'o' Si,j=o表示第 i i i种爆米花拥有 j j j味道,用 S i , j = ′ x ′ S_{i, j} = 'x' Si,j=x表示第 i i i种保密吗没有 j j j味道。

问:最少买几种爆米花,才能包含所有味道。

分析

观察数据可以发现, N , M ≤ 10 N, M \le 10 N,M10,那么数据量是非常小的,可以直接使用二进制枚举去枚举所有选择方案,记录包含所有味道中,选择爆米花种类最小的一个即为最后的答案。

代码

#include<bits/stdc++.h>
using namespace std;
string s[105];
int vis[15];
void solve() {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        cin >> s[i];
    }
    int ans = n;
    for (int i = (1 << n) - 1; i >= 0; i--) {
        memset(vis, 0, sizeof (vis));
        int cnt = 0, sum = 0;
        for (int j = 0; j < n; j++) {
            if (i & (1 << j)) {
                cnt++;
                for (int k = 0; k < m; k++) {
                    if (s[j][k] == 'o') {
                        vis[k]++;
                        if (vis[k] == 1) sum++;
                    }
                }
            }
        }
        if (sum == m) {
            ans = min(ans, cnt);
        }
    }
    cout << ans << endl;
}
int main() {
    solve();
    return 0;
}

D.Souvenirs(贪心)

题意

N N N个糖果盒,第 i i i个盒子价格为 A i A_i Ai,且包含 A i A_i Ai颗糖果。

你需要买其中 M M M盒糖果,并把这些盒子送给你的朋友,送给第 j j j个朋友的盒子需要至少包含 B j B_j Bj颗糖果。

如果能买到满足要求的 M M M盒糖果,输出最小的花费,如果不能,输出-1

分析

首先一定要优先考虑给糖果需求大的选取盒子,那么该怎么选择最优呢,必然会去选择所有满足要求的盒子中 ( B [ j ] ≤ A [ i ] ) (B[j] \le A[i]) (B[j]A[i]),价格最低的一个,对于这些盒子,可以使用优先队列维护所有价值大于等于 B [ j ] B[j] B[j]的糖果盒子,每次从优先队列取出最小的元素加到答案中,如果取不出来,则说明无解。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
priority_queue<int, vector<int>, greater<int> >Q;
const int N = 2e5 + 5e2;
int n, m, a[N], b[N];
void solve() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int j = 1; j <= m; j++) cin >> b[j];
    sort(a + 1, a + n + 1);
    sort(b + 1, b + m + 1);
    ll ans = 0;
    for (int i = m, j = n; i >= 1; i--) {
        while (j >= 1 && a[j] >= b[i]) {
            Q.push(a[j--]);
        }
        if (Q.empty()) {
            cout << -1 << endl;
            return;
        }
        ans += Q.top();
        Q.pop();
    }
    cout << ans << endl;
}
int main() {
    solve();
    return 0;
}

E.Alphabet Tiles(DP)

题意

给出26个字母中每个字母的数量,即使用 a i a_i ai表示第 i i i个字母的个数。

定义函数 f ( i ) f(i) f(i)表示使用给出的字母组成长度为 i i i的字符串的个数。

给出一个正整数 k k k,请你求出:

  • ∑ i = 1 k f ( i ) \sum\limits_{i = 1}^{k}f(i) i=1kf(i)

hint:结果较大,需对 998244353 998244353 998244353取模

分析

定义 d p [ i ] [ j ] dp[i][j] dp[i][j]表示选择前 i i i个字母,组成 j j j长度的字符串的方案数。

状态转移:可以在前面所有字母已经放置了 j j j个字母的方案中,再放置 l l l个当前字母,此时的方案数可以视为总共 j + l j + l j+l个空位,要给前面的 j j j个字母放入这些空位中,此时摆放的方案数为 C j + l j C_{j + l}^{j} Cj+lj,产生的总方案数即为 d p [ i − 1 ] [ j ] × C j + l j dp[i - 1][j] \times C_{j + l}^{j} dp[i1][j]×Cj+lj

完成状态转移后,答案即为 ∑ i = 1 k d p [ 26 ] [ i ] \sum\limits_{i = 1}^{k}dp[26][i] i=1kdp[26][i]

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3 + 5e2, mod = 998244353;
ll C[N][N], k, a[N], dp[N][N];
void init() {
    C[0][0] = 1;
    for (int i = 1; i <= 1000; i++) {
        C[i][0] = C[i][i] = 1;
        for (int j = 1; j <= i; j++) {
            C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]) % mod;
        }
    }
}
void solve() {
   cin >> k;
   for (int i = 1; i <= 26; i++) cin >> a[i];
   dp[0][0] = 1;
   for (int i = 1; i <= 26; i++) {
       for (int j = 0; j <= k; j++) {
           for (int l = 0; l <= a[i]; l++) {
               if (j + l > k) break;
               dp[i][j + l] = (dp[i][j + l] + dp[i - 1][j] * C[j + l][j] % mod) % mod;
           }
       }
   }
   ll ans = 0;
   for (int i = 1; i <= k; i++) {
       ans = (ans + dp[26][i]) % mod;
   }
   cout << ans << endl;
}
int main() {
    init();
    solve();
    return 0;
}

F,G更新中…

赛后交流

在比赛结束后,会在交流群中给出比赛题解,同学们可以在赛后查看题解进行补题。

群号: 704572101,赛后大家可以一起交流做题思路,分享做题技巧,欢迎大家的加入。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MacOS系统中Java使用Opencv4.10.0库的编译过程和使用方法(附编译后的包)

编译开始 到官方下载源码&#xff1b;官方 解压后进入 opencv-4.10.0 目录 执行命令预编译&#xff0c;查看是否有Java的支持 cmake -S . -B build -DCMAKE_INSTALL_PREFIX/usr/local/opencv开始正式编译 # 进入build目录 cd build # make编译 {N} 取决于你有几个CPU、几个线…

AI大模型探索之路-实战篇:智能化IT领域搜索引擎之知乎网站数据获取(流程优化)

系列篇章&#x1f4a5; No.文章1AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎的构建与初步实践2AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之GLM-4大模型技术的实践探索3AI大模型探索之路-实战篇&#xff1a;智能化IT领域搜索引擎之知乎网站数据获…

【在线OJ】vue分页+SpringBoot分页模板代码

一、Vue <template><div><el-table:data"user"style"width: 120%"><el-table-columnlabel"id"width"180"><template slot-scope"scope"><i class"el-icon-time"></i>&…

几个小创新模型,KAN组合网络(LSTM、GRU、Transformer)时间序列预测,python预测全家桶...

截止到本期&#xff0c;一共发了8篇关于机器学习预测全家桶Python代码的文章。参考往期文章如下&#xff1a; 1.终于来了&#xff01;python机器学习预测全家桶 2.机器学习预测全家桶-Python&#xff0c;一次性搞定多/单特征输入&#xff0c;多/单步预测&#xff01;最强模板&a…

中国城市建设统计年鉴(1978-2022年)

数据年份&#xff1a;1978-2022 数据格式&#xff1a;excel、pdf 数据内容&#xff1a;以2022年为例&#xff0c;《中国城市建设统计年鉴—2022》根据各省、自治区和直辖市建设行政主管部门上报的2022年及历年城市建设统计数据编辑。 共分13个部分&#xff0c;包括城市市政公用…

Java课程设计:基于swing + mysql的酒店管理系统

文章目录 一、项目介绍二、项目展示三、源码展示四、源码获取 一、项目介绍 项目功能 1、散客开单&#xff1a;完成散客的开单&#xff0c;可一次最多开5间相同类型的房间。 2、团体开单&#xff1a;完成团体的开单&#xff0c;开放数量没有限制&#xff0c;可同时开不同类型…

Java阻塞队列:ArrayBlockingQueue

Java阻塞队列&#xff1a;ArrayBlockingQueue ArrayBlockingQueue是Java中的一个阻塞队列&#xff08;Blocking Queue&#xff09;实现&#xff0c;它是线程安全的&#xff0c;并且基于数组实现。ArrayBlockingQueue常用于生产者-消费者模型&#xff0c;在这种模型中&#xff…

北京人工智能数据运营平台发布,并开源大规模数据集

6月14日&#xff0c;AI行业顶级盛会2024北京智源大会正式拉开帷幕。作为大会的重要组成部分&#xff0c;智源大会“人工智能数据新基建”论坛同步召开。本论坛由北京智源人工智能研究院主办&#xff0c;中国互联网协会人工智能工委会和中国移动研究院承办。本次论坛邀请到来自中…

2-5 基于matlab的信号的希尔伯特-黄变换

基于matlab的信号的希尔伯特-黄变换&#xff0c;IMF分解&#xff0c;对IMF进行Hilbert处理&#xff0c;绘制二维/三维时-频图&#xff0c;时间-能量图(瞬时能量谱) &#xff0c;频率-能量图&#xff08;希尔伯特谱&#xff09;。程序已调通&#xff0c;可直接运行。 2-5 希尔伯…

java Springboot网上音乐商城(源码+sql+论文)

1.1 研究目的和意义 随着市场经济发展&#xff0c;尤其是我国加入WTO &#xff0c;融入经济全球化潮流&#xff0c;已进入国内外市场经济发展新时期&#xff0c;音乐与市场联系越来越紧密&#xff0c;我国音乐和网上业务也进入新历史发展阶段。为了更好地服务于市场&#xff0…

11.泛型、trait和生命周期(上)

标题 一、泛型数据的引入二、改写为泛型函数三、结构体/枚举中的泛型定义四、方法定义中的泛型 一、泛型数据的引入 下面是两个函数&#xff0c;分别用来取得整型和符号型vector中的最大值 use std::fs::File;fn get_max_float_value_from_vector(src: &[f64]) -> f64…

.net8 blazor auto模式很爽(五)读取sqlite并显示(2)

在BlazorApp1增加文件夹data&#xff0c;里面增加类dbcont using SharedLibrary.Models; using System.Collections.Generic; using Microsoft.EntityFrameworkCore;namespace BlazorApp1.data {public class dbcont : DbContext{public dbcont(DbContextOptions<dbcont>…

Python进阶:从函数到文件的编程艺术!!!

第二章&#xff1a;Python进阶 模块概述 函数是一段可重复使用的代码块&#xff0c;它接受输入参数并返回一个结果。函数可以用于执行特定的任务、计算结果、修改数据等&#xff0c;使得代码更具模块化和可重用性。 模块是一组相关函数、类和变量的集合&#xff0c;它们被封…

vs+qt5.0 使用poppler 操作库

Poppler 是一个用来生成 PDF 的C类库&#xff0c;从xpdf 继承而来。vs编译库如下&#xff1a; vs中只需要添加依赖库即可 头文件&#xff1a;

2.2 抽头

目录 为什么要抽头 什么是抽头 接入系数 怎么抽头 信号源端抽头 负载端抽头 例题分析 要点总结 为什么要抽头 阻抗转换&#xff0c;使信号源内阻Rs与负载电阻RL变得很大&#xff0c;分流小&#xff0c;再使用并联方式。 什么是抽头 接入系数 电容越大&#xff0c;分压越…

初识PHP

一、格式 每行以分号结尾 <?phpecho hello; ?>二、echo函数和print函数 作用&#xff1a;两个函数都是输出内容到页面中&#xff0c;多用于代码调试。 <?php echo "<h1 styletext-align: center;>test</h1>"; print "<h1 stylet…

使用python绘制三维曲线图

使用python绘制三维曲线图 三维曲线图定义特点 效果代码 三维曲线图 三维曲线图&#xff08;3D曲线图&#xff09;是一种用于可视化三维数据的图表&#xff0c;它展示了数据在三个维度&#xff08;X、Y、Z&#xff09;上的变化。 定义 三维曲线图通过在三维坐标系中绘制曲线…

AI大模型技术揭秘-参数,Token,上下文和温度

深入理解 AI 大模型:参数、Token、上下文窗口、上下文长度和温度 人工智能技术的飞速发展使AI大模型大放异彩,其中涉及的“参数”、“Token”、“上下文窗口”、“上下文长度”及“温度”等专业术语备受瞩目。这些术语背后究竟蕴含何意?它们如何影响AI大模型的性能?一起揭开…

htb_Freelancer

端口扫描 80 88 389 445 扫描ldap协议相关漏洞&#xff0c;没有发现 扫描子域名&#xff0c;加入/etc/hosts&#xff08;后面发现没用&#xff09; 枚举域用户 目录扫描&#xff0c;发现一个/admin目录 访问后发现要账号密码 访问80端口&#xff0c;注册一个freelancer用…

关于二分法的理解(以JS为例)

算法介绍 基本概念 二分查找算法&#xff0c;又称折半查找算法&#xff0c;是一种在有序数组中查找特定元素的高效方法。它的核心思想是将数组分成两半&#xff0c;然后根据目标值与中间元素的比较结果来决定是继续在左半部分还是右半部分进行搜索。 工作原理 初始化&#…