4题全为 :暴力/模拟

目录

我的账本

输入格式:

输出格式:

输入样例:

输出样例:

样例解释1

数据范围与提示

AC代码如下:

核酸检测扫码

输入格式:

输出格式:

输入样例:

输出样例:

AC代码如下:

辛苦的楼长

输入格式:

输出格式:

输入样例:

输出样例:

数据范围

AC代码如下:

等待做核酸

输入格式:

输出格式:

输入样例:

输出样例:

AC代码如下:


我的账本

当前疫情防控形势严峻,学校为了减少同学们因为吃饭造成的聚集,规定一个寝室每次派个代表出去买饭,小W寝室的6人(编号1-6)决定每次抽签派一个人去买6份同样的套餐。但是每次买完饭后立刻转账又比较麻烦,于是他们约定每次去买饭的人先垫付,等疫情结束后再统一结算。

现在给你宿舍封闭管理期间的n顿饭中每次买饭人的序号和每份饭的单价,问疫情结束后每个人关于饭钱的收支状况?

输入格式:

第一行一个正整数n,表示有n顿饭
下面n行,第i行两个正整数x,y表示第i顿饭由x去买饭,每份饭单价y元。

输出格式:

一行六个整数表示每个人欠别人的钱或者别人欠他的钱。
如果他欠了别人钱,输出负数。
如果别人欠他的钱,输出正数 。

输入样例:

3
1 5
2 10
3 5

输出样例:

10 40 10 -20 -20 -20

注意行末不能有多余空格

样例解释1

1号欠2号5元,不欠3号,4号、5号、6号各欠1号5元,故1号输出10
1号、3号欠2号5元,4号、5号、6号各欠2号10元,故2号输出40
3号与1号同理
4号欠1号5元,欠2号10元,欠3号5元,故4号为-20
5号、6号与4号同理

数据范围与提示

1≤n≤21
1≤x≤6
4≤y≤15

代码长度限制

16 KB

时间限制

1000 ms

内存限制

64 MB

AC代码如下:

#include <bits/stdc++.h>
#define buff                     \ios::sync_with_stdio(false); \cin.tie(0);                  \cout.tie(0)
#define int long long
using namespace std;
int n;
int s[100];
signed main()
{buff;cin >> n;for (int i = 1; i <= n; i++){int x, y;cin >> x >> y;for (int j = 1; j <= 6; j++){if (j == x)s[j] += 5*y;elses[j] -= y;}}for (int i = 1; i <= 6; i++){if(i != 6)cout << s[i] << ' ';elsecout << s[i] <<endl;}
}

核酸检测扫码

受疫情影响,小明同学现在每天需要下楼进行核酸检测。检测时,需要先用郑好办 APP 扫描二维码并填写个人信息以便统计核酸检测结果。

小明对于二维码的构造很是好奇。据了解,二维码中的黑白可以用来表示二进制中的 0/1 。且二维码的左上角,右上角,左下角有三个形态固定的特殊方阵,用做扫码时的位置标定。通过确定这三个特殊方阵的位置,进而确定整个二维码图形在照片中的位置。除了这三个特殊方阵外,其他位置的 0/1 取值由特定方法产生,表示扫描二维码后的交互动作内容。

小明现在重点关注二维码图像中的特殊方阵,想定位仅有的三个特殊方阵。为了简化问题,你可以将二维码视为n∗m的 01 方阵,将用于标定的特殊方阵视为 8×8 的方阵,其形态如下:

11111111
10000001
10111101
10111101
10111101
10111101
10000001
11111111

现在为了安全起见,二维码标定用的三个特殊矩阵不再位于原方阵的三个角上,而是随机的分布在原方阵内(仍然保证特殊方阵之间不会相互重叠),请你找出这三个特殊方阵的位置(每个特殊方阵左上角的坐标)。

输入格式:

第一行n m,表示二维码对应01矩阵的大小(0<n,m≤1000)
第二行起,给出n行m列的01矩阵

输出格式:

输出共 3 行,每行两个整数,分别代表一个特殊方阵左上角所位于的行编号和列编号(行编号从上向下数分别是 0, 1, 2, 3, ...;列编号从左向右数分别是 0, 1, 2, 3, ...)。三组坐标将行编号作为第一关键字,列编号作为第二关键字升序排序后输出。

输入样例:

20 20
11111111100111111111
10000001011010000001
10111101111110111101
10111101111110111101
10111101111110111101
10111101000010111101
10000001101110000001
11111111001111111111
11111000110000010111
11110000011100010010
00111011000101011101
00110011010001110001
11111111100010100000
10000001110101001101
10111101010100000101
10111101010111100000
10111101000011111001
10111101001111001001
10000001111100000011
11111111110110001001

