T1:AcWing 4716. 进球

开哈希表存字母数量,一旦数目超过 ,就输出,水题

#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>using namespace std;int main()
{int n;cin >> n;unordered_map<string, int> hash;for(int i = 0; i < n; i ++ ){string str;cin >> str;hash[str] ++ ;if(hash[str] * 2 > n){cout << str << endl;break;}}return 0;
}

T2:AcWing 4717. 环形队伍

构造一个圈,考察构造题型

在这里将七种颜色用0  ~ 6七个数字表示,我们先取前四种颜色进行排列,也就是0,1,2,3四个数字,最后将剩余的 3 个数字排列在最后,保证了任取四个数字都是不同的,不管是取0,1,2,3四个数字的区间段或者是包含 3 个数字排列在最后的区间段,都可以保证任取的四个数字不同。

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;int main()
{string a = "ROYGBIV";int n;cin >> n;string res;for(int i = 0; i < n - 3; i ++ )//n - 3空出四个位置出来res += a[i % 4];for(int i = 0; i < 3; i ++ )res += a[i + 4];cout << res << endl;return 0;
}

经典的构造题,还有一个思路是先按顺序排7个剩下的最后四个随便排(这里的四个是题目限制)

算了,还是来代码看看吧

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;int main()
{string a = "ROYGBIV";int n;cin >> n;for(int i = 0; i < n / 7; i ++ )cout << a;a = "GBIVGBIV";for(int i = 0; i < n % 7; i ++ ) cout << a[i];cout << endl;return 0;
}

T3:AcWing 4718. 弹球线路

题目大意:在图当中一共有多少种不同的轨迹

首先,每个不同的轨迹必然存在一个格子在上下左右四个边界上

反过来看,对于一个在边界上的格子必然在只能在同一个轨迹上

反证法

我们可以先考虑证明对于一个在边界上的格子能在两个轨迹上

首先对于在边界的点都有一个入度和出度,且是唯一的出入度

我们可以观察到路径是无限的,但格子是有限的,所以说最后棋子的路径会变成一个循环,这样我们可以看出与论点矛盾,故得出对于一个在边界上的格子必然在只能在同一个轨迹上。

每一个边上的格子最多只会在一个路径当中

之后就是用连通块进行判断了,采用并查集判断共有几个集合,就是几条不同的路径。

#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 4000010;int n, m;
int p[N];int get(int x, int y)
{if(x == 1) return y;if(y == m) return m + x - 1;if(x == n) return m + n - 1 + m - y;if(y == 1) return m + n - 1 + m - 1 + n - x;return 0;
}int find(int x)
{if(p[x] != x) p[x] = find(p[x]);return p[x];
}int merge(int x, int y)
{x = find(x), y = find(y);p[x] = y;
}int main()
{cin >> n >> m;for(int i = 1; i < 2 * (n + m) - 4; i ++ ) p[i] = i;if(n > m) swap(n, m);for(int i = 1; i <= m; i ++ ){if(i <= n){merge(get(1, i), get(i, 1));merge(get(n, i), get(n - i + 1, 1));}else{merge(get(1, i), get(n, i - n + 1));merge(get(n, i), get(1, i - n + 1));}if(m - i + 1 <= n){merge(get(1, i), get(m - i + 1, m));merge(get(n, i), get(n - m + i, m));}else{merge(get(1, i), get(n, i + n - 1));merge(get(n, i), get(1, i + n - 1));}}int res = 0;for(int i = 1; i <= 2 * (n + m) - 4; i ++ )if(p[i] == i) res ++ ;cout << res << endl;
}

推公式法不是很会,在这里不做解释,想了解的读者可到弹球路径推公式查看

