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. python 爬虫proxy,BeautifulSoup+requests+mysql 爬取样例

    实现思路: 由于反扒机制,所以需要做代理切换,去爬取,内容通过BeautifulSoup去解析,最后入mysql库 1.在西刺免费代理网获取代理ip,并自我检测是否可用 2.根据获取的可用代理ip去发 ...

  2. Autofac的Autofac.Core.Activators.Reflection.DefaultConstructorFinder错误解决方案。

    在使用Autofac的时候,不给力,看着例子来的,人家没问题,我就报了Autofac.Core.Activators.Reflection.DefaultConstructorFinder错误. 百般 ...

  3. HDU6300-2018ACM暑假多校联合训练1003-Triangle Partition

    题意是给3n个点,其中不可能存在任意三点共线的情况,让你在其中建n个三角形,点不能重复使用,三角形不能相互覆盖 做法是给每个点排序,按照先y轴排,再x轴排的顺序,三个三个一组从下往上输出,有人说是凸包 ...

  4. linux系统安全及应用——弱口令检测

    Joth the Ripper,简称JR,一款密码分析工具,支持字典式的暴力破解,通过对shadow文件的口令分析,可以检测密码强度,官方网站http://www.openwall.com/john/ ...

  5. 16、OpenCV Python 腐蚀和彭胀

    __author__ = "WSX" import cv2 as cv import numpy as np def erode_demo(image): print(image. ...

  6. pg_basebackup命令解析

    pg_basebackup命令首先解析输入的参数,再调用BaseBackup()函数进行备份处理. 在BaseBackup()函数内部,会首先传送WAL日志(如果指定了-x选项的话).随后依次遍历所有 ...

  7. P2561 [AHOI2002]黑白瓷砖

    $ \color{#0066ff}{ 题目描述 }$ \(\color{#0066ff}{输入格式}\) 文件中以一行的形式存放一个正整数 n , n ≤ 20 . \(\color{#0066ff} ...

  8. C# 使用List<T> 内存溢出

    class Program    {        static void Main(string[] args)        {            var all = new List< ...

  9. 如何在SQLServer中处理每天四亿三千万记录的(数据库大数据处理)

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  10. [SCOI2009]windy数 BZOJ1026 数位dp

    题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? 输入输出格式 输 ...