The 2021 Sichuan Provincial Collegiate Programming Contest

The 2021 Sichuan Provincial Collegiate Programming Contest

The 2021 Sichuan Provincial Collegiate Programming Contest

在这里插入图片描述

A. Chuanpai

题意:给出总值k,将k分成x+y=k,x和y均小于7,最多分成多少组。

思路:暴力跑一遍,注意判重和xy的范围即可。

AC code:

void solve() {int k; cin >> k;int cnt = 0;for (int i = 1; i <= k / 2; i ++) {if (i < 7 && k - i < 7) {cnt ++;}} cout << cnt << endl;
}

B. Hotpot

题意:

有0到n-1名游客围成一圈吃火锅,火锅配料有k种,第i名游客喜欢第 a i a_i ai种配料,最初每个游客幸福值为0,锅为空;

游客顺序下m步旗,由0->n-1…0->n-1的顺序循环进行操作,当轮到某个游客时:

  • 锅中有食材 a i a_i ai,全吃掉获得1幸福值
  • 否则幸福值不变,然后下入喜欢的食材

计算m步之后每位游客的幸福值

思路:

首先喜欢同一种食材的所有游客的幸福值操作是独立的,需要单独进行操作:

  • 当喜欢同一种食材的人为奇数时,每2*n次操作为一轮,一轮后该食材的每个人幸福值+1;
  • 为偶数时,n次操作为一轮,每轮中只有喜欢该食材的偶数位的幸福值+1;
  • 统计m轮次中可以进行完整的几轮操作,然后对于余数进行单独操作幸福值;

AC code:

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
#define db double
#define pb push_back
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;typedef long long LL;
typedef pair<char, int> PCI;
typedef pair<int, int> PII;
const int N = 2e5+10, M = 2001;
const int INF = 0x3f3f3f3f3f, MOD = 998244353;
int T;
int cnt[N], a[N];
vector<int> g[N];void solve() {int n, k, m; cin >> n >> k >> m;for (int i = 1; i <= k; i ++) g[i].clear();for (int i = 0; i < n; i ++) {cin >> a[i];cnt[i] = 0;g[a[i]].push_back(i);}for (int i = 1; i <= k; i ++) {int now = g[i].size();if (now == 0) continue;if (now & 1) {int u = m / (2 * n), v = m % (2 * n);for (auto x : g[i]) cnt[x] += u;int pos = 0;if (v >= n) {for (auto x : g[i]) {if (pos) cnt[x] += 1;pos ^= 1;}}v %= n;for (auto x : g[i]) {if (x >= v) break;if (pos) cnt[x] += 1;pos ^= 1;}} else {int u = m / n, v = m % n;int pos = 0;for (auto x : g[i]) {if (pos) cnt[x] += u;pos ^= 1;}pos = 0;for (auto x : g[i]) {if (x >= v) break;if (pos) cnt[x] += 1;pos ^= 1;}}}cout << cnt[0];for (int i = 1; i < n; i ++) cout << ' ' << cnt[i];cout << endl;
}signed main() {fast();T = 1;cin >> T;while (T --) {solve();}return 0;
}

D. Rock Paper Scissors

题意:明牌石头剪刀布,B先出牌,D后出牌,B胜总分-1, D胜总分+1,双方均以最优操作,最后得分为多少。

思路:由于B先手,D总能找出最优操作,能胜则胜,否则打平,最后无牌下才会让B胜,模拟这个过程即可。

AC code:

void solve() {int br, bp, bs, dr, dp, ds; cin >> br >> bp >> bs >> dr >> dp >> ds;int cnt = 0;if (br) {if (dp >= br) dp -= br, cnt += br, br = 0;else br -= dp, cnt += dp, dp = 0;if (dr >= br) dr -= br, br = 0;else br -= dr, dr = 0;if (ds >= br) ds -= br, cnt -= br, br = 0;else br -= ds, cnt -= ds, ds = 0;}if (bp) {if (ds >= bp) ds -= bp, cnt += bp, bp = 0;else bp -= ds, cnt += ds, ds = 0;if (dp >= bp) dp -= bp, bp = 0;else bp -= dp, dp = 0;if (dr >= bp) dr -= bp, cnt -= bp, bp = 0;else bp -= dr, cnt -= dr, dr = 0; }if (bs) {if (dr >= bs) dr -= bs, cnt += bs, bs = 0;else bs -= dr, cnt += dr, dr = 0;if (ds >= bs) ds -= bs, bs = 0;else bs -= ds, ds = 0;if (dp >= bs) dp -= bs, cnt -= bs, bs = 0;else bs -= dp, cnt -= dp, dp = 0;}cout << cnt << endl;
}

H. Nihongo wa Muzukashii Desu

题意:略。

思路:按照样例模拟更换字符串即可,注意读题,“ikimasu"要变成"itte”;

AC code:

void solve() {int n; cin >> n;map<string, string> mp;mp["chimasu"] = "tte";mp["rimasu"] = "tte";mp["mimasu"] = "nde";mp["bimasu"] = "nde";mp["nimasu"] = "nde";mp["kimasu"] = "ite";mp["gimasu"] = "ide";mp["shimasu"] = "shite";while (n --) {string s; cin >> s;if (s == "ikimasu") {cout <<"itte" << endl;continue;}for (auto [x, y] : mp) {if (s.find(x) != s.npos) {int t = s.find(x);s.replace(t, x.size(), y);cout << s << endl;break;}}}
}

K. K-skip Permutation

题意:略。

思路:循环标记判断即可,注意输出格式。

AC code:

void solve() {int n, k; cin >> n >> k;vector<int> st(n + 1, 0), ans;for (int i = 1; i <= n; i ++) {if (!st[i]) {for (int j = i; j <= n; j += k) {if (!st[j]) ans.pb(j), st[j] = 1;else break;}}}cout << ans[0];for (int i = 1; i < ans.size(); i ++) cout << ' ' << ans[i];cout << endl;
}

L. Spicy Restaurant

题意:

在无向图n个火锅店的无向图中,第i个餐厅的辣度为 w i w_i wi,现在给出无向图的m条边,有q名游客想去吃火锅,现在给出每个人当前的位置和他们能承受的最大辣度,计算每个游客和能接受的辣度餐厅之间的最短距离。

思路:

辣度的范围很小,对同一种辣度的所有点进行BFS寻找靠近该辣度最近的其他店,用一个二维数组来记录某个辣度到某个点的最短距离。

AC code:

#include<bits/stdc++.h>
#define endl '\n'
#define db double
#define pb push_back
#define fast() ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;typedef long long LL;
typedef pair<char, int> PCI;
typedef pair<int, int> PII;
const int N = 1e5+10, M = 2001;
const int INF = 0x3f3f3f3f3f, MOD = 998244353;
int T;
int n, m, q;
int w[N];
vector<vector<int>> dis(101, vector<int> (N, INF));
vector<int> g[N];
map<int, vector<int>> mp;void solve() {cin >> n >> m >> q;for (int i = 1; i <= n; i ++) {cin >> w[i];mp[w[i]].push_back(i);dis[w[i]][i] = 0;}while (m --) {int u, v; cin >> u >> v;g[u].push_back(v);g[v].push_back(u);}for (int i = 1; i <= 100; i ++) {queue<int> q;for (auto x : mp[i]) q.push(x);vector<int> st(n + 1, 0);while (!q.empty()) {auto t = q.front();st[t] = 1;q.pop();for (auto nex : g[t]) {dis[i][nex] = min(dis[i][t] + 1, dis[i][nex]);if (!st[nex]) q.push(nex);}}}while (q --) {int p, a; cin >> p >> a;int ans = INF;for (int i = 1; i <= a; i ++) {ans = min(ans, dis[i][p]);}cout << (ans != INF ? ans : -1) << endl;}
}int main() {fast();T = 1;//cin >> T;while (T --) {solve();}return 0;
}

M. True Story

题意:略;

思路:距离和每个人的速度是一定的,找到间隔时间最大的时间段看是否能到达即可;

