NOIP模拟题 2015.8.10 T2
HJWJBSR
posted @ 2015年8月16日 22:51
in 题解
, 435 阅读
题解:考场上面没想出来= =,其实是每次操作相当于在u+k,v这个格子放上1然后一直按杨辉三角往上推,于是ai,j,k代表第i行第j列这个数还要往下推k层,然后就直接递推了= =这样就是n^3的,时限只有2s还真是sxbk。
然后还get了一个东西(其实是语法没学好)unsigned int,这东西必须要用%u输入输出
#include <iostream> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; #define N 505 unsigned int a[N][N][N]; int n,m,p; inline int Read() { int x=0;char y; do y=getchar(); while (y<'0'||y>'9'); do x=x*10+y-'0',y=getchar(); while (y>='0'&&y<='9'); return x; } int main() { freopen("num.in","r",stdin);freopen("num.out","w",stdout); n=Read();m=Read();p=Read(); while (p--) { int q=Read(),w=Read(),e=Read(); a[q+e][w][e]++; } for (int i=n;i>=1;i--) for (int j=1;j<=m;j++) for (int k=0;k<=500;k++) a[i][j][k]+=a[i+1][j][k+1]+a[i][j-1][k+1]; for (int i=1;i<=n;i++) { for (int j=1;j<=m;j++) printf("%u ",a[i][j][0]); printf("\n"); } return 0; }