Codeforce Global Round 9 (ABC)

A. Sign Flipping

题意简述

输入

5
3
-2 4 3
5
1 1 1 1 1
5
-2 4 7 -6 4
9
9 7 -4 -2 1 -3 9 -4 -5
9
-4 1 9 4 8 9 5 1 -9

输出

-2 -4 3
1 1 1 1 1
-2 -4 7 -6 4
-9 -7 -4 2 1 -3 -9 -4 -5
4 -1 -9 -4 -8 -9 -5 -1 9

思路

这道题主要就靠一下两个关系:

  1. 正数 − - − 负数 = = = 正数
  2. 负数 − - − 正数 = = = 负数

根据这两个式子,我们就可知这道题的构造方向:把原数组中的数变成一正一负交替出现即可

代码

#include <bits/stdc++.h>using namespace std;const int N = 110;int n;
int a[N];void solve()                   //这里我们就把奇数位数的变成正数,偶数位数的变成负数
{for(int i = 1; i <= n; i++){if(i & 1)a[i] = abs(a[i]);elsea[i] = -abs(a[i]);}
}int main()
{int t;cin >> t;while(t--){cin >> n;for(int i = 1; i <= n; i++)cin >> a[i];solve();for(int i = 1; i <= n; i++)cout << a[i] << ' ';}return 0;
}

B. Neighbor Grid

题意简述

1. 题意

2. 输入输出格式

3. 数据范围

输入

5
3 4
0 0 0 0
0 1 0 0
0 0 0 0
2 2
3 0
0 0
2 2
0 0
0 0
2 3
0 0 0
0 4 0
4 4
0 0 0 0
0 2 0 1
0 0 0 0
0 0 0 0

输出

YES
0 0 0 0
0 1 1 0
0 0 0 0
NO
YES
0 0
0 0
NO
YES
0 1 0 0
1 4 2 1
0 2 0 0
1 3 1 0

思路

这道题暴力的话必爆TLE,仔细观察的话发现这个本质上还是一道构造题。

首先,我们知道角上有两个相邻位置,边上有三个相邻位置,中间有四个相邻位置。

那么我们就知道每个矩阵必有一个一定完美的矩阵如下

2 3 3 ... 3 3 2
3 4 4 ... 4 4 3
3 4 4 ... 4 4 3
...............
...............
...............
3 4 4 ... 4 4 3
3 4 4 ... 4 4 3
2 3 3 ... 3 3 2

那么我们就可以在输入前先初始化好这个完美的矩阵,再在输入中比较每个点值的大小。如果输入的比我们的初始化的值要大,就说明这个点存在矛盾,这个不能做到完美;如果输入的比我们初始化的要小,我们就可以不断给它加一直到它和我们初始化的数组一样。

最后输出的就是我们初始化的数组

代码

#include <bits/stdc++.h>using namespace std;const int N = 310;int m1[N][N];
int t;
int n, m;int main()
{cin >> t;while(t--){cin >> n >> m;for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++){if(i == 1 && j == 1 || i == n && j == 1 || i == 1 && j == m || i == n && j == m)m1[i][j] = 2;else if(i == 1 || i == n || j == 1 || j == m)m1[i][j] = 3;elsem1[i][j] = 4;}bool ok = true;for(int i = 1; i <= n; i++)for(int j = 1; j <= m; j++){int tmp;cin >> tmp;if(tmp > m1[i][j])ok = false;}if(ok){puts("YES");for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++)cout << m1[i][j] << ' ';puts("");}                }elseputs("NO");}return 0;
}

C. Element Extermination

题意简述

输入

4
3
1 2 3
4
3 1 2 4
3
2 3 1
6
2 4 6 1 3 5

输出

YES
YES
NO
YES

思路

这道题是一道思维题,虽然我一开始的思路错了QAQ

我们可以逆着去推断这道题。

如果成功的话,最后只会剩下一个数,这之前必有 a i < a i + 1 a_i \ < \ a_{i + 1} ai​ < ai+1​。以此为界,我们就可以把数组分成左右两边。

左边那部分由于 a i < a i + 1 a_i \,< \, a_{i + 1} ai​<ai+1​的存在,可知最后得到的 a i a_i ai​必不小于第一个数。

同理可得右边那部分最后得到的 a i + 1 a_{i + 1} ai+1​必不大于最后一个数。

由此可得如果 a 1 > a n a_1 \ > \ a_n a1​ > an​,则必不可能消除到只剩下最后一个数。

接着反向猜想,如果 a 1 < a n a_1 \ < \ a_n a1​ < an​,我们能否消除到只剩下最后一个数呢?

答案是可以的。

证明:我们先找到数组中值最大的那个点,把它一直向左“推”,删除掉所有在它和 a 1 a_1 a1​之间的点。当它与 a 1 a_1 a1​比较大小后,我们舍弃掉这个最大的数,再寻找剩下的数组中最大的那个数,重复和一开始一样的动作。我们重复此类操作直到 a n a_n an​成为数组中最大的那个数。从 a n a_n an​开始往左推就可以最后只剩下 a 1 a_1 a1​。得证!

