题意:

给定一块正三角形棋盘,然后给定一些棋子和空位,棋子序号为a(1<=a<=9),group的定义是相邻序号一样的棋子。

然后到C(1<=N<=9)棋手在空位放上自己序号C的棋子, 放完后, 不与空位相邻的group被消去, 每消去一个不是C的棋子得一分, 消去C的棋子扣一分, 问能得到最多的分数是多少。

分析:

令ans = 0;

搜索每一个棋子, 找出他的group。

如果这个group不与空位相邻, 而且棋子与棋手序号相等, 那么ans -= group数量, 如果棋子不与棋手序号相等 ans += group数量

可以不设置全局变量来找出搜索块的数量

代码:

 #include <cstdio>
#include <cstring>
#include <ios>
using namespace std;
const int maxn = ;
int N, C;
int dir[][] = { {-, },{-, -},{, -},{, },{, },{, } };
bool vis[maxn][maxn];
int board[maxn][maxn];
bool conetZero = ;
int dfs(int x, int y, int c)
{
if(board[x][y] == )
{
conetZero = ;
return ;
}
vis[x][y] = ;
int cnt = ;
for(int d = ; d < ; d++)
{
int tx = x, ty = y;
tx += dir[d][], ty += dir[d][];
if(tx <= || tx > N || ty <= || ty > tx || vis[tx][ty])
continue;
if(board[tx][ty] == c || board[tx][ty] == )
cnt += dfs(tx,ty, c);
}
return cnt;
}
int solve()
{
memset(vis, , sizeof(vis));
int ans = ; for(int i = ; i <= N; i++)
for(int j = ; j <= i; j++)
{
if(board[i][j] != && !vis[i][j])
{
conetZero = ;
int temp = dfs(i,j,board[i][j]);
if(!conetZero){
ans += board[i][j] == C ? -temp: temp;
}
}
}
return ans;
}
int main()
{
while(~scanf("%d %d", &N, &C) && N)
{ memset( board , , sizeof(board) ); for(int i = ; i <= N; i++)
for(int j = ; j <= i; j++)
scanf("%d", &board[i][j] ); int ans = -; for(int i = ; i <= N; i++)
for(int j = ; j <= i; j++)
{
if( board[i][j] == ){
board[i][j] = C;
ans = max( ans, solve() );
board[i][j] = ;
}
} printf("%d\n", ans); }
return ;
}

POJ 1414 Life Line(搜索)的更多相关文章

  1. POJ.3279 Fliptile (搜索+二进制枚举+开关问题)

    POJ.3279 Fliptile (搜索+二进制枚举+开关问题) 题意分析 题意大概就是给出一个map,由01组成,每次可以选取按其中某一个位置,按此位置之后,此位置及其直接相连(上下左右)的位置( ...

  2. poj 3279 Fliptile (简单搜索)

    Fliptile Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16558   Accepted: 6056 Descrip ...

  3. POJ 1475 Pushing Boxes 搜索- 两重BFS

    题目地址: http://poj.org/problem?id=1475 两重BFS就行了,第一重是搜索箱子,第二重搜索人能不能到达推箱子的地方. AC代码: #include <iostrea ...

  4. Remmarguts' Date POJ - 2449 (A*搜索|k短路)

    "Good man never makes girls wait or breaks an appointment!" said the mandarin duck father. ...

  5. poj 1163 The Triangle 搜索 难度:0

    The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37931   Accepted: 22779 De ...

  6. poj 1426(同余搜索)

    Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26926   Accepted: 111 ...

  7. Test for Job (poj 3249 记忆化搜索)

    Language: Default Test for Job Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9733   A ...

  8. poj 1198 hdu 1401 搜索+剪枝 Solitaire

    写到一半才发现能够用双向搜索4层来写,但已经不愿意改了,干脆暴搜+剪枝水过去算了. 想到一个非常水的剪枝,h函数为  当前点到终点4个点的最短距离加起来除以2.由于最多一步走2格,然后在HDU上T了, ...

  9. POJ 1324 Holedox Moving 搜索

    题目地址: http://poj.org/problem?id=1324 优先队列---A*的估价函数不能为蛇头到(1,1)的距离,这样会出错. 看了discuss,有大神说这题A*的估价函数为BFS ...

随机推荐

  1. 无法获得VMCI 驱动程序的版本: 句柄无效的解决方法

    关闭虚拟机,找到安装路径,用记事本打开.vmx结尾的文件 将vmci0.present = "TRUE"改为vmci0.present = "FALSE"保存

  2. AtCoder Grand Contest 003 E - Sequential operations on Sequence

    题目传送门:https://agc003.contest.atcoder.jp/tasks/agc003_e 题目大意 一串数,初始为\(1\sim N\),现有\(Q\)个操作,每次操作会把数组长度 ...

  3. 后缀数组 DC3构造法 —— 详解

    学习了后缀数组,顺便把DC3算法也看了一下,传说中可以O(n)复杂度求出文本串的height,先比较一下倍增算法和DC3算法好辣. DC3 倍增法 时间复杂度 O(n)(但是常数很大)   O(nlo ...

  4. Counting The Important Pairs CodeChef - TAPAIR

    https://vjudge.net/problem/CodeChef-TAPAIR 合法的删除方法: 第一种:桥边与其余任意边(1)桥*(桥-1)/2(两条桥边)(2)桥*(m-桥)(桥边+其他边) ...

  5. Mirror Number SPOJ - MYQ10

    Mirror Number SPOJ - MYQ10 题意:http://blog.csdn.net/hcbbt/article/details/38349367 稍微改一下http://www.cn ...

  6. Database UVA - 1592

    对于每组数据,首先通过一个map将每个字符串由一个数字代替,相同的字符串由相同数字代替,不同的字符串由不同数字代替.那么题目就变为了询问是否存在行r1,r2以及列c1,c2使得str[r1][c1]= ...

  7. Kruskal HDOJ 1863 畅通工程

    题目传送门 /* 此题为:HDOJ 1233 + HDOJ 1232 */ #include <cstdio> #include <algorithm> #include &l ...

  8. RHEL 6.5----CDN(lumanger)

    主机名  IP   服务 master 192.168.30.130  CDN(LuManager) slave 192.168.30.131  DNS  软件安装包下载地址及安装方法 http:// ...

  9. P1615 西游记公司

    题目背景 一道极其无厘头的题目 题目描述 事情是这样的:西游记中的孙沙猪(孙杀猪)三徒弟在西天取经之后开始进入厦门大学经贸系学习经济,在1个小时的学习后,他们用暴力手段毕业了.然后,他们创办了三个公司 ...

  10. Windows API函数大全三

    7. API之位图.图标和光栅运算函数 BitBlt 将一幅位图从一个设备场景复制到另一个 CopyIcon 制作指定图标或鼠标指针的一个副本.这个副本从属于发出调用的应用程序 CopyImage 复 ...