Acwing第77场周赛题解相关推荐

  1. acwing第72场周赛题解

    4624. 最小值: 题目链接: 4624. 最小值 - AcWing题库 给定两个整数 a,b,请你计算并输出 a,b,⌊a+b3⌋ 这三个整数中的最小整数.⌊ ⌋ 表示下取整,即忽略小数部分,只取 ...

  2. Acwing第37场周赛题解

    文章目录 A B C A 原题链接4296. 合适数对 方法: 题目的数据量给的不是很大,直接双循环,通过公式暴力求解就好了. #include<iostream> using names ...

  3. 【题解】AcWing 第73场周赛题解

    A. 数对 题目链接:AcWing 4704. 数对 没啥好说的,题目意思都给你写在脸上了.直接暴力 O ( N 2 ) \mathcal{O}(N^2) O(N2). #include <io ...

  4. 【题解】AcWing 第71场周赛题解

    A. 三个整数 题目链接:AcWing 4621. 三个整数 一眼题,由于保证了一定有解,所以只需要保证 x , y x,y x,y 尽量大, z z z 尽量小即可.即 x x x 取 b b b, ...

  5. AcWing第 70 场周赛题解

    目录 4618. 两个素数 4619. 减法操作 4620. 旅行 4618. 两个素数 暴力枚举判断即可 bool is_primes(int x) {for(int i=2;i<=x/i;i ...

  6. AcWing第 71 场周赛题解

    目录 4621. 三个整数 4622. 整数拆分 4623. 买糖果 4621. 三个整数 按要求枚举 void solve() {int a,b,c,d;cin>>a>>b& ...

  7. LeetCode第 227 场周赛题解

    LeetCode第 227 场周赛题解 检查数组是否经排序和轮转得到 原题链接 https://leetcode-cn.com/problems/check-if-array-is-sorted-an ...

  8. 20201015:力扣第210场周赛题解(上)

    力扣第210场周赛题解上 题目 思路与算法 代码实现 写在最后 题目 括号的最大嵌套深度 最大网络秩 思路与算法 第一题典型的栈数据结构求最大栈长的题目 第二题是一个经典的出入度题目,本题更加简单,统 ...

  9. Acwing第72场周赛+Leetcode第314场周赛

    Acwing第72场周赛 第一题:AcWing 4624. 最小值 分析:向下取整可以用到math.h头文件中的floor()函数,最后输出时套用两个min()函数求三个数的最小值即可. 代码: #i ...

最新文章

  1. flask创建mysql表_请教一下,flask-sqlalchemy 怎么动态创建数据表?
  2. layui日期与vue_详解Vue.js和layui日期控件冲突问题解决办法
  3. 【ARM】Tiny4412裸板编程之Chip ID
  4. 8051中断系统介绍
  5. Qt 有层级关系的qss样式,使用id定位到具体控件
  6. 正式发布!Azure Functions OpenAPI Extension
  7. leetcode509. 斐波那契数(矩阵快速幂)
  8. (十四)深入浅出TCPIP之初识UDP理解报文格式和交互流程
  9. java 调度etl_Easy Scheduler是一个工作流调度系统,主要解决数据研发ETL错综复杂的依赖关系...
  10. 基于visual Studio2013解决C语言竞赛题之1067间隔排序
  11. 《Linux命令行与shell脚本编程大全》第十二章 使用结构化命令
  12. Linux学习笔记 --网络配置及进程管理
  13. Atitit WatchService 使用和不能监控抓取到的解决 原因是生成速度太快,但处理速度慢,导致许多event 忽视了.. How to solu??? asyn to process
  14. 科立捷默认频率_科立捷电子产品技术参数.doc
  15. ECNU 梵高先生 3529 JAVA
  16. 计算机图形学复习笔记
  17. win10动态壁纸怎么设置_教程丨WIN10系统下设置固定IP或动态IP
  18. 编译原理实验二 自上而下的语法分析器(算术表达式)
  19. P1287 盒子与球题解【python】
  20. 东野圭吾梦幻花读后感_《梦幻花》小说在线阅读-东野圭吾

热门文章

  1. CameraX API 的 YUV_420_888 图像转换为NV21数据和Bitmap
  2. 新技术频现NAB Show Shanghai,科技引领未来生活
  3. Layui-开关按钮
  4. Android 动态权限申请过程
  5. 那些年配置过的工作环境
  6. POJ1013 称硬币
  7. live2dviewerex动态桌面汉化版
  8. Arduino + ESP32-C3 + TFT(1.8‘ ST7735S)基础平台(实验三)折腾 TFT_eSPI 库
  9. (一)反向传播算法理解 (Back-Propagation)
  10. 通用-浏览器书签整理使用