代码

#include <bits/stdc++.h>using namespace std;const int N = 3e5 + 7;int a[N];
int t;
int n;int main()
{cin >> t;while(t--){cin >> n;for(int i = 1; i <= n; i++)cin >> a[i];if(a[1] < a[n])puts("YES");elseputs("NO");}return 0;
}

文本翻译均来自洛谷

Codeforce Global Round 9 ABC题相关推荐

  1. Codeforces Global Round 1 E 题【思维】

    传送门 题意: 给定n个数的两个数组, c数组和t数组, 每次可以选择一个i(1 < i < n) 使得c[i] = c[i+1] + c[i-1] - c[i]; 问能不能再进行若干次这 ...

  2. Codeforces Global Round 19 ABC

    Problem - A - Codeforces 题目大意:给定一个长度为n的数组a,我们可以从下标1~n-1中选取一个数字flag从而分成两段,并且对这[1,flag] [flag,n]两区间的数值 ...

  3. Codeforces Global Round 4-D. Prime Graph(伯特兰-切比雪夫定理)

    题目:Codeforces Global Round 4-D. Prime Graph 题意:给出n(顶点的个数),要求所得图满足: 1.无平行边和自环 2.边的总数是个质数 3.每个点的度(也就是点 ...

  4. codeforces global round 23

    constest :codeforces global round 23 contest time:2022.10.16 contest grade: 2800 contest rating chan ...

  5. Codeforces Global Round 1 晕阙记

    Codeforces Global Round 1 晕阙记 我做这场比赛的时候晕得要死.做这三道题做太久了,rating涨不起来啊! A 如果愿意的话你可以看做是膜2意义下的运算,写快速幂等各种膜运算 ...

  6. Codeforces Global Round 3

    Codeforces Global Round 3 A. Another One Bites The Dust 有若干个a,有若干个b,有若干个ab.你现在要把这些串拼成一个串,使得任意两个相邻的位置 ...

  7. Codeforces Global Round 14 F. Phoenix and Earthquake 思维 + 并查集

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点,mmm条边,限制xxx,每个点都有沥青aia_iai​,定义合并两个点即两点之间有边且au+av≥xa_u+a_v\ge xau​+av​≥x ...

  8. Codeforces Global Round 1

    Codeforces Global Round 1 题解:The Editorial of the First Codeforces Global Round A:其实mod 2计算一下就行了 B:删 ...

  9. 2022数学建模国赛ABC题思路

    2022年数学建模国赛ABC题思路 a题:添加链接描述 b题: 添加链接描述 c题: 基础版+进阶版 c题:进阶版 e题: 添加链接描述

  10. 2023年五一数学建模竞赛ABC题思路资料汇总贴

    下文包含:2023五一数学建模竞赛(五一赛)ABC题思路解析+代码+参考论文等及如何准备数学建模竞赛 C君将会第一时间发布选题建议.所有题目的思路解析.相关代码.参考文献.参考论文等多项资料,帮助大家 ...

最新文章

  1. 【神经网络】(4) 卷积神经网络(CNN),自定义网络,案例:彩色图像10分类
  2. windows installer清理实用工具
  3. Eigen: C++开源矩阵计算工具——Eigen的简单用法
  4. 手写select,解决浏览器兼容性
  5. win10安装kafka
  6. linux 鬼精灵漏洞,鬼精灵Grinch:比Bash破壳(shellshock)更严重的Linux漏洞
  7. 内核中断处理流程_处理中断
  8. 前端学习(1912)vue之电商管理系统电商系统之调用api完成删除操作
  9. mysql数据库基础 博客园_MySQL数据库基础
  10. python读取word指定内容_python读取word 中指定位置的表格及表格数据
  11. C#LeetCode刷题-几何
  12. Java之HSF搭建demo
  13. esp8266 防掉线方法_ESP8266-12F 中断
  14. SpringBoot(三)
  15. # 研究杂感 × VOSviewer(第二辑)
  16. origin 去掉白边
  17. Android MVVM框架搭建(一)ViewModel + LiveData + DataBinding
  18. flash人物原地走路_flash如何做人物走路
  19. 大学计算机基础网络配置实验报告答案,2008大学计算机基础实验报告参考答案...
  20. 怎么用计算机的计算器转换进位制,计算机进制换算(进制转换计算器)

热门文章

  1. web2.0创业宝典-Getting Real
  2. redis如何设置定时过期_Redis 设置过期时间注意事项
  3. 2023电商购物网站有哪些知名和靠谱的?
  4. 欢迎大家来评论 我是 新手
  5. 雷观(十二):构建基础库,提升研发效率
  6. 华硕ASUS原厂OEM系统下载安装工厂模式安装教程
  7. 直播带货系统源码,实现MYSQL数据库的主从同步
  8. CentOS 下安装Nginx 0.8.30 + PHP 5.3.1+MySQL 5.5.0
  9. 自学5个月Java找到了9K的工作,我的方式值得大家借鉴 第一部分
  10. (三)汽车电子学习之二极管