这题昨天晚上花了我1个小时50多分钟来搞,都没有搞定。。后来看别人代码,直接暴力枚举第一个数的值来做。。最多1000*1000的复杂度。当时怎么就没想到呢?还有为啥我的方法不对呢。。

暴力方法代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define Mod 1000000007
using namespace std;
#define N 1007 int a[N]; int main()
{
int n,k,i,j,tmp,maxi,cnt,now,mini;
while(scanf("%d%d",&n,&k)!=EOF)
{
for(i=;i<=n;i++)
scanf("%d",&a[i]);
mini = Mod;
for(i=;i<=;i++)
{
cnt = ;
tmp = i;
for(j=;j<=n;j++)
{
if(a[j] != tmp)
cnt++;
tmp += k;
}
if(cnt < mini)
{
mini = cnt;
now = i;
}
}
printf("%d\n",mini);
tmp = now;
for(i=;i<=n;i++)
{
if(a[i] > tmp)
printf("- %d %d\n",i,a[i]-tmp);
else if(a[i] < tmp)
printf("+ %d %d\n",i,tmp-a[i]);
tmp += k;
}
}
return ;
}

自己的做法:

做一个参考数组b[],存放1,1+k,1+2k....1+(n-1)k,然后a,b两数组(a为原数组)个元素相减,得出差值数组cha,且将cha复制一份给cha2,将cha2从大到小排序,得出差值大于0的最大连续相同的差值(差值小于0肯定不行,因为从1开始的b数组是底线,比b还小说明会小于0,与题意不符),以最大连续差值的这些数为基准,这些数不变,将其他数变为使整个数组满足Ai+1-Ai = k,此时形成标准数组biao[],然后比较a[]和biao[],得出操作数和操作序列。但是就是不对,,不知道为啥,那位好心人如果发现这样那里不对欢迎向我指出,谢谢。

自己代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define Mod 1000000007
using namespace std;
#define N 1007 int a[N],biao[N],cha[N],b[N],cha2[N]; int cmp(int ka,int kb)
{
return ka>kb;
} int main()
{
int n,k,i,j,flag;
while(scanf("%d%d",&n,&k)!=EOF)
{
for(i=;i<=n;i++)
scanf("%d",&a[i]);
for(i=;i<=n;i++)
b[i] = +(i-)*k;
for(i=;i<=n;i++)
{
cha[i] = a[i]-b[i];
cha2[i] = cha[i];
}
sort(cha2+,cha2+n+,cmp);
int cnt = ;
int maxi = ;
for(i=;i<=n;i++)
{
if(cha2[i] < )
break;
if(cha2[i] == cha2[i-])
cnt++;
else
{
if(cnt > maxi)
{
maxi = cnt;
flag = cha2[i-];
cnt = ;
}
}
}
if(cnt > maxi)
{
maxi = cnt;
flag = cha2[i-];
}
for(i=;i<=n;i++)
{
if(cha[i] == flag)
{
break;
}
}
for(j=i;j>=;j--)
biao[j] = a[i]-k*(i-j);
for(j=i+;j<=n;j++)
biao[j] = a[i]+k*(j-i);
cnt = ;
for(i=;i<=n;i++)
{
if(a[i]!=biao[i])
cnt++;
}
printf("%d\n",cnt);
for(i=;i<=n;i++)
{
if(a[i] != biao[i])
{
if(a[i] > biao[i])
{
printf("- %d %d\n",i,a[i]-biao[i]);
}
else
printf("+ %d %d\n",i,biao[i]-a[i]);
}
}
}
return ;
}

