1923. Scary Politics (timus) (dfs) search
http://acm.timus.ru/problem.aspx?space=1&num=1923 -- timus
This is s problem about thd dfs and searching like the leetcode islands problems
Creating three 2-D arrays: board, land(copy), visit.
board: the input, land:(0: undecided, 1: B country, 2: M country), visit
invading the land one by one.
for each fill, operation:
if land[i][j] = enemy return;
if land[i][j] = 0 && board[i][j] = alliance: land[i][j] = empire // 1 or 2
if land[i][j] = empire; check the neighbors of each location from board.
Heads-up: checking the boundary and visited(stack overflow)
import java.util.Scanner;
public class timus1923 {
static int visit[][] = new int[55][55];
//empire B: 1, M:2, a: original land, copy: terriority
static void fill(int x, int y, int alligance, int empire,int a[][], int copy[][],int n, int m){
if(x<0 || y<0 || x>=n || y>=m) return;//our of boundary
//check the empire board
if(visit[x][y] == 1) return;
visit[x][y] = 1;
int enemy = 0;
if(empire==1) enemy = 2;
else enemy =1;
if(copy[x][y] == enemy) return;//enemy's land
if(copy[x][y]==0 && a[x][y] == alligance) copy[x][y] = empire;
if(copy[x][y]==empire) {
fill(x-1,y,alligance,empire,a,copy,n,m);
fill(x,y-1,alligance,empire,a,copy,n,m);
fill(x+1,y,alligance,empire,a,copy,n,m);
fill(x,y+1,alligance,empire,a,copy,n,m);
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int m = in.nextInt();
int a[][] = new int[n+1][m+1];
int copy[][] = new int[n+1][m+1];// emprire land
//int tag[] = new int[5];
for(int i = 0; i<n; i++){
String str = in.next();
for(int j = 0; j< m; j++){
a[i][j] = str.charAt(j)-'0';
//tag[a[i][j]] ++;
}
}
int l = in.nextInt();
int b[] = new int[l+1];
for(int i = 0; i<l; i++){
b[i] = in.nextInt();
}
int countB = 0;
int countM = 0;
copy[n-1][0] = 1;
copy[0][m-1] = 2;
//start from
fill(n-1,0,a[n-1][0],1,a,copy,n,m);
fill(0,m-1,a[0][m-1],2,a,copy,n,m);
for(int i = 0; i<l; i++){
//init visi
for(int j = 0; j<55; j++){
for(int k = 0; k<55; k++){
visit[j][k] = 0;
}
}
if(i%2==0){
fill(n-1,0,b[i],1,a,copy,n,m);
}else{
fill(0,m-1,b[i],2,a,copy,n,m);
}
}
for(int i =0; i<n; i++){
for(int j = 0; j<m; j++){
if(copy[i][j] == 1) countB++;
else if(copy[i][j] == 2) countM++;
}
}
System.out.println(countB);
System.out.println(countM);
}
}
Life is funny.
1923. Scary Politics (timus) (dfs) search的更多相关文章
- dfs+search
1.数的划分 点击查看搜索 #include<iostream> #include<cstdio> #include<cmath> #include<algo ...
- Principle of Computing (Python)学习笔记(7) DFS Search + Tic Tac Toe use MiniMax Stratedy
1. Trees Tree is a recursive structure. 1.1 math nodes https://class.coursera.org/principlescomputin ...
- [LeetCode#212]Word Search II
Problem: Given a 2D board and a list of words from the dictionary, find all words in the board. Each ...
- Leetcode: Android Unlock Patterns
Given an Android 3x3 key ≤ m ≤ n ≤ , count the total number of unlock patterns of the Android lock s ...
- PE刷题记录
PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...
- Android Unlock Patterns
Given an Android 3x3 key lock screen and two integers m and n, where 1 ≤ m ≤ n ≤ 9, count the total ...
- Trie for string LeetCode
Trie build and search class TrieNode { public: TrieNode * next[]; bool is_word; TrieNode(bool b = fa ...
- 582. Kill Process
Problem statement: Given n processes, each process has a unique PID (process id) and its PPID (paren ...
- Leetcode: Closest Leaf in a Binary Tree
Given a binary tree where every node has a unique value, and a target key k, find the value of the n ...
随机推荐
- Android RecyView 滑动置指定位置
1,直接回到顶部 recyview.getLinearLayoutManager().scrollToPositionWithOffset(0, 0); 2,慢慢的回到顶部 private void ...
- linux / OS 杀死进程
1,查询端口 sudo netstat -apn | grep 端口号 2,杀死进程kill -9 应用程序进程id
- 如何使用线程安全的HashMap
转载:https://blog.csdn.net/qq_31493821/article/details/78855069 HashMap为什么线程不安全 导致HashMap线程不安全的原因可能有两种 ...
- 9 Strings
1 Strings 1.1 Strings and GStrings Groovy允许你使用2种不同类型的字符串类型,分别是java.lang.String和groovy.lang.GS ...
- 创建第一个vue工程
vue创建项目(npm安装→初始化项目) 第一步npm安装 首先:先从nodejs.org中下载nodejs 图1 双击安装,在安装界面一直Next 图2 图3 图4 直到Finish ...
- php数组·的方法-数组排序
/* * * 数组排序函数*/ //asort() 数组元素值升序排序 //arsort() 降序 $arr7=array(1,23,65,34,3,2,3,34,453,54,456,65,5); ...
- Fortran和C的编译器PGI部署
平台信息 Description: CentOS Linux release 7.6.1810 (Core) 安装步骤 获取PGCC:社区版是免费的,自带license.dat 解压下载的压缩包:ta ...
- 笔记-spring aop 原理学习2
InstantiationAwareBeanPostProcessor AnnotationAwareAspectJAutoProxyCreator https://blog.csdn.net/qq_ ...
- 性能测试工具LoadRunner08-LR之Virtual User Generator 检查点
步骤: 1.点击Vuser--->Run-Time Settings 2.点击Preferences--->Enable Image and text check 3.点击Content ...
- C#本期本周的算法
C#根据当前时间获取,本周,本月,本季度等时间段 DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays( - Conve ...