UVA 10131 Is Bigger Smarter? 【严格单调递增子序列】

题目:UVA 10131 Is Bigger Smarter


题意:给出大象的身高和体重,求身高递增且体重递减的最长序列,都是严格的,并打印序列。


分析:就是先对身高按自增排序,然后求一个单调递减子序列,严格单调的,所以加一句判断,然后打印序列,用一个数组保存就好了

开始想的是先预处理掉重复的,提交wa了,这样不行,因为你不知道体重是最高的还是最低的,可能开始留高的好,后面低的比较好。所以.....


AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include <map>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
const int N = 2000;
const int inf = 0x3f3f3f3f;
struct Node
{
    int w,h;
    int num,dp;
};
vector<Node> v;
vector<int> ans;
int cmp(Node a,Node b)
{
    if(a.w!=b.w)
        return a.w<b.w;
}
int father[N];
int main()
{
    //freopen("Input.txt","r",stdin);
    int cnt=1;
    Node tmp;
    while(~scanf("%d%d",&tmp.w,&tmp.h)) //输入
    {
        tmp.num=cnt++;
        tmp.dp=0;
        v.push_back(tmp);
    }
    sort(v.begin(),v.end(),cmp);
    memset(father,0,sizeof(father));
    v[0].dp=1;
    bool ok=false;
    int count=0,ss=1,ttp=1;
    for(int i=1; i<v.size(); i++)
    {
        int ff=0,cas=0;
        for(int j=i-1; j>=0; j--)
        {
            if(v[i].h<v[j].h && v[i].w!=v[j].w)
            {
                if(ff<v[j].dp)
                {
                    ff=v[j].dp;
                    cas=j;
                }
            }
        }
        v[i].dp=ff+1;
        father[i]=cas;
        if(count<v[i].dp)
        {
            count=v[i].dp;
            ss=i;
            if(ok)
            {
                ttp=i;
                ok=true;
            }
        }
    }
    printf("%d\n",count);
    for(int i=ss;i>=ttp;i=father[i])
    {
        ans.push_back(v[i].num);
    }
    for(int i=ans.size()-1;i>=0;i--)
        printf("%d\n",ans[i]);
    v.clear();
    v.clear();
    ans.clear();
    return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Got a packet bigger than 'max_allowed_packet' bytes" 这个错误是MySQL数据库的一个错误提示。它表示一个数据包的大小超过了配置的最大允许值。这个错误可能会在向数据库中插入或更新大型数据时发生。 为了解决这个问题,可以调整 MySQL 的 max_allowed_packet 参数的值。这个参数定义了单个数据包的最大大小。可以通过修改配置文件、在命令行中指定参数或者在 MySQL 实例中执行 SET GLOBAL max_allowed_packet 命令来修改该参数的值。 例如,可以通过在命令行中执行以下命令来设置 max_allowed_packet 的值为 32MB: ``` mysql --max_allowed_packet=32M ``` 这样设置之后,MySQL 就可以处理更大的数据包了,从而避免了 "Got a packet bigger than 'max_allowed_packet' bytes" 错误的发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [[Err] 1153 - Got a packet bigger than 'max_allowed_packet' bytes(linux环境).pdf](https://download.csdn.net/download/lvlei19911108/20838930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Got a packet bigger than ‘max_allowed_packet’ bytes?问题解决](https://blog.csdn.net/HCW_wei/article/details/121397922)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Got a packet bigger than 'max_allowed_packet' bytes 问题的解决方法](https://blog.csdn.net/qq_43293244/article/details/85114537)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值