竞赛
考级
#include<bits/stdc++.h> using namespace std; int main() { map <int,int> a; set <int> b; int n,i,q; cin>>n; for(i=1; i<=n; i++) { scanf("%d",&q); a[q]; b.insert(q); } for(set<int>::iterator it=b.begin(); it!=b.end(); it) cout<<*it<<' '<<a[*it]<<endl; }
189****8874
思路: 输入n个数字,范围不超int,根据数字大小升序输出数字与它们的出现频率。 可以定义一个结构体,num记录数字,cnt记录出现频率,重载运算符<用于优先队列的比较。 n不必存储,输入的时候直接n--,然后将输入并存储好的map数组遍历存入优先队列q,因为是优先队列,不必排序,再遍历优先队列输出即可。 代码:
CK七星松|再发团队邀请建议趋势
#include<bits/stdc++.h> using namespace std; int a[10000001]; int main(){ int n,i,k,s=1; cin>>n; for (i=0;i<n;i++) cin>>a[i]; sort(a,a+n); a[n]=-10000000; for (i=1;i<=n;i++) if (a[i]==a[i-1]) s++; else {cout<<a[i-1]<<' '<<s<<endl;s=1;} return 0; }
134****8968
Thorns
AC代码 欢迎加入团队
唱跳坤
沈思邈
acgoacgo
zhouty
直接UPPER_BOUND-LOWER_BOUND秒了 #题解如下 不会MAP就用这个 无脑做法
%(米哈游加强牢景)
手持剑,刺锋芒
隐姓埋名
Xzops
该题可以用map来解决 具体步骤: 1.输入 2.输出 (你没听错,就是这么简单,map自动排序) AC图片: 最后献上AC代码:
#include<bits/stdc++.h> using namespace std; set<int> a; map<int,int> b; int main(){ int n; cin>>n; while(n--){ int k; cin>>k; a.insert(k); b[k]; } for(set<int>::iterator it=a.begin();it!=a.end();it) cout<<*it<<" "<<b[*it]<<endl; return 0; }
许肄霄