文章目录

  • A - Sign Flipping
  • B - Neighbor Grid
  • C - Element Extermination
  • D - Replace by MEX

A - Sign Flipping

题意:问你至少有(n-1)/ 2个a[i+1]-a[i]大于等于0,至少有(n-1)/ 2个a[i+1]-a[i]小于等于0,你可以变化每个数的正负。
题解:这样的话就可以正负交替输出了。

/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 110;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 100000000;
using namespace std;int a[maxn];
int main()
{int t;cin>>t;while(t--){int n;cin>>n;for(int i=0;i<n;i++) scanf("%d",&a[i]);for(int i=0;i<n;i++){if(i%2==0){printf("%d ",abs(a[i]));}else printf("%d ",-abs(a[i]));}cout<<endl;}return 0;
}

B - Neighbor Grid

题解:看一张图你就懂了,只需要判断一下输入进去的数有没有超过每个格子的最大值,然后输出即可(临两条边输出2,临一条边输出3,不临边输出4)

/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 1e5+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 100000000;
using namespace std;vector<int> v[maxn];int main()
{int t;cin>>t;while(t--){for(int i=0;i<maxn;i++) v[i].clear();int n,m;cin>>n>>m;for(int i=0;i<n;i++){for(int j=0;j<m;j++){int x;scanf("%d",&x);v[i].push_back(x);}}bool flag=true;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if((i==0&&j==0)||(i==0&&j==m-1)||(i==n-1&&j==0)||(i==n-1&&j==m-1)){if(v[i][j]>2) flag=false;}else if(i==0||i==n-1){if(v[i][j]>3) flag=false;}else if(j==0||j==m-1){if(v[i][j]>3)  flag=false;}else {if(v[i][j]>4) flag=false;}}}if(flag==false)cout<<"NO"<<endl;else{cout<<"YES"<<endl;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if((i==0&&j==0)||(i==0&&j==m-1)||(i==n-1&&j==0)||(i==n-1&&j==m-1)){printf("2 ");}else if(i==0||i==n-1){printf("3 ");}else if(j==0||j==m-1){printf("3 ");}else {printf("4 ");}}printf("\n");}}}return 0;
}

C - Element Extermination

题解:判断第一个数是否小于最后一个数
证明如下(并不规范):每次在除首末两段的中间,找出最大最小值,把最大值前边的和最小值后边的都删了,重叠就对边取一个,然后用边界的值删掉它,重复这个过程即可。

/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 3e5+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 100000000;
using namespace std;int a[maxn];int main()
{int t;cin>>t;while(t--){int n;cin>>n;for(int i=0;i<n;i++) scanf("%d",&a[i]);if(a[0]<a[n-1]) cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;}

D - Replace by MEX

题解:构造一个0 1 2 3…n-1的数列即可。
特殊情况:如果mex=n的话,我们随便找一个a[i]!=i的地方将mex先暂时放入,每次暴力查找mex,判断是否符合条件即可。
注意:输出的结果是数组下标+1(这里数组下标指的是从0开始)

/*Keep on going Never give up*/
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 1010;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 100000000;
using namespace std;inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();return s*w;
}
int n;
int a[maxn];
vector <int> ans;
bool visited[maxn];
int ifind(){memset(visited,false,sizeof(visited));for(int i=0;i<n;i++) visited[a[i]]=true;for(int i=0;i<=n;i++){if(!visited[i]) return i;}
}
bool check(){for(int i=0;i<n;i++){if(a[i]!=i) return false;}return true;
}
int main()
{int t;cin>>t;while(t--){cin>>n;ans.clear();for(int i=0;i<n;i++){scanf("%d",&a[i]);}while(!check()){int mex=ifind();if(mex==n){for(int i=0;i<n;i++){if(a[i]!=i){a[i]=mex;ans.push_back(i+1);break;}}}else{ans.push_back(mex+1);a[mex]=mex;}}printf("%d\n",ans.size());for(int i=0;i<ans.size();i++){printf("%d ",ans[i]);}cout<<endl;}return 0;
}

Codeforces Global Round 9 A-D题解相关推荐

  1. Codeforces Global Round 24 A~D 题解

    说明 题目链接 就做出AB题,C题想了一个半小时.和我同场竞技的两位选手都做出了C,还是我太菜了555~ A - Doremy's Paint 答案等价于求包含不同元素个数最大的区间,就是全区间. # ...

  2. Codeforces Global Round 1

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

  3. Codeforces Global Round 1 晕阙记

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

  4. Codeforces Global Round 3

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

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

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

  6. 【Codeforces Global Round 23】B. Rebellion

    Codeforces Global Round 23中B. Rebellion Codeforces比赛记录 文章目录 题目链接: 一.B. Rebellion 题目意思: 上思路: 总结 B. Re ...

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

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

  8. codeforces global round 23

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

  9. Codeforces Global Round 8 C. Even Picture 题解[巧妙法构造题]

    C. Even Picture 题目大意:让你构造一个连通图,图中有k个灰点其中n个点4面都是灰点,(k-n)个点周围2个点是灰点 我们设最上面的为(1,1)点就可以了 ps:exactly:只有,其 ...

最新文章

  1. html5有foreach吗,JavaScript中的map()和forEach()有什么区别?
  2. petshop详解之一:PetShop的系统架构设计
  3. android百度地图标方向,Android百度地图之方向感应和模式更改
  4. 诺基亚2亿欧元建越南新工场
  5. 五、线程优先级和守护线程
  6. python 计算曲线面积_微积分到底有多神?能完成多少不可思议,难以测量的计算?他简直强大的让人害怕!...
  7. 软件项目管理 2.1.项目立项
  8. 贴片元器件焊接经验及总结
  9. angular自定义指令 directive
  10. 单视图几何Vanish Point(消失点/灭点)计算方法——Robert_T_Collins(罗伯特·柯林斯)算法
  11. unity3d学习笔记-动画(2.控制动画与Animator Controller)
  12. 【渝粤题库】广东开放大学 工程经济 形成性考核
  13. C语言 编程实现简单的计算器功能
  14. 数据标准是什么?企业如何做好数据管理?
  15. Excel快速入门01
  16. 检查是否存在满足条件的数字组合
  17. 数据结构 Huffman树(霍夫曼树、哈夫曼树)
  18. 3D游戏编程与设计作业一
  19. python独立网站教程_python从零到独立建设网站系列教程之基础知识篇(二)
  20. Sping、SpringMVC框架教程

热门文章

  1. ACMNO.11 一个数如果恰好等于它的因子之和,这个数就称为“完数“。 例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数“。 编程序找出N之内的所有完数,并按下面格式输出其因子
  2. JavaEE——JavaScript
  3. AC3 bit allocation
  4. 看看Spring的源码(一)——Bean加载过程
  5. android中常见的内存泄漏和解决的方法
  6. shell 读取配置文件
  7. LeetCode——Rotate Image(二维数组顺时针旋转90度)
  8. Android Handler 深入学习(1)
  9. linux发行版 以及 包管理方式
  10. 交换机和路由器有哪些区别?