当前位置: 首页 > news >正文

六月九号补题日记:Codeforces Round 877 (Div. 2)

专注是不够的,很重要的一方面在于细节,关注细节:精细和专注才是成功的重点!!! 

A 题意:给你一堆数字,说这一堆数字是由最初的两个数字相减得到的,让你求出两个数字其中一个,特别标明,不需要你求另一个数字:

1.怎样做:这个题目自己没有思考出来,有一部分原因是没有读题读清楚,绝对值,所有的数字是由最初的两个数字相减的绝对值得到的,所以说如果出现了负数,那肯定是原来的数字当中一个

如果没有负数,全部都是正数,最大的肯定是刚开始的一个数字,应为最大的数字在进行相减的过程中不会变小

2为什么: 首先应该反应出来负数一定是原来的,这样我们就能想如果没有负数的情况,最大的数字是没有变化的,最大的值会一直不变

3下次如何想起来:这里可以积累一个基本活动经验,如果是绝对值相减,产生的新的数字,一定是小于最初的最大的数字的,不会大于它

4生活联系:

5博弈:最后三个样例,都是有一个负数的情况,但是只有一个是负数,如果都是负数,我们可能就知道答案了,这种情况是最不好想的,所以我们没有必要就是按照样例来,我们可以坚定心中的答案

看别人的代码,我们可以不用统计最大的值和最小的值,这里可以直接用一个sort

 

#include<bits/stdc++.h>
using namespace std;
int main(){int t;cin>>t;while(t--){int n;cin>>n; int a[n];for(int i=0;i<n;i++) cin>>a[i];sort(a,a+n);if(a[0]>=0) cout<<a[n-1]<<endl;else cout<<a[0]<<endl;}return 0;
}

B:   题意:如何调整排列当中的数字的顺序,让排列的排列子序列最少

1怎么做:其实排列有非常严格的要求,破坏一个数字就不是排列了,所以这样来看题目条件没有那么多:这个题目的样例过于明显了 1 和 2 应该是位于最大值的两边

2为什么:1 2靠着肯定是会多一个的,如果用最大值把1和2分开,就会减少这个

3下次想起来:真希望遇见同类型的题目哈哈哈

4生活联系:这个想不起来啥联系如果有日后补充哈哈哈

这个题目的代码确实非常的漂亮,通过一个swap,的确把c x 定位成1 或者 2 比较靠前和比较靠后的位置

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){ll n,a,c,d,x;cin>>n;while(cin>>n){//c 记录的是1在数组当中的位置//d 记录的是n在数组当中的位置//x 记录的是2在数组当中的位置for(int i=1;i<=n;i++){cin>>a;if(a==1)c=i;else if(a==n)d=i;else if(a==2)x=i;}//x是1和2位置更加靠后的那个的位置//c是1和2位置更加考前的那个的位置if(c>x)swap(c,x);if(x>d &&c<d)cout<<"1 1\n";else if(c>d)cout<<d<<" "<<c<<endl;else if(x<d)cout<<x<<" "<<d<<endl;}return 0;
}

5博弈论:是的,这个和一些迷惑性的答案就不一样,这个样例解释太明显了,应该大胆想象出来

C:题意:上下左右相邻不可以是素数,这样应该怎么弄

1怎样做:怎样写代码:说做法之前,我们先来如何打出这样的代码

3行6列的数字排列:

 1   2  3 

  4  5   6

   7  8  9

10 11 12

13 14 15

16 17 18

如果说按照上述输出显然很简单,两个for循环,但是我现在不想这样输出了,我想先输出(从1开始)第三行,然后输出第一行,然后输出第五行,然后输出第二行,这样奇数偶数行间隔并且先输出奇数行然后输出偶数行,如何输出?

首先是分支结构:if-else-if

if(i % 2 == 0){}
else{}

所以说:i = 0 cout: 7 8 9

              i  = 1 cout:1 2 3

              i  = 2 cout:10 11 12

              i  = 3 cout:4  5  6

所以说:如果i = 1 或者i = 3 就是:

(i / 2)* m + j + 1

             如果i = 0 或者i = 3就是:

cout << (n / 2 + i / 2) * m + j + 1 

至于这里的道理,我也不知道为什么,但是我需要记住这个东西,他就是这样输出的

思路:具体怎么做的,思路是这样的:首先说到非素数,第一时间想到的就应该是1,最小的素数是2,所以如果我们直接按照原始的排列放数字,(就应该大胆尝试啊,如果以后没有好的办法就只能这样尝试,如果不尝试,不可能有办法做出来的 大胆尝试),这样就会发现横着相比之间相差1,横着满足要求了,但是竖着我们发现相差为m,如果说m是素数,那就不符和要求,但是素数的倍数一定是符合要求的,所以说如果我们隔着输出,就符合要求了,最少是二倍,所以我们就隔着输出,二倍的话就是先输出第三行,然后输出第一行,然后输出第四行,然后输出第二行,就是我们上述讲到的输出方式

你看,其实也不复杂,就在于大胆的尝试,思考,如果不尝试,根本不可能想出来,刚开始看到非素数,感觉好难啊,其实,一点都不复杂

2.0为什么:这里为什么上面已经说清楚了

3以后如何想起来:一个是非素数先从1开始,其次这样的隔着输出的方法下次就要想到

4和生活联系:感觉很经典的输出方式

5.和答案的联系:这个答案就没有其他的提示性,所以说样例用好了是关键,用不好是祸害

http://www.lryc.cn/news/92632.html

相关文章:

  • python基础选择题,高中适用
  • Linux 面试题-(腾讯,百度,美团,滴滴)
  • DDD--战略设计步骤
  • Web Scoket简述
  • “Docker 技术在企业中的应用及挑战解决方案“
  • vue中开发包、生产包、全局包的区别以及安装语法
  • list的模拟实现
  • ChatGLM简介和SSE聊天接口测试效果
  • darknet yolo标注、训练详细说明
  • chatgpt赋能python:Python如何产生随机整数?
  • 大话Stable-Diffusion-Webui-客制化主题(四)
  • Excel函数VLOOKUP常用方法
  • systemV的工作原理+原理代码
  • Kubeflow--TFJob实现机制学习
  • 百度出品,Nature重磅 -- 优化的mRNA设计算法可改善mRNA的稳定性和免疫原性
  • CKA 01_docker部署Kubernetes 部署docker 使用kubeadm引导集群 安装Pod网络
  • Redis的使用规范小建议
  • 操作受限的线性表——栈
  • C++基类指针或引用指向或引用派生类对象(实现动态多态四种手段)父类指针访问子类成员变量(需要dynamic_cast)
  • WTM框架运行报错0308010C:digital envelope routines::unsupported
  • (二)CSharp-索引器
  • 配合AI刷leetcode 实现1170
  • English Learning - L3 作业打卡 Lesson5 Day36 2023.6.9 周五
  • 前端框架笔记
  • 详细设计文档
  • Java011——Java数据类型转换(基本数据类型)
  • mybatis-plus用法(二)
  • SQL笔记-存储过程+循环
  • HNU-操作系统OS-作业1(4-9章)
  • springboot 精华