$ CF43C Lucky Tickets$ https://www.luogu.org/problem/CF43C
本题其实不是很难, 关键还是要靠我们去理解. 来一起看一看如何解决吧.
输入就不用说了, 主要还是要看如何解决. 我们设 \(ans\) 为最终的答案. 根据题意, 仔细的思考,\(ans\) 应该等于什么呢? 我们再设 \(a[3]\) 这个数组. 根据数学知识可得:
每当输入一个数 \(x\) 后,\(a[x \%3]++\), 最终 \(ans\) 即是 \(a[0]/2+min(a[1],a[2]);\)
为什么是这样呢? 其实, 根据数学方法很轻松就可以得出来, 因为比较简单, 我就不再赘述了.
部分代码如下 \(:\)
- for(int i=0;i<n;i++)
- {
- cin>>x;
- a[x%3]++; // 统计
- }
- int ans=a[0]/2+min(a[1],a[2]); // 更新 ans 的值
- cout<<ans;
扔出完整代码 \(↓↓↓\)
- #include<bits/stdc++.h>
- using namespace std;
- int main()
- {
- int n,x,a[3]={0};
- cin>>n;
- for(int i=0;i<n;i++)
- {
- cin>>x;
- a[x%3]++;
- }
- int ans=a[0]/2+min(a[1],a[2]);
- cout<<ans;
- }
好了, 本文章到此为止. 喜欢它吗 \((QAQ)\)
来源: http://www.bubuko.com/infodetail-3145210.html