AC code:

void solve() {int n, k, x, po; cin >> n >> k >> x >> po;for (int i = 1; i <= n; i ++) cin >> s[i];for (int i = 1; i <= k; i ++) cin >> t[i];for (int i = 1; i <= k; i ++) cin >> p[i];vector<int> late;late.push_back(po);for (int i = 1; i <= k; i ++) late.push_back(p[i] - t[i]);sort(late.begin(), late.end(), greater<int>());int ans = 0, mx = late[0];for (int i = 1; i <= n; i ++) {if (mx * s[i] >= x) ans ++;}cout << ans << endl;
}

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

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

相关文章

【工具】Office/WPS 插件|AI 赋能自动化生成 PPT 插件测评 —— 必优科技 ChatPPT

本文参加百度的有奖征文活动&#xff0c;更主要的也是借此机会去体验一下 AI 生成 PPT 的产品的现状&#xff0c;因此本文是设身处地从用户的角度去体验、使用这个产品&#xff0c;并反馈最真实的建议和意见&#xff0c;除了明确该产品的优点之外&#xff0c;也发现了不少缺陷和…

实战Java虚拟机-基础篇

JVM的组成 一、自动垃圾回收 1.Java的内存管理 Java中为了简化对象的释放&#xff0c;引入了自动的垃圾回收&#xff08;Garbage Collection简称GC&#xff09;机制。通过垃圾回收器来对不再使用的对象完成自动的回收&#xff0c;垃圾回收器主要负责对堆上的内存进行回收。其…

vue项目基于WebRTC实现一对一音视频通话

效果 前端代码 <template><div class"flex items-center flex-col text-center p-12 h-screen"><div class"relative h-full mb-4 fBox"><video id"localVideo"></video><video id"remoteVideo">…

【MQTT】服务端、客户端工具使用记录

目录 一、服务端 1.1 下载 1.2 相关命令 &#xff08;1&#xff09;启动 &#xff08;2&#xff09;关闭 &#xff08;3&#xff09;修改用户名和密码 1.3 后台管理 &#xff08;1&#xff09;MQTT配置 &#xff08;2&#xff09;集群概览 &#xff08;3&#xff09;…

如何使用SkyWalking收集分析分布式系统的追踪数据

Apache SkyWalking 是一个开源的观测性工具&#xff0c;用于收集、分析和展示分布式系统的追踪数据。SkyWalking 支持多种语言的追踪&#xff0c;包括但不限于 Java、.NET、Node.js 等。以下是使用 SkyWalking 工具实现数据采集的详细步骤&#xff1a; 1. 下载和安装 SkyWalkin…

数据挖掘算法原理与实践:决策树

第2关&#xff1a;决策树算法原理 任务描述 本关任务&#xff1a;根据本关所学知识&#xff0c;完成 calcInfoGain 函数。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 信息熵&#xff1b;条件熵&#xff1b;信息增益。 信息熵 信息是个很抽象的概念。…

风电厂数字孪生3D数据可视化交互展示构筑智慧化电厂管理体系

随着智慧电厂成为未来电力企业发展的必然趋势&#xff0c;深圳华锐视点紧跟时代步伐&#xff0c;引领技术革新&#xff0c;推出了能源3D可视化智慧管理系统。该系统以企业现有的数字化、信息化建设为基础&#xff0c;融合云平台、大数据、物联网、移动互联、机器人、VR虚拟现实…

Android 右键 new AIDL 无法选择

提示 (AIDL File)Requires setting the buildFeatures.aidl to true in the build file&#xff09; 解决方式&#xff1a; 在app的build.gradl中 adnroid{} 添加&#xff1a; buildFeatures{aidl true}

Oracle-一次TX行锁堵塞事件

问题背景&#xff1a; 接用户问题报障&#xff0c;应用服务出现大量会话堆积现象&#xff0c;数据库锁堵塞严重&#xff0c;需要协助进行问题定位和排除。 问题分析&#xff1a; 登录到数据库服务器上&#xff0c;首先查看一下数据库当前的等待事件情况&#xff0c;通过gv$ses…

