2 solutions

  • 1
    @ 2025-1-3 20:00:12
    #include<bits/stdc++.h>
    using namespace std;
    const int N=15;
    int p[N],a[N],b[N];
    int main()
    {
    	int n,k;
    	cin>>n>>k;
    	for(int i=1;i<=n;i++)
    	{
    		cin>>a[i];
    	}
    	for(int i=1;i<=n;i++)
    	{
    		cin>>b[i];
    		p[i]=i;
    	}
    	int ans=0;
    	do{
    		int cnt=0;
    		for(int i=1;i<=n;i++)
    		{
    			if(b[p[i]]>a[i])
    			{
    				cnt++;
    			}
    		}
    		if(cnt<=k)
    		{
    			ans++;
    		}
    	}while(next_permutation(p+1,p+n+1)); //生成女孩的排列 
    	cout<<ans<<endl;
    	return 0;
    }
    
    
    • -1
      @ 2024-7-29 16:01:44
      #include<bits/stdc++.h>
      using namespace std;
      int n,k;
      const int N=15;
      int ans[N];
      bool st[N];
      int a[N],b[N];
      int cnt;
      void dfs(int u)
      {
      	if(u==n+1) 
      	{
      		int x=0;
      		for(int i=1;i<=n;i++)
      		{
      			if(a[i]<b[ans[i]])
      			{
      				x++;
      			}
      		}
      		if(x<=k)
      		{
      			cnt++;
      		}
      		return ;
      	}
      	for(int i=1;i<=n;i++)
      	{
      		if(!st[i])
      		{
      			st[i]=1;
      			ans[u]=i;
      			dfs(u+1);
      			st[i]=0;
      		}
      	}
      }
      int main()
      {
      	cin>>n>>k;
      	for(int i=1;i<=n;i++)
      	{
      		cin>>a[i];
      	}
      	for(int i=1;i<=n;i++)
      	{
      		cin>>b[i];
      	}
      	dfs(1);
      	cout<<cnt;
      	return 0;
      }
      
      • 1

      Information

      ID
      646
      Time
      1000ms
      Memory
      128MiB
      Difficulty
      5
      Tags
      # Submissions
      20
      Accepted
      5
      Uploaded By