输出样例:

0 0
0 12
12 0

代码长度限制

16 KB

时间限制

1000 ms

内存限制

128 MB

AC代码如下:

#include <bits/stdc++.h>
#define buff                     \ios::sync_with_stdio(false); \cin.tie(0);                  \cout.tie(0)
//#define int long long
using namespace std;
int n, m;
char s[1009][1009];
char q[8][8] = {{'1', '1', '1', '1', '1', '1', '1', '1'}, {'1', '0', '0', '0', '0', '0', '0', '1'}, {'1', '0', '1', '1', '1', '1', '0', '1'}, {'1', '0', '1', '1', '1', '1', '0', '1'}, {'1', '0', '1', '1', '1', '1', '0', '1'}, {'1', '0', '1', '1', '1', '1', '0', '1'}, {'1', '0', '0', '0', '0', '0', '0', '1'}, {'1', '1', '1', '1', '1', '1', '1', '1'}};
struct nn
{int x, y;
} ans[10009];
int cnt = 0;
bool check(int x, int y)
{if ((x + 7 > n) || (y + 7) > m)return false;for (int i = x, I = 0; i <= x + 7; i++, I++){for (int j = y, J = 0; j <= y + 7; j++, J++){if (s[i][j] != q[I][J])return false;}}return true;
}
bool cmp(nn a, nn b)
{if (a.x != b.x)return a.x < b.x;elsereturn a.y < b.y;
}
int main()
{buff;cin >> n >> m;for (int i = 0; i < n; i++)cin >> s[i];for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (check(i, j)){ans[++cnt].x = i;ans[cnt].y = j;}}}sort(ans + 1, ans + 1 + cnt, cmp);for (int i = 1; i <= 3; i++){cout << ans[i].x << ' ' << ans[i].y << "\n";}
}

辛苦的楼长

疫情防控期间,要尽最大努力的保障同学们饮食!楼长们正在统计订饭的人数,一共是三个园区的统计表放在了一个文档里,有一些粗心的同学没有分清园区,错误的将自己的信息填到了其他园区的统计表上。身为帮助楼长的热心同学,你需要写一个程序将所有同学分到正确的园区并统计各个园区需要准备的早饭、午饭、晚饭的份数。

输入格式:

三组数据,每一组代表错误的园区的统计表。

每一组数据第一行是这个统计表上的信息数目n。
该组数据第2行到第n+1行是具体的信息,分别是:宿舍楼(格式为“园区(拼音,松:song,菊:jv,柳:liu)+楼号(数字)”中间无空格,例如“jv4”就表示菊园四号楼),宿舍号,早饭订饭数量,午饭订饭数量,晚饭订饭数量(某个寝室的信息只提交一次,不会重复)。

输出格式:

三组数据,分别代表三个园区的数据状况,按照“松-菊-柳”的顺序输出。

每组数据第一行有四个数,分别是该园区实际订餐的寝室数目,该园区总共订的早餐数目,午餐数目,晚餐数目。

然后输出该园区的所有正确的订单信息,排序输出(保证楼号非递减输出,若是楼号相同的订单则按找寝室号递增输出)。

输入样例:

在这里给出一组输入。例如:

4
song6 321 1 2 1
jv4 422 6 6 6
liu2 211 4 5 3
jv1 331 1 5 4
1
song2 333 6 6 6
1
jv6 612 2 3 3

输出样例:

2 7 8 7
song2 333 6 6 6
song6 321 1 2 1
3 9 14 13
jv1 331 1 5 4
jv4 422 6 6 6
jv6 612 2 3 3
1 4 5 3
liu2 211 4 5 3

数据范围

楼号保证在范围[0-9],房号范围为(100~999),订餐数目总数小于1000,每个园区订餐信息不超过20条。

代码长度限制

16 KB

时间限制

1000 ms

内存限制

64 MB

AC代码如下:

#include <bits/stdc++.h>
#define buff                     \ios::sync_with_stdio(false); \cin.tie(0);                  \cout.tie(0)
#define endl "\n"
using namespace std;
struct nn
{string yuan;int num;int a, b, c;
} song[1000], jv[1000], liu[1000]; // 1 , 2 , 3
int cnts = 0, cntj = 0, cntl = 0;
struct mm
{int qs = 0;int zao = 0;int wu = 0;int wan = 0;
} s[10];
bool cmp(nn x, nn y)
{if (x.yuan != y.yuan)return x.yuan < y.yuan;elsereturn x.num < y.num;
}
int main()
{buff;int t = 3;while (t--){int n;cin >> n;for (int i = 1; i <= n; i++){string yy;int numm, x, y, z;cin >> yy >> numm >> x >> y >> z;if (yy.size() == 5) // 1{song[++cnts].yuan = yy;song[cnts].num = numm;song[cnts].a = x;song[cnts].b = y;song[cnts].c = z;s[1].qs++;s[1].zao += x;s[1].wu += y;s[1].wan += z;}else if (yy.size() == 3) // 2{jv[++cntj].yuan = yy;jv[cntj].num = numm;jv[cntj].a = x;jv[cntj].b = y;jv[cntj].c = z;s[2].qs++;s[2].zao += x;s[2].wu += y;s[2].wan += z;}else // 3{liu[++cntl].yuan = yy;liu[cntl].num = numm;liu[cntl].a = x;liu[cntl].b = y;liu[cntl].c = z;s[3].qs++;s[3].zao += x;s[3].wu += y;s[3].wan += z;}}}sort(song + 1, song + 1 + cnts, cmp);sort(jv + 1, jv + 1 + cntj, cmp);sort(liu + 1, liu + 1 + cntl, cmp);for (int i = 1; i <= 3; i++){cout << s[i].qs << " " << s[i].zao << ' ' << s[i].wu << ' ' << s[i].wan << endl;if (i == 1){for (int i = 1; i <= cnts; i++){cout << song[i].yuan << ' ' << song[i].num << ' ' << song[i].a << ' ' << song[i].b << ' ' << song[i].c << endl;}}else if (i == 2){for (int i = 1; i <= cntj; i++){cout << jv[i].yuan << ' ' << jv[i].num << ' ' << jv[i].a << ' ' << jv[i].b << ' ' << jv[i].c << endl;}}else{for (int i = 1; i <= cntl; i++){cout << liu[i].yuan << ' ' << liu[i].num << ' ' << liu[i].a << ' ' << liu[i].b << ' ' << liu[i].c << endl;}}}
}

等待做核酸

最近新一轮新冠疫情来势汹汹,形势极为严峻,为了保障全体师生的安全,在校师生需要每天做核酸。每天医护人员到达的时间都是不固定的,为了简化问题,假设医护人员到达的时间是整分钟(如10:05:00),并且知道医护人员到达时间的区间,医护人员在这个区间的任意时刻到达的概率相同,核酸检测结束的时间为23:59。在校学生妙酱每天都会按时做核酸,并且妙酱出来做核酸的时间也为整分钟,妙酱想知道自己等多久可以做核酸。由于开始做核酸的时间是不固定的,请你求出妙酱做核酸等待时间(分钟)的期望,忽略妙酱排队等待的时间。

输入格式:

第一行医护人员到达时间的区间(hh:mm-hh:mm)。

第二行cc出来做核酸的时间(hh:mm)。

输入的时间均在一天内。

输出格式:

等待时间(分钟)的期望值,保留两位小数。

输入样例:

10:00-10:29
10:15

输出样例:

3.50

代码长度限制

16 KB

时间限制

1000 ms

内存限制

64 MB

AC代码如下:

#include <bits/stdc++.h>
#define buff                     \ios::sync_with_stdio(false); \cin.tie(0);                  \cout.tie(0)
#define endl "\n"
using namespace std;
int fh, fm, eh, em;
int myh, mym;
int main()
{scanf("%d:%d-%d:%d", &fh, &fm, &eh, &em);scanf("%d:%d", &myh, &mym);int fym = fh * 60 + fm;int eym = eh * 60 + em;double ans = 0;int end = 23 * 60 + 59;int my = myh * 60 + mym;// if(my >= end)// {//     cout <<// }for (int i = fym; i <= eym; i++){if (i >= end)break;if (i < my)continue;else{ans += i - my;}}printf("%.2lf\n", ans / (eym - fym + 1));
}

“战疫杯”大学生程序设计在线邀请赛(1)相关推荐

  1. 郑州大学“战疫杯”大学生程序设计在线邀请赛(1)题解(Python版本)

    "战疫杯"大学生程序设计在线邀请赛(1)题解 1. 我的账本 简单模拟题: 用一个数组 a ,来统计每个人钱的情况 对于每次买饭的操作,如果1号买饭,1号对应的数也就是a[1] + ...

  2. “战疫杯”大学生程序设计在线邀请赛(6)题解

    "战疫杯"大学生程序设计在线邀请赛(6)题解 最后一场,第二题没做出来,想复杂了,可惜┭┮﹏┭┮ 1. 寝室分西瓜 分这些西瓜,每份是偶数,那么至少是12才够6个人分成最小的2,所 ...

  3. 郑州大学“战疫杯”大学生程序设计在线邀请赛(2)(C++题解+详细思路)2022年5月10日

    目录 1 公司的Logo 2 解封日期 3 语音设备是否正常? 1 公司的Logo 为了感谢河南省八六三软件有限公司对战疫杯ACM在线程序设计竞赛的大力支持,小Y决定为公司制作个logo. logo通 ...

  4. 郑州大学“战疫杯”大学生程序设计在线邀请赛(1)(C++题解+详细思路)2022年5月9日

    目录 1 我的账本 2 核酸检测扫码 3 辛苦的楼长 4 等待做核酸 1 我的账本 当前疫情防控形势严峻,学校为了减少同学们因为吃饭造成的聚集,规定一个寝室每次派个代表出去买饭,小W寝室的6人(编号1 ...

  5. 郑州大学“战疫杯”大学生程序设计在线邀请赛(5)(C++题解+详细思路)2022年5月13日

    目录 1 感染源在哪里 2 病毒序列 3 奇奇怪怪的形状 1 感染源在哪里 通过最近的一次核酸检测,疫情防控小组检测到了若干个阳性人员,通过调取行程码数据,防控小组获取到了这些病例曾经去过的地点.现在 ...

  6. “战疫杯”大学生程序设计在线邀请赛(2)

    1 公司的Logo #include<bits/stdc++.h> using namespace std; char g[50][50]; signed main() {for(int ...

  7. “战疫杯”在线邀请赛——第五场题解

    "战疫杯"在线邀请赛--第五场题解 题目详情 - 1 感染源在哪里 (pintia.cn) 通过最近的一次核酸检测,疫情防控小组检测到了若干个阳性人员,通过调取行程码数据,防控小组 ...

  8. 2020 年 “联想杯”全国高校程序设计在线邀请赛H. Hay Mower

    2020 年 "联想杯"全国高校程序设计在线邀请赛H. Hay Mower 题意:n × m 网格图,每个格子内的草每秒增加 ai,j,接下 来 k 个操作,每个操作会在某个时间把 ...

  9. 2020 年 “联想杯”全国高校程序设计在线邀请赛暨第三届上海理工大学程序设计竞赛题解

    2020 年 "联想杯"全国高校程序设计在线邀请赛暨第三届上海理工大学程序设计竞赛题解 萌新又来写题解啦 原题链接 (不是按照题号顺序来的QWQ) L. Lottery Ticke ...

最新文章

  1. 从头开始学习Unity着色器
  2. Linux下Nginx编译安装后的开机自启动设置
  3. 微信OPENID授权方法
  4. android 如何将电话簿SDN数字和其他普通的数字混合在一起?
  5. LaTex 实数集R
  6. threading模块使用_threading简介(创建多线程的两种方法)★
  7. Postman获取App端接口
  8. linux下安装mysql57_Linux——CentOS7之mysql5.7安装与配置
  9. php提交后清楚表单缓存,PHP提交表单后如何控制缓存 | 学步园
  10. leetcode刷题 74.搜索二维矩阵
  11. 正则只能出现特定字符_python正则表达式的简单使用总结
  12. 计算图是个什么东西?一大堆的函数用法笔记
  13. C++socket编程(三):3.1 TCP/IP协议特点
  14. IPv6网络流量分析及性能监控
  15. AI、大数据时代,智能安防在智慧城市建设中的发展与应用趋势
  16. (修改完善)SpringBoot+Mybatis-Plus使用webSocket实现一对一聊天
  17. poj 1718 River Crossing
  18. Java微信开发_Exception_03_errcode:48001 errmsg:api unauthorized hint
  19. PCB 布局布线小技巧
  20. 关于百度网盘提取码验证失败问题的猜想

热门文章

  1. AR眼镜新秀雷鸟创新,究竟能飞多远?
  2. 华为5gcpe虚拟服务器,你能用5G网络干什么? 华为5G CPE Pro告诉你
  3. 【知识蒸馏】使用CoatNet蒸馏ResNet图像分类模型
  4. MAC挂载NTFS硬盘
  5. 【幻灯片动画制作软件】Focusky教程 | 如何删除云作品?
  6. std::reverse 用法
  7. js 格式化日期yyyy-MM-dd hh:mm:ss
  8. 香港AfterShip 爱客科技(深圳)有限公司
  9. android方框验证码,Android自定义方框EditText注册验证码
  10. 【Keil5 C51】AT89C52 数码管的动态显示