教你零成本,免费使用comfyui复现remini爆火的黏土风格转绘(附完整教程)

在五一假期期间,一款名为Remini的AI照片编辑软件在小红书上迅速走红,其独特的“丑萌”黏土风格滤镜深受广大博主和用户的喜爱,引发了一波热潮,让人们玩得不亦乐乎。 Remini软件提供的这种视觉效果虽然看起来有点“丑萌”特效,然而,正是这种独树一帜的画风,使得Remini迅速…

【Django学习笔记(十)】Django的创建与运行

Django的创建与运行 前言正文1、安装Django2、创建项目2.1 基于终端创建项目2.2 基于Pycharm创建项目2.3 两种方式对比 3、默认项目文件介绍4、APP5、启动运行Django5.1 激活App5.2 编写URL和视图函数对应关系5.3 启动Django项目5.3.1 命令行启动5.3.2 Pycharm启动5.3.3 views.…

C++缺省参数、函数重载、引用

一、缺省参数 1.1缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实参则采用该形参的缺省值&#xff0c;否则使用指定的实参。 void func(int n 0) {cout << n << endl; }int main() {func();func…

【经验01】spark执行离线任务的一些坑

项目背景: 目前使用spark跑大体量的数据,效率还是挺高的,机器多,120多台的hadoop集群,还是相当的给力的。数据大概有10T的量。 最近在出月报数据的时候发现有一个任务节点一直跑不过去,已经超过失败次数的阈值,报警了。 预警很让人头疼,不能上班摸鱼了。 经过分析发现…

Apache Knox 2.0.0使用

目录 介绍 使用 gateway-site.xml users.ldif my_hdfs.xml my_yarn.xml 其它 介绍 The Apache Knox Gateway is a system that provides a single point of authentication and access for Apache Hadoop services in a cluster. The goal is to simplify Hadoop securit…

LANCET:常见统计使用错误+规避建议!

国际顶级医学期刊《柳叶刀》&#xff08;The Lancet&#xff09;最近发表了一篇实用的通讯文章&#xff08;Correspondence&#xff09;&#xff0c;该篇Correspondence基于过去3年内对提交给《柳叶刀》的1000多篇manuscripts进行审核的经验&#xff0c;总结了科研report中常见…

【系统架构师】-UML-用例图(Use Case)

1、概述 用于表示系统功能需求&#xff0c;以及应用程序与用户或者与其他应用程序之间的交互关系。 2、组成 参与者&#xff08;Actors&#xff09;&#xff1a;与系统交互的用户或其他系统。用一个人形图标表示。用例&#xff08;Use Cases&#xff09;&#xff1a;系统需要…

2024年第九届数维杯数学建模A题思路分享

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

汇凯金业:黄金价格波动的原因是什么

黄金价格波动的原因通常是多方面的&#xff0c;包括但不限于&#xff1a; 经济数据&#xff1a;比如就业数据、通胀率、GDP增长率等对经济状况的指标不及预期&#xff0c;可能会增加黄金作为避险资产的吸引力。 货币政策&#xff1a;央行的利率决策、货币供应量的变化、量化宽…

当前主机使用的磁盘以及带宽情况

今日看到有用户在论坛留言反馈他买了Hostease Linux虚拟主机&#xff0c;想要查看当前主机使用的磁盘以及带宽情况&#xff0c;但是不知道如何查看。因为这边也是对于Hostease的虚拟主机产品是有所了解的&#xff0c;知道他们都是默认带管理面板的操做起来很方便的&#xff0c;…

基于FPGA的数字信号处理(10)--定点数的舍入模式(1)四舍五入round

1、前言 将浮点数定量化为定点数时&#xff0c;有一个避不开的问题&#xff1a;某些小数是无法用有限个数的2进制数来表示的。比如&#xff1a; 0.5(D) 0.1(B) 0.1(D) 0.0001100110011001~~~~(B) 可以看到0.5是可以精准表示的&#xff0c;但是0.1却不行。原因是整数是离散的…