改数(洛谷 U5398)

题目背景

又是一年NOIP,科学馆的五楼:“我们看下这道题,我们来模拟一下…2,3,5,7,12…这其实就是一个a[i+1]-a[i]=i的序列……”那熟悉的凌波教鞭,熟悉的憨厚的声音,那熟悉的...哦,还有那熟悉的来自未来某位神牛的发言:“老师,好像有个数写错了……”

题目描述

给出一个长度为n的整数序列a,你能改动最少的数,使之满足a[i+1]-a[i]=i(1<=i<n)么?

输入输出格式

输入格式:

输入第一行包含一个整数n

第二行包含n个整数,分别表示a[1]到a[n]。

输出格式:

输出一个整数,表示最少改多少个数。

输入输出样例

输入样例#1:

5
1 2 4 5 11

输出样例#1:

1

说明

对于30%的数据N<=1000

对于100%的数据1<=N<=100000

输入的其他数据的绝对值均小于等于109

/*
  一种想法是可以枚举每一个数,将它固定,然后根据固定的数求出别的数,更新答案;这样是O(n^2)的;根据这个理论,可以将每一个数固定,然后直接求出a1,看那个a1相同的次数最多,那个就是答案。
*/
#include<cstdio>
#include<algorithm>
#include<iostream>
#define N 100010
using namespace std;
int a[N],num[N],zh1[N],n;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        num[i]=num[i-1]+i-1;
        zh1[i]=a[i]-num[i];
    }
    sort(zh1+1,zh1+n+1);
    int tot=0,p=1,ans;
    for(int i=2;i<=n;i++)
      if(zh1[i]!=zh1[i-1])
      {
          if(p>tot)tot=p,ans=zh1[i-1];
          p=1;
      }
      else p++;
    if(p>tot)ans=zh1[n];
    tot=0;
    for(int i=1;i<=n;i++)
      if(a[i]!=ans+num[i])tot++;
    printf("%d",tot);
    return 0;
}
时间: 2024-08-06 20:02:46

改数(洛谷 U5398)的相关文章

方格取数洛谷p1004

题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 0 0 0 0 7 0 0 0 0 0 0 14 0 0 0 0 0 21 0 0 0 4 0 0 0 0 15 0 0 0 0 0 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 . B 某人从图的左上角的A点出发,可以向下行走,也可以向右走,直到到达右下角的B 点.在走过的路上

拼数--洛谷1012

分析:转化为字符串,然后按照字典序比较全排列,找出最大的 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string> 5 #include<cmath> 6 using namespace std; 7 const int maxn=22; 8 string str[maxn]; 9 int a[maxn]; 10 int n; 11 string

洛谷P1108 低价购买[DP | LIS方案数]

题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它.买的次数越多越好!你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数.你将被给出一段时间内一支股票每天的出售价(2^16范围内的正整数),你可以选择在哪些天购买这支股票.每次购买都必须遵循“低价购买:再低价购买”的原则.写一个程序计算最大购买次数. 这里是某支股票的价格清单: 日期 1 2

洛谷OJ P1045 麦森数 解题报告

洛谷OJ P1045 麦森数 解题报告 by MedalPluS   题目描述 形如2P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有909526位.麦森数有许多重要应用,它与完全数密切相关. 任务:从文件中输入P(1000<P<3100000),计算2P-1的位数和最后500位数字(用十进制高精度数表示)   输入描述   文件中只包含一个整数P(1000&l

洛谷 P1106 删数问题 题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:https://www.luogu.org/problem/show?pid=1106 题目描述 键盘输入一个高精度的正整数N,去掉其中任意k个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的N和k,寻找一种方案使得剩下的数字组成的新数最小. 输出应包括所去掉的数字的位置和组成的新的正整数.(N不超过250位) 输入数据均不需判错. 输入输出格式 输入格式: n (高精度的正整数) k (需要删除的数字

洛谷 P1005 矩阵取数游戏

题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2.每次取走的各个元素只能是该元素所在行的行首或行尾: 3.每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分 = 被取走的元素值*2^i,其中i表示第i次取数(从1开始编号): 4.游戏结束总得分为m次取数得分之和. 帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分. 输入输

洛谷1288 取数游戏II 博弈论

洛谷1288 取数游戏II 博弈论 最优策略 一定是你一步把值走完,然后我再走完,这样不给别人留后路 然后这样走 只要自己从左走 或者从右走其中有一个有奇数步可走,则说明是必胜局 如果都是只能走偶数步的,就是必败局 . 另一个题解 首先,对于一条链a1,a2,a3,a4......0 如果是偶数条边,那么现手一定赢,因为他每一次都只用把后面一条取完,例如 5 4 3 6 5 0 先手取完5,后手没法回到前一个位置,而无论接下来后手去多少,先手继续取完3,再然后取完5,后手没办法再去,先手赢.就这

洛谷——P2421 A-B数对(增强版)

题目背景 woshiren在洛谷刷题,感觉第一题:求两数的和(A+B Problem)太无聊了,于是增加了一题:A-B Problem,难倒了一群小朋友,哈哈. 题目描述 给出N 个从小到大排好序的整数,一个差值C,要求在这N个整数中找两个数A 和B,使得A-B=C,问这样的方案有多少种? 例如:N=5,C=2,5 个整数是:2 2 4 8 10.答案是3.具体方案:第3 个数减第1 个数:第3 个数减第2 个数:第5 个数减第4 个数. 输入输出格式 输入格式: 第一行2 个正整数:N,C.

洛谷1231 教辅的组成

洛谷1231 教辅的组成 https://www.luogu.org/problem/show?pid=1231 题目背景 滚粗了的HansBug在收拾旧语文书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题.然而出现在他眼前的书多得数不胜数,其中有书,有答案,有练习册.已知一个完整的书册均应该包含且仅包含一本书.一本练习册和一份答案,然而现在全都乱做了一团.许多书上面的字迹都已经模糊了,然而HansBug还是可