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. react-native-echarts构建的图表出现滚动条并且可以滑动的问题

    前段时间做echarts饼状图,按照官方提供的写法完成以后图表可以出来,但是虚拟机上演示出现了滚动条,并且拖动时就会出现空白,双击会缩小像这样       参考GitHub上给出的方法修改成功: no ...

  2. Sobel算法

    最近看了一些Sobel算法,并试了一下,源码如下: private void Sobel(Bitmap img) { int width = img.Width; int height = img.H ...

  3. 【SQL】- 基础知识梳理(七) - 索引

    索引的概念 在关系型数据库中,索引是对数据库表中一列或多列的值进行排序的一种结构. SQL SERVER中有索引的类型:按存储结构区分:“聚集索引(又称聚类索引,簇集索引)”,“分聚集索引(非聚类索引 ...

  4. angular 守卫路由

    import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; im ...

  5. angular 子路由

    const routes: Routes = [ { path: '', redirectTo: '/home', pathMatch: 'full' }, { path: 'home', compo ...

  6. asp.net core 外部认证多站点模式实现

    PS:之前因为需要扩展了微信和QQ的认证,使得网站是可以使用QQ和微信直接登录.github 传送门 .然后有小伙伴问,能否让这个配置信息(appid, appsecret)按需改变,而不是在 Con ...

  7. linux chmod对文件权限的操作

    在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读.写.运行设定权限. 例如我用ls -l命令列文件表时,得到如下输出: -rw-r--r-- 1 apple users ...

  8. 连接数据库+注册->登录->抽奖(有关联关系的接口)

    注册账号信息需要写入数据库,登录和抽奖时从数据库获取数据 一.连接数据库 my_sql.py: import pymysql class MyDb: def __init__(self,host,pa ...

  9. ubuntu 16.4安装toolsbelt heroku

    https://devcenter.heroku.com/articles/getting-started-with-python#set-up # Run this from your termin ...

  10. 题解 CF950B 【Intercepted Message】

    题目链接 先吐槽一番:本宝宝好久没写过题解了...首先我们想一个贪心策咯.就是我们预处理出前缀和,然后一边扫过去,记录一个l1,l2和一个n1,n2.分别表示我们现在第一个数组切到l1,上一次切是在n ...