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; }