首页 > 其他分享 >P1284 三角形牧场

P1284 三角形牧场

时间:2024-03-28 18:12:11浏览次数:26  
标签:int db 牧场 wh P1284 ans 三角形 total line

原题链接

题解

1.看到数据范围很小,所以我们可以穷举
如何穷举呢?
三个方向的背包dp,令 \(dp[i][j][k]\) 来表示 三边长度为 \(i,j,k\) 时能否达到,然后最外面一维是所用的木板
由于她想用所有的木板 所以 \(k=total-i-j\) ,所以可以变成两维
注意这里的背包dp要倒着来,不然继承的状态是刚刚才刷新的状态

code

#include<bits/stdc++.h>
using namespace std;
int line[50];
int wh[1605][1605]={0};
#define db double
double area(db i,db j,db k)//方便计算
{
    double p=(i+j+k)/2;
    return sqrt(p*(p-i)*(p-j)*(p-k));
}
int main()
{
    ios::sync_with_stdio(false);
    int n,total=0;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>line[i];
        total+=line[i];
    }

    wh[0][0]=1;
    for(int k=1;k<=n;k++)
    {
        for(int i=total;i>=0;i--)
        {
            for(int j=total;j>=0;j--)//不管三角形的限制,直接算就完了
            {
                if(i>=line[k]) wh[i][j]|=wh[i-line[k]][j];
                if(j>=line[k]) wh[i][j]|=wh[i][j-line[k]];
            }
        }
    }

    double ans=0;
    int flag=0;
    for(int i=1;i<=total;i++)
    {
        for(int j=1;j<=total;j++)
        {
            int k=total-i-j;
            if(i+j>k&&k+j>i&&k+i>j&&wh[i][j])//在这里再考虑是否是三角形
            {
                ans=max(ans,area((db)i,(db)j,(db)k));
                flag=1;
            }
        }
    }

    if(!flag) puts("-1");
    else printf("%.0lf",floor(ans*100));
    return 0;
}

标签:int,db,牧场,wh,P1284,ans,三角形,total,line
From: https://www.cnblogs.com/pure4knowledge/p/18102314

相关文章

  • 三角形的面积公式
    前言三角形面积公式从小学开始,随着知识面的拓宽,衍生出了好多不同的形式。公式列举1、\(S_{\triangleABC}=\cfrac{1}{2}\cdota\cdoth_a\);小学数学中的内容,2、\(S_{\triangleABC}=\cfrac{1}{2}ab\sinC=\cfrac{1}{2}bc\sinA=\cfrac{1}{2}ca\sinB\);高中内容,[1]应用①:在......
  • 动态规划刷题(算法竞赛、蓝桥杯)--数字三角形(线性DP)
    1、题目链接:[USACO1.5][IOI1994]数字三角形NumberTriangles-洛谷#include<bits/stdc++.h>usingnamespacestd;intr;constintN=1010;inta[N][N];intmain(){ cin>>r; for(inti=1;i<=r;i++){ for(intj=1;j<=i;j++){ cin>>a[i][j]; ......
  • 蓝桥杯练习题总结(三)线性dp题(摆花、数字三角形加强版)
    目录 一、摆花思路一: 确定状态:初始化:思路二:确定状态:初始化:循环遍历: 状态转移方程: 二、数字三角形加强版一、摆花题目描述小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆。通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号。为了......
  • C语言经典例题(7) --- 计算三角形的周长和面积、球体的体积、变种水仙花数、时间转换
    文章目录1.计算三角形的周长和面积2.计算球体的体积3.变种水仙花数4.时间转换5.输出学生信息1.计算三角形的周长和面积题目描述:根据给出的三角形3条边a,b,c(0<a,b,c<100,000),计算三角形的周长和面积。输入描述:一行,三角形3条边(能构成三角形),中间用一个空......
  • 打印三角形
    /***************************/publicclassTestDemo01{publicstaticvoidmain(String[]args){//打印三角形5行for(inti=1;i<=5;i++){for(intj=5;j>=i;j--){......
  • 最大三角形
    原题链接题解选的点一定是凸包上的点?code#include<bits/stdc++.h>usingnamespacestd;structpoi{doublex,y;}node[50005];intq[100005];doublecal(inta,intb,intc){doublex1=node[a].x-node[b].x,y1=node[a].y-node[b].y,x2=node[b].x-node[c].x,y......
  • 三角形的各种线的向量刻画 | 难点
    前言三角形中的各种常用的线段,若换用向量形式的符号语言来刻画,则大多学生可能会极度恐惧,因此有必要将三角形中常用的各种线段的向量表示形式好好作以总结储备。常用结论1、与非零向量\(\vec{a}\)共线的单位向量\(\vec{a_0}\)为两个,\(\vec{a_0}=\pm\cfrac{\vec{a}}{|\vec{a}......
  • 数字三角形(左右步数差不能超过一)
    题目选自https://www.lanqiao.cn/courses/31015/learning/?id=1926986这个题目虽然跟正常的数字三角形一样使用dp动态规划做的,但是在题目的最后一行提到左右选择的次数差要小于一;那么也就是说我们自顶向下找,设立一个数组dp[i][j]用来存放已到达i行j列的最优解。找完n行之后我......
  • 三角形面积和周长
    ‘’’写—段程序,让用户输入三角形的三条边长,如果三条边长不能构成三角形,则提示用户重新输入如果可以构成三角形,则计算周长和面积对于用户的输入,首先要约定格式,这里简单的约定为每个边长之间用空格间隔在获得用户的输入以后,要对输入进行检查,有两点需要检查(1)检查是不......
  • 字符三角形/字符菱形
    #include<iostream>#include<iomanip>usingnamespacestd;intmain(){ chara; inte=1,j,t=31; for(inti=0;i<10;i++){ j=65; cout<<setw(t-1); t--; for(inth=0;h<e;h++){ a=j; cout<<a; j++; } e+=2; cout&......