CCF2016.4 - B题

思路:创建两个bool数组来模拟下落过程,一个存放面板状态,一个存放下落的格子。检测格子和面板对应位置是否同时为True,如果是则有冲突,不能继续下落,否则增加行号。为了统一处理,我们把面板最下面加一行True。

 1 import java.util.*;
 2 public class Main {
 3     static boolean[][] board = new boolean[20][20];
 4     static boolean[][] block = new boolean[4][4];
 5     public static void main(String[] args) {
 6         Scanner cin = new Scanner(System.in);
 7         for (int i = 0; i < 15; i++)
 8             for (int j = 0; j < 10; j++)
 9                 board[i][j] = cin.nextInt() == 1;
10         for (int i = 0; i < 10; i++)
11             board[15][i] = true;
12         for (int i = 0; i < 4; i++)
13             for (int j = 0; j < 4; j++)
14                 block[i][j] = cin.nextInt() == 1;
15         int c = cin.nextInt(), r = 0;
16         c--;
17         while (check(r + 1, c))
18             r++;
19         for (int i = 0; i < 4; i++)
20             for (int j = 0; j < 4; j++)
21                 if (block[i][j])
22                     board[r + i][c + j] = true;
23         for (int i = 0; i < 15; i++) {
24             for (int j = 0; j < 9; j++)
25                 System.out.print((board[i][j] ? 1 : 0) + " ");
26             System.out.println(board[i][9] ? 1 : 0);
27         }
28     }
29     static boolean check(int r, int c) {
30         for (int i = 0; i < 4; i++)
31             for (int j = 0; j < 4; j++)
32                 if (board[r + i][c + j] && block[i][j])
33                     return false;
34         return true;
35     }
36 }
时间: 2024-12-10 13:54:49

CCF2016.4 - B题的相关文章

CCF2016.4 - C题

思路:先把路径按反斜杠split成数组,然后用一个ArrayList去模拟.如果遇到空或者.则不处理:如果遇到..则删除ArrayList最后一个元素(注意如果只有1个元素则不删除):其他情况直接加到ArrayList里面.注意特判输入空串的情况. 1 import java.util.*; 2 public class Main { 3 public static void main(String[] args) { 4 Scanner cin = new Scanner(System.in)

CCF2016.4 - A题

思路:枚举每个点,看看它是否同时小于/大于前一个点和后一个点 1 import java.util.Scanner; 2 public class Main { 3 public static void main(String[] args) { 4 Scanner cin = new Scanner(System.in); 5 int n = cin.nextInt(); 6 int[] arr = new int[n]; 7 for (int i = 0; i < n; i++) 8 arr

C#认证第一章1 题 11题

C#第一章第一题 C#认证第一章  11题

[poj2104]可持久化线段树入门题(主席树)

解题关键:离线求区间第k小,主席树的经典裸题: 对主席树的理解:主席树维护的是一段序列中某个数字出现的次数,所以需要预先离散化,最好使用vector的erase和unique函数,很方便:如果求整段序列的第k小,我们会想到离散化二分和线段树的做法, 而主席树只是保存了序列的前缀和,排序之后,对序列的前缀分别做线段树,具有差分的性质,因此可以求任意区间的第k小,如果主席树维护索引,只需要求出某个数字在主席树中的位置,即为sort之后v中的索引:若要求第k大,建树时反向排序即可 1 #include

旧题新做:从idy的视角看数据结构

“今天你不写总结……!!!” 额…… 还是讲我的吧.这些考试都是idy出的题. 20170121:DFS序. ST表.线段树练习 这是第一次考数据结构. Problem 1. setsum 1 second 给你一个长度为N 的整数序列,支持两种操作: • modity l r val 将区间[l,r] 中的所有数修改为val • query l r 询问区间[l,r] 所有数的和 分析:最简单的线段树,区间更改区间求和.但注意是更改,不是添改,sum与flag需同时覆盖. Problem 2.

做预解释题的一点小方法和小技巧

在JavaScript中的函数理解中预解释是一个比较难懂的话题.原理虽然简单,寥寥数言,但其内涵却有深意,精髓难懂.如何在轻松活跃的头脑中将它学会,现在针对我在学习中的一点小窍门给大家分享一下,希望能给大家一些帮助: 万事需遵循"原理"--"预解释"无节操和"this"指向:(可先看例题解析然后结合原理进行学习) (感谢蕾蕾老师给归纳的预解释无节操原理:) 如果函数传参数则先于以下执行,就相当于在函数私有作用域下var了一个变量:根据作用域原理,

hdu 2966 In case of failure kdtree模板题

问求每个点距离平方的最小的点 kd-tree模板题…… 1 #include<bits/stdc++.h> 2 #define cl(a,b) memset(a,b,sizeof(a)) 3 #define debug(x) cerr<<#x<<"=="<<(x)<<endl 4 using namespace std; 5 typedef long long ll; 6 typedef pair<int,int>

2017 计蒜之道 初赛 第一场 A、B题

A题 阿里的新游戏 题目概述: 阿里九游开放平台近日上架了一款新的益智类游戏--成三棋.成三棋是我国非常古老的一个双人棋类游戏,其棋盘如下图所示: 成三棋的棋盘上有很多条线段,只能在线段交叉点上放入棋子.我们可以用坐标系来描述棋盘: 如果一条线段上的三个交叉点都被同一玩家的棋子占据的话,则称这条线段被该玩家 成三.现在,小红和小明两人在游戏平台上下棋,其中小红的棋子是黑色的.请你帮小红计算他成三的线段数. 样例对应的棋盘如下: 输入格式 输入第一行两个整数 n,m(3 \le n, m \le

老男孩教育每日一题-2017年5月11-基础知识点: linux系统中监听端口概念是什么?

1.题目 老男孩教育每日一题-2017年5月11-基础知识点:linux系统中监听端口概念是什么? 2.参考答案 监听端口的概念涉及到网络概念与TCP状态集转化概念,可能比较复杂不便理解,可以按照下图简单进行理解? 将整个服务器操作系统比喻作为一个别墅 服务器上的每一个网卡比作是别墅中每间房间 服务器网卡上配置的IP地址比喻作为房间中每个人 而房间里面人的耳朵就好比是监听的端口 当默认采用监听0.0.0.0地址时,表示房间中的每个人都竖起耳朵等待别墅外面的人呼唤当别墅外面的用户向房间1的人呼喊时