CF430A题解

题目: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
  • 注意输出格式

最后祝大家在信奥的路上越走越远!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值