申请提交hack&&题目评级
查看原帖
申请提交hack&&题目评级
1153677
Treap_Kongzs楼主2025/1/16 01:24

我AC后继续玩我自己写的cmp,然后就(

P9942.in:

2
13960 29273
17161 31621

P9942.ans//暴力答案

1

P9942.out//提交程序答案

0

初步判断是我的AC程序为了特判不合法的情况将1置为了0再输出,然而这样会排掉本身只有一种方案的数据。

gen.cpp

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9;

int main()
{
    freopen("P9942.in","w",stdout);
    srand(time(0));
    int n=rand()%8+1;
    if(n==1)n++;
    cout<<n<<endl;
    for(int i=1;i<=n;i++)
    {
        int lim=rand()%mod+1;
        cout<<lim;
        if(i<n)cout<<" ";
    }
    cout<<endl;
    for(int i=1;i<=n;i++)
    {
        int cow=rand()%mod+1;
        cout<<cow;
        if(i<n)cout<<" ";
    }
    return 0;
}

AC.cpp

#include<bits/stdc++.h>
using namespace std;
#define ll long long

ll lim[25];
ll cow[25];

int main()
{
    int n=0;
    ll res=1;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>cow[i];
    }
    for(int i=1;i<=n;i++)
    {
        cin>>lim[i];
    }
    /*sort(cow+1,cow+n+1);
    do
    {
        int flag=1;
        for(int i=1;i<=n;i++)
        {
            if(cow[i]>lim[i])
            {
                flag=0;
                break;
            }
        }
        if(flag)res++;
    }
    while(next_permutation(cow+1,cow+n+1));*/
    sort(lim+1,lim+n+1);
    sort(cow+1,cow+n+1);
    /*for(int i=1;i<=n;i++)
    {
        cout<<cow[i]<<' ';
    }
    cout<<endl;
    for(int i=1;i<=n;i++)
    {
        cout<<lim[i]<<' ';
    }
    cout<<endl;*/
    for(int i=1;i<=n;i++)
    {
        ll cnt=0;
        ll res1=n-(lower_bound(lim+1,lim+n+1,cow[i])-(lim+1));
        ll res2=n-i;
        cnt=res1-res2;
        //cout<<res1<<' '<<res2<<' '<<cnt<<endl;
        res*=cnt;
    }
    cout<<res;
    return 0;
}

BF.cpp

#include<bits/stdc++.h>
using namespace std;
#define ll long long

ll lim[25];
ll cow[25];

int main()
{
    int n=0;
    ll res=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>cow[i];
    }
    for(int i=1;i<=n;i++)
    {
        cin>>lim[i];
    }
    sort(cow+1,cow+n+1);
    do
    {
        int flag=1;
        for(int i=1;i<=n;i++)
        {
            if(cow[i]>lim[i])
            {
                flag=0;
                break;
            }
        }
        if(flag)res++;
    }
    while(next_permutation(cow+1,cow+n+1));
    cout<<res;
    return 0;
}

麻烦各位题目管理的大佬了,违规紫衫。

建议评,因为贪心思路略难于NOIP2023T1,但是不够难。

@Little09

@迟暮天复明

2025/1/16 01:24
加载中...