社区讨论

求助大佬,为什么只有四十分%>_<%

P1097[NOIP 2007 提高组] 统计数字参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@mi6lnpi4
此快照首次捕获于
2025/11/20 06:54
4 个月前
此快照最后确认于
2025/11/20 06:54
4 个月前
查看原帖
弱弱地补一句,这里我是自己想的,大概和二叉排序树的思想差不多,不知道错在哪里,运行时错误60分
还请大佬指教!(我的程序应该还是算挺清晰的)
CPP
#include<cmath>
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
bool f[10010];
int n,a,m;
struct data{int s,c;} b[10010];
bool cmp(data a,data b)
{
    return a.s<b.s;
}
int main()
{
    //freopen("1097.in","r",stdin);
    //freopen("1097.out","w",stdout);
    cin>>n;
    for (int i=1;i<=n;i++)
    {
        scanf("%d",&a);
        int k=1;
        while (f[k]) 
        {
            if (a<b[k].s) k*=2; else 
            if (a>b[k].s) k=k*2+1; else break;
        }
        b[k].s=a;b[k].c++;f[k]=true;
        m=max(m,k);
    }
    sort(b+1,b+1+m,cmp);
    for (int i=1;i<=m;i++)
    if (b[i].c>0) printf("%d %d\n",b[i].s,b[i].c);
    return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...