HDU ACM 4500 小Q系列故事——屌丝的逆袭

分析:水题,注意计算某个位置的分数时他自己的不算,加减都是绝对值(一开始这里还理解错了)。

#include<iostream>
#include<cmath>
using namespace std;

int a[25][25];

int main()
{
	int i,j,n,m;
	int maxv,maxi,maxj,tmp;

	while(cin>>n>>m && n+m)
	{
		for(i=0;i<n;i++)
			for(j=0;j<m;j++)
				cin>>a[i][j];

		maxv=-100000000;
		for(i=0;i<n;i++)
			for(j=0;j<m;j++)
			{
				tmp=0;
				if(i>0)
				{
					if(a[i][j]*a[i-1][j]<0)
						tmp+=abs(a[i-1][j]);
					else
						tmp-=abs(a[i-1][j]);
				}
				if(j>0)
				{
					if(a[i][j]*a[i][j-1]<0)
				    	tmp+=abs(a[i][j-1]);
					else
						tmp-=abs(a[i][j-1]);
				}
				if(i<n-1)
				{
					if(a[i][j]*a[i+1][j]<0)
						tmp+=abs(a[i+1][j]);
					else
						tmp-=abs(a[i+1][j]);
				}
				if(j<m-1)
				{
					if(a[i][j]*a[i][j+1]<0)
						tmp+=abs(a[i][j+1]);
					else
						tmp-=abs(a[i][j+1]);
				}
				if(maxv<tmp)
				{
					maxv=tmp;
					maxi=i;
					maxj=j;
				}
			}
		cout<<maxi+1<<" "<<maxj+1<<" "<<maxv<<endl;
	}
	return 0;
}
时间: 2024-10-09 11:53:04

HDU ACM 4500 小Q系列故事——屌丝的逆袭的相关文章

HDU 4500 小Q系列故事——屌丝的逆袭

腾讯的题目,一条简单的搜索题目,适合初学者练习代码能力,或者是高手休息脑子的题,呵呵,不需要动脑了,只动手打代码就过了. 不过腾讯这故事有点坏啊,给人透露了两个信息: 1 腾讯不拘一格降人才 2 进入腾讯就可以屌丝逆袭了 腾讯是不是还想说腾讯的mm特别多? 呵呵,出题不忘给自己宣传一下. #include <stdio.h> #include <limits.h> const int MAX_NM = 20; int N, M; int matrix[MAX_NM][MAX_NM]

HDU 4500 小Q系列故事——屌丝的逆袭(简单题)

http://acm.hdu.edu.cn/showproblem.php?pid=4500 AC代码: 1 #include<math.h> 2 #include<stdio.h> 3 4 #define MAXN 21 5 6 int n, m, ki[MAXN][MAXN]; 7 int wi[4]={0, 1, 0, -1}, 8 wj[4]={-1, 0, 1, 0}; 9 10 bool input(){ 11 scanf("%d%d", &

HDU4500 小Q系列故事——屌丝的逆袭【模拟】

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4500 题目大意: 工作室的布局是N*M的矩形,每个单位上有一名员工.每个位置由一个价值.每一个位置的 价值和其上.下.左.右四个邻居的魅力值有关.如果一个位置的邻居与这个位置的员工性别 不同,则该位置的价值总分加上这个邻居的魅力值,性别相同的话就下去邻居的魅力值.最终 得分就是这个位置的价值.(输入的时候,男生魅力值用负数表示,女生魅力值用正数表示) 那么问题来了:问哪个位置的魅力值最大,计算并输

HDU ACM 4515 小Q系列故事——世界上最遥远的距离

分析:最容易的方法就是一天一天的模拟了. #include<iostream> using namespace std; int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; #define Y 2013 #define M 3 #define D 24 bool leap(int y) { return y%400==0 || y%4==0&&y%100!=0; } void change(int k,int fg) //-1回到过

HDU ACM 4510 小Q系列故事——为什么时光不能倒流

分析:水题. #include<iostream> using namespace std; int main() { int x1,y1,z1,x2,y2,z2; int n,x3,y3,z3; cin>>n; while(n--) { scanf("%d:%d:%d",&x1,&y1,&z1); scanf("%d:%d:%d",&x2,&y2,&z2); x3=y3=z3=0; z3=z1

HDU ACM 4505 小Q系列故事——电梯里的爱情

分析:水题,电梯要上到最高层还要回到最底层,所以电梯上下的时间等于最高层乘以10,电梯开门完的时间为5加上人数,因为下一个人只需1秒. #include<iostream> using namespace std; int main() { int f[105]; int i,sum; int C,n,a,max; cin>>C; while(C--) { cin>>n; memset(f,0,sizeof(f)); sum=0; max=-1; for(i=0;i&l

HDU ACM 4511 小明系列故事——女友的考验-&gt;AC自动机+DP

分析:参考别人的搞. 1.AC自动机: 使用AC自动机来压缩路段,如禁掉的路段是1->2->3,那么插入字符串(123) ,注意点只有1~50,所以0~50用ASCII 压缩成字符串即可. 这样就能够完成禁止路段的在线状态转移. 2.DP部分: 两点之间的最短路.dp[i][j]表示在地点i,当前字符是j的状态. 初始化:fill(&dp0][0],&dp[maxn-1][maxp-1],inf),inf=1e12,memset不能用. 边界:首先找出出发点在Pool中的位置,

HDU ACM 4506 小明系列故事——师兄帮帮忙 -&gt;简单快速幂

分析:t单位时间后i的位置将变化到(i+t)%n位置上,下标i从0开始,之后快速幂完成. #include<iostream> using namespace std; __int64 f_pow(__int64 a,__int64 b,__int64 mod) { __int64 s=1; while(b>0) { if(b&1) s=s*a%mod; a=a*a%mod; b>>=1; } return s; } int main() { int T; __int

HDU ACM 4501 小明系列故事——买年货-&gt;多维背包(多为01背包)

分析:dp[l][i][j][k]表示选前l件时花费i元,积分j,免费p时能获得的最大价值.k值也作为一种背包算. 状态转移方程: dp[l][i][j][k] = max(dp[l][i][j][k], dp[l-1][i-a[l]][j][k]+c[i], dp[l-1][i][j-b[l]][k]+c[i], dp[l-1][i][i][k-1]+c[i])  (k > 0, i >= a[l] , j >= b[l], k= 1,2,3,4....n) a[l]表示第l种用现金要