Ural 1287
来源:互联网 发布:h5微场景源码 编辑:程序博客网 时间:2024/06/03 04:10
PRO IS HERE
n*n矩阵,统计连续的横,竖,斜的'S' 和 's' 的个数的最大值,输出较大的那个。
暴力dp
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<set>#include<queue>#include<map>using namespace std;#define FOR(i,a,b) for(int (i)=(a);(i)<=(b);(i)++)#define DOR(i,a,b) for(int (i)=(a);(i)>=(b);(i)--)#define bug puts("Fuck");#define LL long long#define pb push_back#define mp make_pair#define nMax 1410#define eps 1e-8#define inf 0x7fffffffint dp[nMax][nMax][2][4];char s[nMax][nMax];int n;int l[2];int dx[]={0,-1,-1,-1};int dy[]={-1,-1,0,1};void sovle(){l[0]=l[1]=0;FOR(i,1,n) FOR(j,1,n) FOR(k,0,1) FOR(z,0,3)if(s[i][j] == k) {dp[i][j][k][z] = dp[i+dx[z]][j+dy[z]][k][z] + (s[i][j]==k?1:0);if(dp[i][j][k][z] > l[k]) l[k]=dp[i][j][k][z];}else dp[i][j][k][z] = 0;//printf("%d %d\n",l[0],l[1]);if(l[0]>l[1]) printf("s\n%d\n",l[0]);else if(l[0]<l[1]) printf("S\n%d\n",l[1]);else printf("?\n%d\n",l[0]);}int main(){#ifndef ONLINE_JUDGE freopen("input.txt","r",stdin);//freopen("output.txt","w",stdout);#endifwhile(~scanf("%d",&n)){FOR(i,1,n) {scanf("%s",s[i]+1);FOR(j,1,n) s[i][j] = (s[i][j]=='s' ? 0 : 1);}sovle();}return 0;}
- Ural 1287
- URAL
- 【ural】
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- URAL
- vc++ Edit Box 使用方法详解和小实例
- 友善官方<<Mini2440 Linux移植开发实战指南>>问题勘误录
- abstract和谁不能共存?
- 101条关于计算机的经典语录
- 给定一个链表的头指针,要求只遍历一次,将单链表中的元素的顺序翻转过来
- Ural 1287
- C语言代码规范
- CRichEditCtrl系列讲堂1 VC中在对话框上使用Rich Edit控件相关问题
- 范冰冰登顶2013福布斯名人榜 孙俪升74名
- GitHub开源项目SlidingMenu简介
- 大数,乘法
- Linux操作系统调优参数的意义
- ViewPager滑动切换界面
- javascript深入理解js闭包