U5398 改数(num)
U5398 改数(num)
题目背景
又是一年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]。
输出格式:
输出一个整数,表示最少改多少个数。
输入输出样例
5
1 2 4 5 11
1
说明
对于30%的数据N<=1000
对于100%的数据1<=N<=100000
输入的其他数据的绝对值均小于等于109
AC代码+题解:
/*
一种想法是可以枚举每一个数,将它固定,然后根据固定的数求出别的数,更新答案;这样是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=;i<=n;i++){
scanf("%d",&a[i]);
num[i]=num[i-]+i-;
zh1[i]=a[i]-num[i];
}
sort(zh1+,zh1+n+);
int tot=,p=,ans;
for(int i=;i<=n;i++){
if(zh1[i]!=zh1[i-]){
if(p>tot)tot=p,ans=zh1[i-];
p=;
}
else p++;
}
if(p>tot) ans=zh1[n];
tot=;
for(int i=;i<=n;i++) if(a[i]!=ans+num[i])tot++;
printf("%d",tot);
return ;
}
U5398 改数(num)的更多相关文章
- 改数(洛谷 U5398)
题目背景 又是一年NOIP,科学馆的五楼:"我们看下这道题,我们来模拟一下-2,3,5,7,12-这其实就是一个a[i+1]-a[i]=i的序列--"那熟悉的凌波教鞭,熟悉的憨厚的 ...
- 线程安全性:num++操作为什么也会出问题?
线程的安全性可能是非常复杂的,在没有充足同步的情况下,由于多个线程中的操作执行顺序是不可预测的,甚至会产生奇怪的结果(非预期的).下面的Tools工具类的plus方法会使计数加一,为了方便,这里的nu ...
- .Net_用控制台程序打印指定行数的三角型(面试题)
.Net_用控制台程序打印指定行数的三角型(面试题) 下面是一个由*号组成的4行倒三角形图案.要求: 1.输入倒三角形的行数,行数的取值3-21之间,对于非法的行数,要求抛出提示“非法行数!”: ...
- note 5 二分法求平方根,素数,回文数
+二分法求平方根 x = float(raw_input('Enter the number')) low = 0 high = x guess = (low + high ) / 2 if x &l ...
- C. cltt的幸运数LCAdfs
/*C: cltt的幸运数 Time Limit: 1 s Memory Limit: 128 MB Submit Problem Description 一棵树有n个节点,共m次查询,查询 ...
- 剑指offer三十三之丑数
一.题目 如果一个数的因子中,出去1和本身以外,质数因子只包含2.3和5,则把改数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质数因子7. 习惯上我们把1当做是第一个 ...
- “肥宅快乐数”-python暴力版
编写一个函数来判断一个数是不是“快乐数”.一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1.如 ...
- C语言程序设计100例之(14):丑数
例14 丑数 问题描述 丑数是其质因子只可能是2,3或5的数.前10个丑数分别为1, 2, 3, 4, 5, 6, 8, 9, 10, 12.输入一个正整数n,求第n个丑数. 输入格式 每行为一个 ...
- # python04---函数
python04---函数 一. 初识函数 """ def 函数名(参数): 函数体 返回值 """ # def: 定义函数关键字 # 函数 ...
随机推荐
- smali语法中文版
作者:Gabor Paller 翻译:YULIANGMAX v1.0 表中的vx.vy.vz表示某个Dalvik寄存器.根据不同指令可以访问16.256或64K寄存器. 表中lit4.lit8. ...
- 【转】handler.removeCallbacks失效问题
package com.example.demoactivity; import android.app.Activity; import android.os.Bundle; import andr ...
- Android开发--Apache服务器安装,解决Apache服务无法启动的问题
昨天学习Android XML解析的时候,想在自己的电脑上搭建一个最简单的Web服务器来存放一段XML文本,然后在Android程序中解析,查找了一些资料后,看到Apache服务器比较容易上手,使用范 ...
- 【读书笔记】iOS-UIWindow-WindowLevel
WindowLevel是UIWindow的一个属性.系统定义的一共有3种. UIKIT_EXTERN const UIWindowLevel UIWindowLevelNormal; UIKIT_EX ...
- 【读书笔记】iOS-GCD-系统提供的dispatch方法
系统提供的dispatch方法如下: //系统提供的dispatch方法 //后台执行: dispatch_async(dispatch_get_global_queue(0, 0), ^{ // s ...
- Android Activity使用拾遗
一.onWindowFocusChanged 有时我们需要测量一个Activity多长时间才能显示出来,那么在代码中打点计时的时机选在哪儿呢?在onCreate和onResume执行完成后,Activ ...
- 关于 xib 的使用
前两天写百度地图的时候要添加 一个标注的泡泡view 但有些复杂所以想用xib 拖拽出一个View ,拖拽出来之后发现添加不到Controller中 ,郁闷!! 终于找到了方法: //先获取NIb ...
- spring boot 1.4.1 with jsp file sample
<!--pom.xml--> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...
- java实现栈和队列
class Node { int val; Node next; Node(int x) { val = x; next = null; } } class Stack { Node top; pub ...
- Java集合 之 Queue集合
什么是Queue集合? 答:Queue用于模拟队列这种数据结构.队列通常是指“先进先出(FIFO)”的容器.队列的头部保存在队列中存放时间最长的元素,尾部保存存放时间最短的元素.新元素插入到队列的尾部 ...