专注是不够的,很重要的一方面在于细节,关注细节:精细和专注才是成功的重点!!!
A 题意:给你一堆数字,说这一堆数字是由最初的两个数字相减得到的,让你求出两个数字其中一个,特别标明,不需要你求另一个数字:
1.怎样做:这个题目自己没有思考出来,有一部分原因是没有读题读清楚,绝对值,所有的数字是由最初的两个数字相减的绝对值得到的,所以说如果出现了负数,那肯定是原来的数字当中一个
如果没有负数,全部都是正数,最大的肯定是刚开始的一个数字,应为最大的数字在进行相减的过程中不会变小
2为什么: 首先应该反应出来负数一定是原来的,这样我们就能想如果没有负数的情况,最大的数字是没有变化的,最大的值会一直不变
3下次如何想起来:这里可以积累一个基本活动经验,如果是绝对值相减,产生的新的数字,一定是小于最初的最大的数字的,不会大于它
4生活联系:
5博弈:最后三个样例,都是有一个负数的情况,但是只有一个是负数,如果都是负数,我们可能就知道答案了,这种情况是最不好想的,所以我们没有必要就是按照样例来,我们可以坚定心中的答案
看别人的代码,我们可以不用统计最大的值和最小的值,这里可以直接用一个sort
#include
using namespace std;
int main(){
int t;cin>>t;
while(t--){
int n;cin>>n; int a[n];
for(int i=0;i>a[i];
sort(a,a+n);
if(a[0]>=0) cout<
B: 题意:如何调整排列当中的数字的顺序,让排列的排列子序列最少
1怎么做:其实排列有非常严格的要求,破坏一个数字就不是排列了,所以这样来看题目条件没有那么多:这个题目的样例过于明显了 1 和 2 应该是位于最大值的两边
2为什么:1 2靠着肯定是会多一个的,如果用最大值把1和2分开,就会减少这个
3下次想起来:真希望遇见同类型的题目哈哈哈
4生活联系:这个想不起来啥联系如果有日后补充哈哈哈
这个题目的代码确实非常的漂亮,通过一个swap,的确把c x 定位成1 或者 2 比较靠前和比较靠后的位置
#include
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 &&cd)cout<
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.和答案的联系:这个答案就没有其他的提示性,所以说样例用好了是关键,用不好是祸害