问题描述:
离圣诞节只有一个月了,家里要你准备一个很大的星星,然后把它粘在圣诞树的顶端。你已经准备好了一个三角形的银色包装纸来做星星,可忽然有一天你发现在这张大纸上被弄了好多的小洞,原来是你的弟弟妹妹已经从这张大纸上剪掉了许多小的三角形,做了很多小星星。现在,你只能将就了,看怎样才能从这残缺的大纸中,找出一块最大的完整的三角形。
如下图所示,假设给你一张大的三角形纸,里面黑的三角形是被你的弟弟妹妹剪掉了的,需要你在剩下的白色区域中找出一个最大的三角形区域。

问题求解:
你现在要找出这样一个算法,并用程序实现它。

输入格式:

输入文件包括几组关于大三角形样子的描述。输入每一组的第一行是一个整数N(1≤N≤100)表示下面要描述的大三角形的高度。接下来的N行将用许多字符模拟出大三角形的样子,其中用“X”表示被剪掉的小三角形(即上图中的黑三角形),用“O”表示 白色区域。每行字符个数从(2N-1)到1递减。如果组首为0,则表示结束。

输出格式:

对于输入中的每一个三角形,输出一个数,表示剩下部分所能得到的最大的三角形的面积,而该数就是其中所包含的小三角形的个数。输出格式如样例,如第2组数据,最大面积为4,则输出:
Triangle #2
The largest triangle area is 4

样例输入:

5
XOXXOOOOX
OOOOOXO
OOOXO
OXO
O
4
XOXOXOO
XOOOX
XXO
O
0

样例输出:

Triangle #1
The largest triangle area is 9
Triangle #2
The largest triangle area is 4

数据范围:

0≤N≤100
数据组数据<=100

题解:这题刚开始是真的想不到,只知道是个DP但不知道状态怎么转移,因为我想的是三角形不断变大,最上面一行的三角形就
不断增加,这要我怎么记录?
最后看了一下题解才豁然省悟,每个三角形f[i,j]只和f[i-1,j],f[i-1,j-1],f[i,j-2]有关!每个大三角形中都有许多这样的小三角形(4个组成)
dp方程就是if a[i-1,j-1]是不是白色,那么f[i,j]=min(f[i-1,j],f[i-1,j-2])+1。(最小的那个才连的起来)不需要f[i-1,j],f[i,j-2]是否是白色区域,刚开始预处理白色为1,黑色为0。因为正倒三角形都有可能,所以正反都搜一次。f[i,j]:=min(f[i+1,j],f[i+1,j+2])+1.
代码就不贴啦。

三角形xjoi 8.14的更多相关文章

  1. 三角网格(Triangle Mesh)的理解

    最简单的情形,多边形网格不过是一个多边形列表:三角网格就是全部由三角形组成的多边形网格.多边形和三角网格在图形学和建模中广泛使用,用来模拟复杂物体的表面,如建筑.车辆.人体,当然还有茶壶等.图14.1 ...

  2. 3D math primer for graphics and game development

    三角网格(Triangle Mesh) 最简单的情形,多边形网格不过是一个多边形列表:三角网格就是全部由三角形组成的多边形网格.多边形和三角网格在图形学和建模中广泛使用,用来模拟复杂物体的表面,如建筑 ...

  3. 你未必知道的49个CSS知识点

    作者:老姚,<JS正则迷你书>的作者 https://github.com/qdlaoyao/css-gif 本文的每一条,都是我曾经发过的掘金沸点,其中有很多条超过了百赞(窃喜).鉴于时 ...

  4. C++基础练习1

    1 /* 2 //读入一个双精度浮点数,保留12位小数输出这个浮点数. 3 #include<iostream> 4 #include <iomanip> 5 using na ...

  5. 图像数据到网格数据-2——改进的SMC算法的实现

    概要 本篇接上一篇继续介绍网格生成算法,同时不少内容继承自上篇.上篇介绍了经典的三维图像网格生成算法MarchingCubes,并且基于其思想和三角形表实现了对样例数据的网格构建.本篇继续探讨网格生成 ...

  6. 9.14[XJOI] NOIP训练33

    今日9.14 洛谷打卡:大凶!!!(换个字体玩玩qwq) -------------------------------------------------------- 一个超颓的上午 今天又是fl ...

  7. XJOI夏令营501-511NOIP训练14——好朋友

    传送门:QAQQAQ 题意:noip2011就要来了,W校的同学们不仅看重这次比赛,更看重noip2011和谁住在同一个房间.同学之间的关系好坏可以用一个亲密值表示,亲密值越大,两个同学关系越好.小A ...

  8. XJOI 夏令营501-511NOIP训练14 砍树(2)

    小A是小B家的园丁.小B的家里有n棵树,第i棵树的横坐标为i.一天,小B交给小A一个任务,让他降低自己家中的某些树木的高度.这个任务对小A来说十分简单,因为他有一把极其锋利的斧头和一门独门砍树秘籍,能 ...

  9. CSharpGL(14)用geometry shader渲染模型的法线(normal)

    +BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(14)用geometry shader渲染模型的法线(normal) +BIT祝威+悄悄在此留下版了个权的信息说: 2016-08-13 ...

随机推荐

  1. 部署Smokeping

    1.环境安装 # yum -y install gcc* perl* httpd* libxml2 libxml2-devel libpng libpng-devel glib2 glib2-deve ...

  2. 解决Could not get lock /var/cache/apt/archives/lock

    在ubuntu apt-get upgrade的时候,遇到: E: Could not get lock /var/cache/ apt/archives/lock - open (11 Resour ...

  3. Android(java)学习笔记44:Map集合的遍历之键值对对象找键和值

    1. Map集合的遍历之 键值对对象找 键和值: package cn.itcast_01; import java.util.HashMap; import java.util.Map; impor ...

  4. HDU 1853 MCMF

    题意:给定一个有向带权图,使得每一个点都在一个环上,而且权之和最小. 分析:每个点在一个环上,入度 = 出度 = 1,拆点入点,出点,s到所有入点全部满载的最小费用MCMF; #include < ...

  5. Let’s Encrypt 最近很火的免费SSL 使用教程

    2015年10月份,微博上偶然看到Let's Encrypt 推出了beta版,作为一个曾经被https虐出血的码农来说,这无疑是一个重磅消息.并且在全站Https的大趋势下,Let's Encryp ...

  6. 二分图最大权值匹配 KM算法 模板

    KM算法详解+模板 大佬讲的太好了!!!太好了!!! 转载自:http://www.cnblogs.com/wenruo/p/5264235.html KM算法用来求二分图最大权完美匹配. 本文配合该 ...

  7. ES6学习笔记(对象)

    1.属性的简洁表示法 const foo = 'bar'; const baz = {foo}; baz // {foo: "bar"} // 等同于 const baz = {f ...

  8. 【luogu P3952 时间复杂度】 题解

    对于2017 D1 T2 这道题 实实在在是个码力题,非常考验耐心. 其实大体的思路并不是非常难想出来,但是要注意的小细节比较多. 题目链接:https://www.luogu.org/problem ...

  9. c语言描述的简单选择排序

    基本思想:首先,选出最小的数,放在第一个位置:然后,选出第二小的数,放在第二个位置:以此类推,直到所有的数从小到大排序 #include<stdio.h> #include<stdl ...

  10. 怎么得到scrollTop

    我们学习一个事件 :  页面滚动效果 window.onscroll = function() { 页面滚动语句  } 谷歌浏览器 和没有声明 DTD  <DOCTYPE     > : ...