您当前的位置: 首页 > 

*DDL_GzmBlog

暂无认证

  • 2浏览

    0关注

    605博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[题解|总结|分析] 2021年度训练联盟热身训练赛第七场

*DDL_GzmBlog 发布时间:2021-05-02 18:50:23 ,浏览量:2

目录 按AC先后顺序
  • Problem A: Adolescent Architecture(排序+思维)
    • 题意
    • 思路分析
    • 总结
  • Problem F: Flip Flow(模拟)
    • 思路分析
    • 总结
  • (*牛逼)Problem M: Mixtape Management(构造+思维)
    • 思路分析
    • 总结
  • Problem L: Lexicographical Lecturing(水题,暴力+优化)
    • 总结
  • Problem K: Knightly Knowledge(离散+贪心)
    • 思路分析:
    • 总结:
    • code

Problem A: Adolescent Architecture(排序+思维) 题意

输入

给你n个(正方体积木或者圆住积木), 让你一层放一个 下面n行 一个string表示(正方体or圆柱体), 一个int表示该方块的半径or边长

条件限制:

摆出来的积木形状必须是塔的形状 允许轮廓相交

输出

如果不可行输出 impossible 否则 从上到下输出 string 和 int

思路分析

因为是塔 所以我们需要对这个数组进行排序 如果遇到了圆柱体 那么我们就分两种情况判断 一种是 圆柱体+ 正方体 一种是 圆柱体+圆柱体

code:

#include 
using namespace std;
typedef long long  ll;
double q2 = 1.414;
const int N = 110;
int n;
struct node
{
    double a;
    int op;
} num[N];
bool cmp(node x,node y )
{
    if(x.a==y.a)
        return x.opn;

    double  x;
    string s;
    for(int i=1; i>s;
        cin>>x;
        if(s == "cube")
        {
            num[i].a = x;
            num[i].op = 1;
        }
        else
        {
            num[i].a = x*2;
            num[i].op = 0;
        }
    }

    sort(num+1,num+1+n,cmp);
    for(int i = n;i>=2;i -- )
    {
        if(num[i].op == 0 && num[i-1].op == 1)
        {
            double pd = num[i-1].a *q2 ;

            if(pd>num[i].a)
            {
                cout            
关注
打赏
1657615554
查看更多评论
0.3065s