Codeforces 402B --耻辱的一题的更多相关文章

  1. Codeforces#441 Div.2 四小题

    Codeforces#441 Div.2 四小题 链接 A. Trip For Meal 小熊维尼喜欢吃蜂蜜.他每天要在朋友家享用N次蜂蜜 , 朋友A到B家的距离是 a ,A到C家的距离是b ,B到C ...

  2. You Are Given a Decimal String... CodeForces - 1202B [简单dp][补题]

    补一下codeforces前天教育场的题.当时只A了一道题. 大致题意: 定义一个x - y - counter :是一个加法计数器.初始值为0,之后可以任意选择+x或者+y而我们由每次累加结果的最后 ...

  3. codeforces 1165F1/F2 二分好题

    Codeforces 1165F1/F2 二分好题 传送门:https://codeforces.com/contest/1165/problem/F2 题意: 有n种物品,你对于第i个物品,你需要买 ...

  4. Codeforces 675C Money Transfers 思维题

    原题:http://codeforces.com/contest/675/problem/C 让我们用数组a保存每个银行的余额,因为所有余额的和加起来一定为0,所以我们能把整个数组a划分为几个区间,每 ...

  5. Topcoder SRM 619 DIv2 500 --又是耻辱的一题

    这题明明是一个简单的类似约瑟夫环的问题,但是由于细节问题迟迟不能得到正确结果,结果比赛完几分钟才改对..耻辱. 代码: #include <iostream> #include <c ...

  6. Codeforces Gym 100531G Grave 水题

    Problem G. Grave 题目连接: http://codeforces.com/gym/100531/attachments Description Gerard develops a Ha ...

  7. Codeforces 1137D - Cooperative Game - [交互题+思维题]

    题目链接:https://codeforces.com/contest/1137/problem/D 题意: 交互题. 给定如下一个有向图: 现在十个人各有一枚棋子(编号 $0 \sim 9$),在不 ...

  8. Codeforces 767B. The Queue 模拟题

    B. The Queue time limit per test:1 second memory limit per test:256 megabytes input:standard input o ...

  9. 多种方法过Codeforces Round #270的A题(奇偶法、打表法和Miller_Rabin(这个方法才是重点))

    题目链接:http://codeforces.com/contest/472/problem/A 题目: 题意:哥德巴赫猜想是:一个大于2的素数一定可以表示为两个素数的和.此题则是将其修改为:一个大于 ...

随机推荐

  1. Spark集群 + Akka + Kafka + Scala 开发(4) : 开发一个Kafka + Spark的应用

    前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + S ...

  2. DWR的Reverse Ajax技术实现

    DWR的逆向ajax其实主要包括两种模式:主动模式和被动模式.其中主动模式包括Polling和Comet两种,被动模式只有Piggyback这一种. 所谓的Piggyback指的是如果后台有什么内容需 ...

  3. jquery 下拉选择框/复选框常用操作

    通常 1.我们需要获取select中选中的值,可以使用: $("#selectID").find("option:selected").val();  --一般 ...

  4. Linux初学者指南

    1.为啥我们要学习Linux? 我们干嘛要学习Linux? Linux能给我们带来什么价值呢? Linux给我的感觉就是稳定,免费,性能好. 稳定,体现在哪里?我们使用PC机,安装的操作系统一般是wi ...

  5. 管理系统的前端解决方案:Pagurian V1.3发布

    Pagurian 一个管理系统的前端解决方案, 致力于让前端设计,开发,测试,发布更简单. 功能简介 Pagurian 适用于Web管理级的项目 基于Sea.js遵循CMD规范,友好的模块定义,使业务 ...

  6. Android线程池(一)

    本篇文章主要介绍Android自带的线程池的使用. 首先要引入线程池的概念 线程池:是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务. 线程池线程都是后台线程.每个线 ...

  7. iOS之地理位置及定位系统 -- 入门笔记(用Swift)

    前言:关于地理位置及定位系统,在iOS开发中也比较常见,比如美团外面的餐饮店铺的搜索,它首先需要用户当前手机的位置,然后在这个位置附近搜索相关的餐饮店铺的位置,并提供相关的餐饮信息,再比如最常见的就是 ...

  8. 基于AFNetWorking 3.0封装网络请求数据的类

    对于使用 AFNetworking 的朋友来说,很多朋友都是直接调用 AFNetworking的 API ,这样不太好,无法做到全工程统一配置. 最好的方式就是对网络层再封装一层,全工程不允许直接使用 ...

  9. 开源项目go2o - golang版的o2o项目

    发一个github上唯一用golang实现的o2o项目 What's Go2o Golang combine simple o2o DDD domain-driven design realizati ...

  10. Android中有时候运行程序的时候会报错:An internal error occurred during:。。。。

    解决办法: Project -> Properties -> Run/Debug Settings: 1. select "Launching New_configuration ...