3 条题解
-
4
OK呀,兄弟们,今天咱也是来刷题了好吧。
这题贼简单,不解释,直接上代码。
long long n,x=0,y=0; cin>>n; long long a[n]; for (int i=0;i<n;i++)//先输入到数组里 { cin>>a[i]; } for (int j=0;j<n-1;j++) { if (a[j]<=a[j+1])//矮到高 { x++; } } for (int k=0;k<n-1;k++) { if (a[k]>=a[k+1])//高到矮 { y++; } } if ((x==n-1) || (y==n-1))//这里x表示矮到高的判断,而y表示高到矮的判断 { cout<<"Good"; } else { cout<<"No"; }
-
2
#include <iostream> using namespace std; int n,a[11]; int main() { bool d=1; cin >> n; for(int i=1;i<=n;i++) { cin >> a[i]; } if(a[1]>a[n]) { a[0]=190; for(int i=1;i<=n;i++) { if(a[i]>a[i-1]) { d=0; } } } else { a[0]=0; for(int i=1;i<=n;i++) { if(a[i]<a[i-1]) { d=0; } } } if(d) { cout << "Good"; } else { cout << "No"; } }
-
0
HHH,我又来了,今天咱们聊聊P803 【入门】排好队了吗? u1s1,这题目是真让人栓Q。 这题也不是什么难题,怎么这么惨呢。这题只需要来个差分即可。
差分
对于一个函数f(x),定义△f(x)=f(x)-f(x-1),称△f(x)是f(x)的差分。 这是差分在数学上的定义。类似的,我们可以定义数组d每项的差分为d[i]-d[i-1],这里i>1。
唠嗑了这么多,到底差分有什么用呢? 以本题为例,对于这个问题,我们不必去判断输入的数据是否是单调递增或单调递减的情况 (即已按顺序或倒序排序)。我们可以先求出原数组每项的差分。显然(可能有些恶劣)对于输入数据来说,(设输入数组名字为d),已按顺序或倒序排序的前提是d每项的差分正负性相同或为0。如d[1]-d[0]>0,但d[2]-d[1]<0,则我们可以断定数组d没有排好序。因为由d[1]-d[0]>0得d[1]>d[0],由d[2]-d[1]<0得d[1]>d[2],显然没有排好序。 好了,上代码!
a=int(input()) B=input().split() s=[] for i in range(a-2,-1,-1): I=int(B[i]) now=I next_one=int(B[i+1]) s.append(next_one-now)#求差分 flag = 1 for i in range(a-2): if (s[i] > 0 and s[i+1] < 0) or (s[i] < 0 and s[i+1] > 0) or (s[i] == s[i+1])#特判,不然只得67分。: #出现特例就说明没排好了,break! flag=0#一定要设为0. break if flag: print('Good') else: print('No')
Loading:23/100……^_^
- 1
信息
- ID
- 803
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- 8
- 标签
- 递交数
- 197
- 已通过
- 37
- 上传者