NOIP模拟题 2015.8.6 T3
NOIP模拟题 2015.8.9 T3

NOIP模拟题 2015.8.10 T2

HJWJBSR posted @ 2015年8月16日 22:51 in 题解 , 406 阅读

题解:考场上面没想出来= =,其实是每次操作相当于在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;
 }

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter