题目:Points and Segments (easy)
思路:
题目中要求整段红点蓝点数量相差不超过
1
1
1,可以用到交替染色。
题目输出中的
0
0
0 和
1
1
1 可以当作红色和蓝色。
其实这道题和线没什么关系,只需要盲目给点交替染色就好了。
循环统计一下每次小于
a
i
a_i
ai 的数,如果是奇数输出
0
0
0(红色),偶数输出
1
1
1(蓝色)。
分段代码:
输入
输入只需要输入 n , m , a i n,m,a_i n,m,ai 就可以了。
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
线就只需要输入一个临时变量。(如果不输入的话有可能会出一些问题,保险起见还是输入。)
int P;
for(int i=1;i<=m;i++) cin>>P>>P;
处理
按分析即可。
for(int i=1;i<=n;i++){
int cnt=0; //等于零!!!
for(int j=1;j<=n;j++)
if(a[j]<a[i])
cnt++;
//输出
}
输出
在每次外循环结束前,判断一下累加器奇偶,输出 1 1 1 与 0 0 0。
cout<<!(cnt%2)<<' '; //空格!!!
Code
#include<bits/stdc++.h>
#define io ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
int n, m, a[1001];
int main() {
io
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> a[i];
int P; //临时变量
for (int i = 1; i <= m; i++) cin >> P >> P; //怕出问题
for (int i = 1; i <= n; i++) { //累加器统计
int cnt = 0; //等于零!!!
for (int j = 1; j <= n; j++)
if (a[j] < a[i]) //使用更加令人明了的代码格式
cnt++;
cout<<!(cnt%2)<<' '; //空格!!!
}
return 0;
}
总结:
- 思路打开,多去思考
- 没有用的输入可以用临时变量输入
- 局部累加器要赋初始值( 0 0 0)
- 注意输出格式