zoukankan      html  css  js  c++  java
  • HDU 4451 容斥原理

    题目大意:

    n件衣服,m条裤子,k双鞋子进行搭配

    妈妈指明了哪些衣服和裤子不能搭配,哪些裤子和鞋子不能搭配,问最后有几种搭配方法

    先假设都能搭配 n*m*k

    每次遇到衣服和裤子不能搭的,就要减一次k,同时记录这个衣服和裤子出现的次数,避免以后重复减去的可以加回来

    裤子和鞋子也是同样道理

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 const int N=1005;
     6 int cl[N][2] , pa[N][2] , sh[N][2];
     7 int n , m , k , p , a , b;
     8 char s1[20], s2[20];
     9 
    10 int main()
    11 {
    12    // freopen("a.in" , "r" , stdin);
    13     while(scanf("%d%d%d" , &n , &m , &k) ,n||m||k)
    14     {
    15         memset(cl , 0 ,sizeof(cl));
    16         memset(pa , 0 ,sizeof(pa));
    17         memset(sh , 0 ,sizeof(sh));
    18 
    19         int ans = n*m*k;
    20         scanf("%d" , &p);
    21         for(int i=0 ; i<p ; i++)
    22         {
    23             scanf("%s%d%s%d" , s1 , &a , s2 , &b);
    24             if(s1[0] == 'c' && s2[0] == 'p'){
    25                 ans -= k;
    26                 ans += cl[a][1];
    27                 ans += pa[b][1];
    28                 cl[a][0]++;
    29                 pa[b][0]++;
    30             }
    31             else if(s1[0] == 'p' && s2[0] == 's'){
    32                 ans -= n;
    33                 ans += pa[a][0];
    34                 ans += sh[b][0];
    35                 pa[a][1]++;
    36                 sh[b][1]++;
    37             }
    38         }
    39         printf("%d
    " , ans);
    40     }
    41     return 0;
    42 }
  • 相关阅读:
    vue-router过渡动画
    vue-router重定向
    vue-router url传值
    vue-router多个组件模板放入同一个页面中
    vue-router参数
    vue-router子路由
    vue-router入门
    easyui中parser的简单用法
    webpost中常用的ContentType
    ASP.NET MVC 表单提交多层子级实体集合数据到控制器中
  • 原文地址:https://www.cnblogs.com/CSU3901130321/p/4243841.html
Copyright © 2011-2022 走看看