Description

It is always very nice to have little brothers or sisters. You can tease them, lock them in the bathroom or put red hot chili in their sandwiches. But there is also a time when all meanness comes back!
As
you know, in one month it is Christmas and this year you are honored to
make the big star that will be stuck on the top of the Christmas tree.
But when you get the triangle-patterned silver paper you realize that
there are many holes in it. Your little sister has already cut out
smaller triangles for the normal Christmas stars. Your only chance is to
find an algorithm that tells you for each piece of silver paper the
size of the largest remaining triangle.
Given a triangle
structure with white and black fields inside you must find the largest
triangle area of white fields, as shown in the following figure.

Input

The
input contains several triangle descriptions. The first line of each
description contains an integer n (1 <= n <= 100), which gives the
height of the triangle. The next n lines contain characters of the set
{space, #, -} representing the rows of the triangle, where `#' is a
black and `-' a white field. The spaces are used only to keep the
triangle shape in the input by padding at the left end of the lines.
(Compare with the sample input. The first test case corresponds to the
figure.)
For each triangle, the number of the characters `#' and `-' per line is odd and decreases from 2n - 1 down to 1.

The input is terminated by a description starting with n = 0.

Output

For
each triangle in the input, first output the number of the triangle, as
shown in the sample output. Then print the line "The largest triangle
area is a.", where a is the number of fields inside the largest triangle
that consists only of white fields. Note that the largest triangle can
have its point at the top, as in the second case of the sample input.

Output a blank line after each test case.

Sample Input

5
#-##----#
-----#-
---#-
-#-
-
4
#-#-#--
#---#
##-
-
0

Sample Output

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

Source

Southwestern Europe 1997

今天组队练习的题目,cjx因为要赶学校所以就木有做了。跟想的一样应该用dp。暴力应该也可以。

当n=5时:

1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7
0 0 1 2 3 4 5
0 0 0 1 2 3
0 0 0 0 1

因为输入的前面有空格所以要+k
(1->((n-i+1)*2-1)+k) i=[1...n]

输入:
0 1 0 0 1 1 1 1 0
   1 1 1 1 1 0 1
      1 1 1 0 1
         1 0 1
            1

仔细观察三角形第偶数个的小三角形(无法跟上,左上,右上)组成新三角形。
从上往下遍历:j=[1,3,5,7]
dp[i][j]=min(dp[i-1][j-1],dp[i-1][j+1])+1

0 1 0 0 1 1 1 1 0
   1 1 1 1 2 0 1
      2 1 2 0 1
         3 0 1
           1

同样第奇数个的小三角形(无法跟下,左下,右下)组成新三角形。
从下往上遍历:j=[2,4,6,8]
dp[i][j]=min(dp[i+1][j-1],dp[i+1][j+1])+1

0 1 0 0 1 1 1 1 0
   1 1 1 1 2 0 1
      2 1 2 0 1
         3 0 1
            1

输出:max(dp[i][j])^2

 #include <stdio.h>
#include <string.h>
#include <iostream>
#define MAXN 205
using namespace std; int n;
int dp[MAXN][MAXN]; int main()
{
while( scanf("%d",&n)!=EOF && n ){
memset(dp,,sizeof(dp));
int k=;
char ch;
for(int i=; i<=n; i++){
getchar();
for(int j=; j<=((n-i+)*-)+k; j++){
scanf("%c",&ch);
if(ch==' ' || ch=='#'){
dp[i][j]=;
}
if(ch=='-'){
dp[i][j]=;
}
}
k++;
}
for(int i=; i<=n; i++){
for(int j=i; j<=*n-i; j+=){
if(dp[i][j] && dp[i-][j]){
dp[i][j]=min( dp[i-][j-] , dp[i-][j+] )+;
}
}
}
for(int i=n-; i>=; i--){
for(int j=i+; j<=*n-i; j+=){
if(dp[i][j] && dp[i+][j]){
dp[i][j]=min( dp[i+][j-] , dp[i+][j+] )+;
}
}
}
int ans=-;
for(int i=; i<=n; i++){
for(int j=i; j<=*n-i; j++){
if(dp[i][j]>ans){
ans=dp[i][j];
}
}
}
printf("Triangle #%d\n",++c);
printf("The largest triangle area is %d.\n",ans*ans);
puts("");
}
return ;
}

TOJ 1885 Triangles的更多相关文章

  1. Count the number of possible triangles

    From: http://www.geeksforgeeks.org/find-number-of-triangles-possible/ Given an unsorted array of pos ...

  2. TOJ 2776 CD Making

    TOJ 2776题目链接http://acm.tju.edu.cn/toj/showp2776.html 这题其实就是考虑的周全性...  贡献了好几次WA, 后来想了半天才知道哪里有遗漏.最大的问题 ...

  3. [ACM_搜索] Triangles(POJ1471,简单搜索,注意细节)

    Description It is always very nice to have little brothers or sisters. You can tease them, lock them ...

  4. acdream.Triangles(数学推导)

    Triangles Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Submit Stat ...

  5. UVA 12651 Triangles

    You will be given N points on a circle. You must write a program to determine how many distinctequil ...

  6. hdu 1885 Key Task

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1885 Key Task Description The Czech Technical Univers ...

  7. Codeforces Gym 100015F Fighting for Triangles 状压DP

    Fighting for Triangles 题目连接: http://codeforces.com/gym/100015/attachments Description Andy and Ralph ...

  8. Codeforces Round #309 (Div. 1) C. Love Triangles dfs

    C. Love Triangles Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/553/pro ...

  9. Codeforces Round #308 (Div. 2) D. Vanya and Triangles 水题

    D. Vanya and Triangles Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/55 ...

随机推荐

  1. Glide4.0使用

    导入 dependencies { compile 'com.github.bumptech.glide:glide:4.0.0' compile 'com.android.support:suppo ...

  2. C 可变参数的宏定义

    宏定义 也能来可变参数..吼吼..方便好多.. #define T(x,y...) printf(x,##y); C99标准..这我也管不到.... 关键是那个 ... 和 ## 我也不推荐到首页.记 ...

  3. 《C#多线程编程实战》2.8 Barrier

    不得不说,C#的同步线程的机制是真的多. 各式各样.几乎各种场景下都有可以使用的同步机制. 今天说的,就是比较有意思了. 等待的机制很简单,单纯的等待. 使用的方法我就等. 等待的东西或者内容则是你自 ...

  4. C# 接口(2)

    接口的实现方式. 接口的实现分两种: 1 显示实现接口 2 实现接口. 我们前面所得的接口的实现均为实现接口.也就是第二种方式.那么我们来来看第第一种实现方式: interface IHuman { ...

  5. SQL数据库查询语言(1)

    目录 MySQL数据库 MySQL安装与配置 DDL数据定义语言 创建数据库 查看.删除数据库 修改.备份.恢复数据库 创建表 修改表 MySQL常用数据类型 DML数据操纵语言 Insert语句 m ...

  6. 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛

    Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...

  7. BZOJ2668:[CQOI2012]交换棋子(费用流)

    题目描述 有一个n行m列的黑白棋盘,你每次可以交换两个相邻格子(相邻是指有公共边或公共顶点)中的棋子,最终达到目标状态.要求第i行第j列的格子只能参与mi,j次交换. 输入输出格式 输入格式: 第一行 ...

  8. Django rest framework框架——APIview源码分析

    一.什么是rest REST其实是一种组织Web服务的架构,而并不是我们想象的那样是实现Web服务的一种新的技术,更没有要求一定要使用HTTP.其目标是为了创建具有良好扩展性的分布式系统. 可用一句话 ...

  9. Java面向对象之USB接口实例

    一.需求: 1.在电脑上设置一个USB接口. 2.电脑运行时,将鼠标连接到接口上,鼠标可以使用自己的功能. 3.电脑运行时,将键盘连接到接口上,键盘可以使用自己的功能.(使用接口的作用:减低鼠标.键盘 ...

  10. P2045 方格取数加强版 最大费用最大流

    $ \color{#0066ff}{ 题目描述 }$ 给出一个n*n的矩阵,每一格有一个非负整数Aij,(Aij <= 1000)现在从(1,1)出发,可以往右或者往下走,最后到达(n,n),每 ...