zoukankan      html  css  js  c++  java
  • hdu 4451 Dressing 排列组合/水题

    Dressing

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 2964 Accepted Submission(s): 1291

    Problem Description

    Wangpeng has N clothes, M pants and K shoes so theoretically he can have N×M×K different combinations of dressing.
    One day he wears his pants Nike, shoes Adiwang to go to school happily. When he opens the door, his mom asks him to come back and switch the dressing. Mom thinks that pants-shoes pair is disharmonious because Adiwang is much better than Nike. After being asked to switch again and again Wangpeng figure out all the pairs mom thinks disharmonious. They can be only clothes-pants pairs or pants-shoes pairs.
    Please calculate the number of different combinations of dressing under mom’s restriction.

    Input

    There are multiple test cases.
    For each case, the first line contains 3 integers N,M,K(1≤N,M,K≤1000) indicating the number of clothes, pants and shoes.
    Second line contains only one integer P(0≤P≤2000000) indicating the number of pairs which mom thinks disharmonious.
    Next P lines each line will be one of the two forms“clothes x pants y” or “pants y shoes z”.
    The first form indicates pair of x-th clothes and y-th pants is disharmonious(1≤x≤N,1 ≤y≤M), and second form indicates pair of y-th pants and z-th shoes is disharmonious(1≤y≤M,1≤z≤K).
    Input ends with “0 0 0”.
    It is guaranteed that all the pairs are different.

    Output

    For each case, output the answer in one line.

    Sample Input

    2 2 2 0 2 2 2 1 clothes 1 pants 1 2 2 2 2 clothes 1 pants 1 pants 1 shoes 1 0 0 0

    Sample Output

    8 6 5

    题意

    给你n件衣服,m件袜子,k个鞋子,然后会告诉你某件衣服和某件袜子不搭配,或者某件袜子和某个鞋子不搭配,然后问你,一共有多少种搭配方案

    题解

    大概是排列组合吧,因为每一个不协调的搭配关系都包含PANTS,那么我们用两个数组记录,有那些衣服和鞋子不能搭配这个pants,然后枚举,累加就好
    详细看代码吧~

    代码

    int a[maxn],b[maxn];
    
    int main()
    {
        int n,m,k;
        while(cin>>n>>m>>k)
        {
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            if(n==0&&m==0&&k==0)
                break;
            string s1,s2;
            int kk,mm;
            int p;
            RD(p);
            while(p--)
            {
                cin>>s1>>kk>>s2>>mm;
                if(s1[0]=='c')
                    a[mm]++;
                if(s2[0]=='s')
                    b[kk]++;
            }
            LL ans=0;
            REP_1(i,m)
            {
                ans+=(n-a[i])*(k-b[i]);
            }
            cout<<ans<<endl;
        }
    }
  • 相关阅读:
    ●SPOJ 8222 NSUBSTR–Substrings(后缀自动机)
    ●SPOJ 1811 Longest Common Substring
    ●POJ 1509 Glass Beads
    ●BZOJ 4556 [Tjoi2016&Heoi2016]字符串
    ●BOZJ 2229 [Zjoi2011]最小割
    ●BOZJ 4456 [Zjoi2016]旅行者
    ●观光(17.12.02多校联测题目)
    ●BZOJ 2007 NOI 2010 海拔
    mysql--->B+tree索引的设计原理
    mysql--->权限管理原理和设置
  • 原文地址:https://www.cnblogs.com/qscqesze/p/4329603.html
Copyright © 2011-2022 走看看