hdu4451 Dressing

题目大意给出衣服裤子鞋子,给出哪些是不搭配的,求三件套都搭配的方案总数。


可以用计算方案的补集,也可以枚举每一种裤子i,累计(n-a[i])*(k-b[i]) a[i],b[i]分别为关于裤子不搭配的方案。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>


#define maxn 1010
using namespace std;
char s1[20],s2[20];
int a[maxn],b[maxn];
int sum,p,n,m,k,v1,v2;
int main()
{
    while (scanf("%d%d%d",&n,&m,&k)!=EOF)
    {
          if (!n && !m && !k) break;
          cin>>p;
          memset(a,0,sizeof(a));
          memset(b,0,sizeof(b));
          int sum=0;
          for (int i = 0; i < p;++i)
          {
              scanf("%s%d%s%d",&s1,&v1,&s2,&v2);
              if (!strcmp(s1,"clothes"))a[v2]++;
              if (!strcmp(s2,"shoes"))  b[v1]++;
              
          }
          for (int i = 1; i <=m; ++i)
          sum+=(n-a[i])*(k-b[i]);
          cout << sum << endl;
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值