学习目标:
201809CCF真题练习
学习内容:
1、 卖菜
2、买菜(序列处理问题)
学习产出:
一、卖菜(水题、简单的数据处理)
本题就是一个简单的序列处理,只是最后一个元素和第一个元素的处理方式和其它元素不相同,注意区分。
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
const int N = 1000;
int a[N], ans[N];
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
cin >> a[i];
ans[0] = (a[0] + a[1]) / 2;
ans[n - 1] = (a[n - 2] + a[n - 1]) / 2;
for(int i = 1; i < n - 1; i++)
ans[i] = (a[i - 1] + a[i] + a[i + 1]) / 3;
for(int i = 0; i < n; i++)
cout << ans[i] << ' ';
return 0;
}
二、卖菜(水题、序列处理)
处理本题的时候,添加一个标记数组,因为没有涉及两个序列的分类处理,所以直接将序列作为统一整体进行处理并标记,最后输出符合条件的,即为答案
#include <bits/stdc++.h>
#define _for(i,a,b) for(int i = (a); i <= (b);i++)
#define maxn 100005
using namespace std;
int cnt[maxn + 1];
int main()
{
int n;
scanf("%d",&n);
int ans = 0;
int ai,bi;
_for(i,1,2*n)
{
scanf("%d%d",&ai,&bi);
for(int j = ai;j < bi;j++)
{
cnt[j]++;
}
}
_for(i,1,maxn)
{
if(cnt[i] == 2) ans++;
}
printf("%d\n",ans);
return 0;
}