首页 > 其他分享 >hdu 5256(最长上升子序列)

hdu 5256(最长上升子序列)

时间:2023-06-28 23:02:46浏览次数:40  
标签:hdu 5256 修改 int scanf pos ++ 序列


题意:我们有一个数列A1,A2…An,你现在要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。
请输出最少需要修改多少个元素。
题解:这是一个很机智的想法,每个数字和它的对应位置的差值存到数组s中,n - s序列的最长上升子序列就是解。

#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 100005;
int n, s[N], f[N];

int main() {
    int t, cas = 1;
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        int a;
        for (int i = 0; i < n; i++) {
            scanf("%d", &a);
            s[i] = a - i;
        }
        int k = 0;
        f[k++] = s[0];
        for (int i = 1; i < n; i++) {
            if (s[i] >= f[k - 1])
                f[k++] = s[i];
            else {
                int pos = upper_bound(f, f + k, s[i]) - f;
                f[pos] = s[i];
            }
        }
        printf("Case #%d:\n%d\n", cas++, n - k);
    }
    return 0;
}


标签:hdu,5256,修改,int,scanf,pos,++,序列
From: https://blog.51cto.com/u_10729926/6577230

相关文章

  • hdu 3117(矩阵快速幂)
    题意:求斐波那契序列的第n个数。如果超过8位,只输出前4位和后4位。题解:后4位比较好办,直接mod10000就可以了,前4位不知道怎么求,网上看到一个人写的很详细易懂,需要用到斐波那契通项公式,详细见→传送门#include<stdio.h>#include<math.h>#include<string.h>structMat{long......
  • hdu 5254(暴力)
    题解:暴力所有点,直到不存在可以0变1的点。#include<stdio.h>#include<string.h>constintN=505;intn,m,k,g[N][N],temp[N][N],vis[N][N];booljudge(intx,inty){if(x-1>=0&&y-1>=0){if(temp[x-1][y]&&te......
  • hdu 2855(矩阵快速幂)
    题意:计算公式题解:想推出矩阵相乘的形式,想了很久也想不出,然后看别人的题解有一个高中就学过的式子:(1+x)^n=Cn0x^n+Cn1x^(n-1)+Cn2x^(n-2)+Cn3x^(n-3)+····+Cnn然后想到斐波那契矩阵是{1,1,1,0},1看做一个单位阵{1,0,1,0},就会做了。。。#include<stdio.h>#include......
  • 10redis列表操作,其他操作,redis管道,django中使用redis,django缓存,序列化json和pickle,cel
    字符串和字节转换的两种方式#字符串和字节转换的两种方式 -decode,encode-直接类型转换-bytes格式的16进制,2进制,10进制的显示#字符串需要用encode,bytes格式需要用decode,但是有时候忘了#可以直接进行强转b1=bytes(s,encoding='utf-8') print(......
  • 2023-06-28:你想要用小写字母组成一个目标字符串 target。 开始的时候,序列由 target.le
    2023-06-28:你想要用小写字母组成一个目标字符串target。开始的时候,序列由target.length个'?'记号组成而你有一个小写字母印章stamp。在每个回合,你可以将印章放在序列上,并将序列中的每个字母替换为印章上的相应字母你最多可以进行10*target.length个回合举个例子,如......
  • 2023-06-28:你想要用小写字母组成一个目标字符串 target。 开始的时候,序列由 target.le
    2023-06-28:你想要用小写字母组成一个目标字符串target。开始的时候,序列由target.length个'?'记号组成而你有一个小写字母印章stamp。在每个回合,你可以将印章放在序列上,并将序列中的每个字母替换为印章上的相应字母你最多可以进行10*target.length个回合举个例子,如果初始......
  • hdu 1241(dfs)
    ProblemDescriptionTheGeoSurvCompgeologicsurveycompanyisresponsiblefordetectingundergroundoildeposits.GeoSurvCompworkswithonelargerectangularregionoflandatatime,andcreatesagridthatdividesthelandintonumeroussquareplots.......
  • 【Java】使用 fasterxml.jackson 反序列化的一个注意事项
    我们在对接接口时,不时会遇到以Json格式返回数据的接口。后端解析此类接口返回数据时,不免需要进行反序列化以获取到需要的数据对象。常用的反序列化工具有 Fastjson、Jackson、Gson。这三种都是不错的Json处理工具,我这里较常用的是Jackson。使用 Jackson反序列化:1.......
  • js promise对象数组,使用reduce序列化执行
    自己使用mdn官方例子测试了一下,发现还有一些小问题,调试了一下OK了。consttimeOut=function(ms){ returnnewPromise(function(resolve){ returnsetTimeout(resolve,ms); })}varp1=function(){ returnnewPromise(function(resolve){ console.log(newDate()+'......
  • 免费修复一加手机高通崩溃qualcomm crashdump mode
    qualcommcrashdumpmodequalcommcrashdumpmodequalcommcrashdumpmode高通崩溃高通崩溃高通崩溃希望崩溃的小朋友们,送修之前能搜到。。线刷下载,挨个刷。。国内找个网站比较恶心,下载要要两块钱。。这个免费。。。https://onepluscommunityserver.com/list/Unbrick_Too......