Codeforces 402B --耻辱的一题
这题昨天晚上花了我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 --耻辱的一题的更多相关文章
- Codeforces#441 Div.2 四小题
Codeforces#441 Div.2 四小题 链接 A. Trip For Meal 小熊维尼喜欢吃蜂蜜.他每天要在朋友家享用N次蜂蜜 , 朋友A到B家的距离是 a ,A到C家的距离是b ,B到C ...
- You Are Given a Decimal String... CodeForces - 1202B [简单dp][补题]
补一下codeforces前天教育场的题.当时只A了一道题. 大致题意: 定义一个x - y - counter :是一个加法计数器.初始值为0,之后可以任意选择+x或者+y而我们由每次累加结果的最后 ...
- codeforces 1165F1/F2 二分好题
Codeforces 1165F1/F2 二分好题 传送门:https://codeforces.com/contest/1165/problem/F2 题意: 有n种物品,你对于第i个物品,你需要买 ...
- Codeforces 675C Money Transfers 思维题
原题:http://codeforces.com/contest/675/problem/C 让我们用数组a保存每个银行的余额,因为所有余额的和加起来一定为0,所以我们能把整个数组a划分为几个区间,每 ...
- Topcoder SRM 619 DIv2 500 --又是耻辱的一题
这题明明是一个简单的类似约瑟夫环的问题,但是由于细节问题迟迟不能得到正确结果,结果比赛完几分钟才改对..耻辱. 代码: #include <iostream> #include <c ...
- Codeforces Gym 100531G Grave 水题
Problem G. Grave 题目连接: http://codeforces.com/gym/100531/attachments Description Gerard develops a Ha ...
- Codeforces 1137D - Cooperative Game - [交互题+思维题]
题目链接:https://codeforces.com/contest/1137/problem/D 题意: 交互题. 给定如下一个有向图: 现在十个人各有一枚棋子(编号 $0 \sim 9$),在不 ...
- Codeforces 767B. The Queue 模拟题
B. The Queue time limit per test:1 second memory limit per test:256 megabytes input:standard input o ...
- 多种方法过Codeforces Round #270的A题(奇偶法、打表法和Miller_Rabin(这个方法才是重点))
题目链接:http://codeforces.com/contest/472/problem/A 题目: 题意:哥德巴赫猜想是:一个大于2的素数一定可以表示为两个素数的和.此题则是将其修改为:一个大于 ...
随机推荐
- 数据库设计==>>MySchool
1.数据库设计的步骤 第一步:需求分析(收集信息) 第二步:绘制 E-R 图 (标示实体 ,找到实体的属性 第三步:将 E-R 图转换成数据库模型图 第四步:将数据库模型图转换成数据表 2.如何绘制 ...
- 编写运行R脚本
1.在后台运行R 1.1 创建file.R文件 1.2 在文件首行键入: #! /path/to/Rscript 1.3 在下面的行中,键入R代码 1.4 保存(记得有png(),jpeg(),... ...
- gulp学习
中文文档:http://www.gulpjs.com.cn/docs/api/ 一.gulp的API 1 gulp.src(); 这个方法是用来获取流的,但这个流里的内容不是原始的文件流,而是一个虚拟 ...
- MapGIS转Shp文件的单位问题
在MapGIS浏览查看一下数据,各种不习惯:用mapgis自带的转shp功能,属性表会出错:利用名为map2shp的试用版软件可将mapgis格式的数据较为良好转成shp格式.但经常会遇到一个单位问题 ...
- UIView与CALayer的区别
1.UIView相比CALayer最大区别是UIView可以响应用户事件,而CALayer不可以.UIView侧重于对显示内容的管理,CALayer侧重于对内容的绘制. 2.UIView和CALaye ...
- 傅里叶:有关FFT,DFT与蝴蝶操作(转 重要!!!!重要!!!!真的很重要!!!!)
转载地址:http://blog.renren.com/share/408963653/15068964503(作者 : 徐可扬) 有没有!!! 其实我感觉这个学期算法最难最搞不懂的绝对不是动态规划 ...
- 监听spring加载完成后事件
有这个想法是在很早以前了,那时的我没有接触什么缓存技术,只知道hibernate有个二级缓存.没有用过memcache,也没有使用过redis. 只懂得将数据放到数组里或者集合里,一直不去销毁它(只有 ...
- mysql 命令行
drop database mustang; create database mustang; show databases; use database mustang; show tables; s ...
- leangoo更换背景、设置颜色标签功能上线啦!
leangoo看板背景太单调?卡片标签想要添加多个?没有问题,Leangoo的本次更新就给大家带来了漂亮背景和实用的颜色标签设置,接下来就让我们一起来看看吧! 设置背景: 点击看板右上角个人头像图标按 ...
- Erlang数据类型的表示和实现(4)——boxed 对象
Boxed 对象 Boxed 对象是比较复杂的对象,在 Erlang 中主标签为 10 的 Eterm 表示一个对 boxed 对象的引用.这个 Eterm 除去标签之后剩下的实际上是一个指针,指向具 ...