Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 145 Accepted Submission(s): 123
1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cmath> 5 #include <ctime> 6 #include <iostream> 7 #include <map> 8 #include <set> 9 #include <algorithm> 10 #include <vector> 11 #include <deque> 12 #include <queue> 13 #include <stack> 14 using namespace std; 15 typedef long long LL; 16 typedef double DB; 17 #define MIT (2147483647) 18 #define MLL (1000000000000000001LL) 19 #define INF (1000000001) 20 #define For(i, s, t) for(int i = (s); i <= (t); i ++) 21 #define Ford(i, s, t) for(int i = (s); i >= (t); i --) 22 #define Rep(i, n) for(int i = (0); i < (n); i ++) 23 #define Repn(i, n) for(int i = (n)-1; i >= (0); i --) 24 #define mk make_pair 25 #define ft first 26 #define sd second 27 #define puf push_front 28 #define pub push_back 29 #define pof pop_front 30 #define pob pop_back 31 #define sz(x) ((int) (x).size()) 32 inline void SetIO(string Name) 33 { 34 string Input = Name + ".in"; 35 string Output = Name + ".out"; 36 freopen(Input.c_str(), "r", stdin); 37 freopen(Output.c_str(), "w", stdout); 38 } 39 40 inline int Getint() 41 { 42 char ch = ‘ ‘; 43 int Ret = 0; 44 bool Flag = 0; 45 while(!(ch >= ‘0‘ && ch <= ‘9‘)) 46 { 47 if(ch == ‘-‘) Flag ^= 1; 48 ch = getchar(); 49 } 50 while(ch >= ‘0‘ && ch <= ‘9‘) 51 { 52 Ret = Ret * 10 + ch - ‘0‘; 53 ch = getchar(); 54 } 55 return Ret; 56 } 57 58 const int N = 60, Dx[] = {1, 0, -1, 0}, Dy[] = {0, 1, 0, -1}; 59 int n, m, Map[N][N]; 60 61 inline void Solve(); 62 63 inline void Input() 64 { 65 int TestNumber = Getint(); 66 while(TestNumber--) 67 { 68 n = Getint(); 69 m = Getint(); 70 For(i, 1, n) 71 For(j, 1, m) Map[i][j] = Getint(); 72 Solve(); 73 } 74 } 75 76 inline void Solve() 77 { 78 int Ans = 0; 79 For(i, 1, n + 1) Map[i][m + 1] = 0; 80 For(i, 1, m + 1) Map[n + 1][i] = 0; 81 For(i, 1, n) 82 For(j, 1, m) { 83 if(!Map[i][j]) continue; 84 Ans ++; 85 Rep(k, 4) 86 { 87 int x = i + Dx[k], y = j + Dy[k]; 88 if(Map[x][y] >= Map[i][j]) continue; 89 Ans += Map[i][j] - Map[x][y]; 90 } 91 } 92 printf("%d\n", Ans); 93 } 94 95 int main() 96 { 97 Input(); 98 //Solve(); 99 return 0; 100 }
2015ACM/ICPC亚洲区长春站 L hdu 5538 House Building
原文:http://www.cnblogs.com/StupidBoy/p/4937433.html