首页 > 其他分享 >next_permutation

next_permutation

时间:2022-12-19 21:25:41浏览次数:64  
标签:排列 int next 队伍 permutation PK

next_permutation

个人感觉这个函数是值得学习一下的,全排列专用,用于将当前数组换到下一个排列
举个栗子:
b[] = 1 2 3 4 5
next_pertutation(b,b+5)
b[] = 1 2 3 5 4

高效避免了自己手动写轮子去模拟全排列!
不过值得注意的是,这个函数返回的是当前排列的下一个,如果存在则返回true,否则返回false
所以如果我们需要枚举全排列时,一定记得要对其先sort后再用next_permutation


例题:

C GCPC总决赛


题目大意:

当前有两个队伍进行PK,每次各选出一个人PK,能力值大的获胜,最终比较获胜的总局数,求队伍一获胜,失败,平的可能。


解题思路:

队伍一不动,对队伍二进行全排列,进行PK统计局数即可
不过值得注意的是,因为存在能力值相同的人,所以为了区别开这种情况,所以对B需要取pair<能力值,位置>以分辨

代码实现:

# include<bits/stdc++.h>
using namespace std;
const int N = 11;
int a[N];
pair<int,int>b[N];
int main(){
    int n;
    cin>>n;
    for(int i = 1;i <= n;++i) cin>>a[i];
    for(int i = 1;i <= n;++i) cin>>b[i].first,b[i].second = i;
    int c1 = 0,c2 = 0,c3 = 0;
    sort(b+1,b+1+n);
    do{
        int t1 = 0,t2 = 0;
        for(int i = 1;i <= n;++i){
            t1 += a[i]>b[i].first;
            t2 += a[i]<b[i].first;
        }
        if(t1 == t2) c3++;
        else if(t1<t2)c2++;
        else c1++;
    }while(next_permutation(b+1,b+1+n));
    cout<<c1<<" "<<c2<<" "<<c3<<endl;
    return 0;
}

标签:排列,int,next,队伍,permutation,PK
From: https://www.cnblogs.com/empty-y/p/16993070.html

相关文章

  • When to use next() and return next() in Node.js
    Somepeoplealwayswritereturnnext()istoensurethattheexecutionstopsaftertriggeringthecallback.Ifyoudon'tdoit,yourisktriggeringthecallback......
  • Vue.$nextTick的原理是什么-vue面试进阶
    原理性的东西就会文字较多,请耐下心来,细细品味Vue中DOM更新机制当你气势汹汹地使用Vue大展宏图的时候,突然发现,咦,我明明对这个数据进行更改了,但是当我获取它的时候怎么是上......
  • 「CF1718D」Permutation for Burenka
    题目点这里看题目。称一个数组是纯的,当且仅当其中不存在重复元素。对于两个长度均为\(n\)的纯数组\(a,b\),称它们是相似的,当且仅当:\[\forall1\lel\ler\len,\arg......
  • abp vnext blog模块用户信息同步 源码解析
    先看一下Volo.Blogging.Domain引用的关于用户的项目只有Volo.Abp.Users.Domain,再看BlogUser定义:publicclassBlogUser:AggregateRoot<Guid>,IUser,IUpdateUserD......
  • 题解 AGC059C【Guessing Permutation for as Long as Possible】
    problem小明有一个隐藏的排列\(p\),小红想要猜出来。现在允许小红提问,每次提问的形式是\(a_i\)和\(b_i\),然后小明会告诉小红谁大谁小。小红是个老实的人,她的询问顺序......
  • Next.js 开发商 Vercel 正式推出 Edge Functions
    Next.js开发商Vercel正式推出EdgeFunctions来源:OSCHINA编辑: 白开水不加糖2022-12-1707:49:24 0Next.js框架背后的开发商Vercel 宣布推出Edg......
  • kmp算法比较次数|next
    首先算出子串next序列(前文有讲)再而开始子串比较,比较次数为整个子串,遇到首个不同字符时,后移个数为:已经匹配个数-不同字符对应next值,再次比较计数从上次不同字符起视频......
  • next|nextval数组|考研数据结构
    视频https://www.bilibili.com/video/BV16a411D7Us/?spm_id_from=333.788.recommend_more_video.0&vd_source=ad3a9ab185a417fd3a4d417051c32c65步骤将字符串从1开始递......
  • ABP vNEXT-1安装ABP 官方提供的CLI工具
    1)、使用命令行窗口安装ABP官方提供的CLI工具,安装命令如下:dotnettoolinstall-gVolo.Abp.Cli,如下图所示:  2)、如果在创建过程中因为网络原因会连接失败的话,可以......
  • 一文带你入木三分地理解字符串KMP算法(next指针解法)
    1.KMP算法简介温馨提示:在通篇阅读完并理解后再看简介效果更佳以下简介由百度百科提供https://baike.baidu.com/item/KMP%E7%AE%97%E6%B3%95/10951804:KMP算法是一种改......