HDU 4451 Dressing
先从衣服处理到裤子,在从裤子处理到鞋子
#include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <queue> #include <vector> #include <cmath> #include <map> #include <string> using namespace std; const int maxn=1000+10; long long A[maxn][maxn]; long long B[maxn][maxn]; long long ans1[maxn],ans2[maxn]; char s1[1000],s2[1000]; int x,y; int n,m,k,p; int main() { while(~scanf("%d%d%d",&n,&m,&k)) { if(!n&&!m&&!k) break; scanf("%d",&p); memset(ans1,0,sizeof ans1); memset(ans2,0,sizeof ans2); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) A[i][j]=0; for(int i=1;i<=m;i++) for(int j=1;j<=k;j++) B[i][j]=0; for(int i=1; i<=p; i++) { scanf("%s",s1); scanf("%d",&x); scanf("%s",s2); scanf("%d",&y); if(strcmp("clothes",s1)==0) A[x][y]=1; else if(strcmp("pants",s1)==0) B[x][y]=1; } for(int j=1; j<=m; j++) { long long sum=0; for(int i=1; i<=n; i++) { if(A[i][j]==0) sum=sum+1; } ans1[j]=sum; } for(int j=1; j<=k; j++) { long long sum=0; for(int i=1; i<=m; i++) { if(B[i][j]==0) { sum=sum+ans1[i]; } } ans2[j]=sum; } long long ans=0; for(int i=1; i<=k; i++) ans=ans+ans2[i]; printf("%lld\n",ans); } return 0; }