[COCI2017-2018#5] Karte,简短的代码想到了就AC

这道题是SPJ放心搞
但是我的脑子里面的东西,不用我多说,你们就知道是水和面粉和成的
看招 题

【题目描述】
你有一副共有N张牌的牌,在第i张牌上会有一个数字ai表示在这张牌下面至少一共有ai张牌上的信息是假的。接下来你需要对这副牌进行洗牌,使得这副牌当中,恰好有K张牌的信息是错误的。

【输入输出格式】
第一行输入两个数字N、K(1≤N≤5105,0≤K≤N)。
接下来N行,每行输入一个数字,表示第i张牌上的数字ai(0≤ai≤5
105)

如果不存在恰好K张牌上的信息是错误的情况,则输出-1,否则,将这副牌从上往下输出这N张牌上的所对应的ai。如果有多种答案,输出任意一种。

【样例】
样例输入1
4 2
1
2
2
3
样例输出1
2 3 1 2
样例输入2
5 3
2
1
3
0
3
样例输出2
3 3 0 1 2
样例输入3
6 4
0
2
5
2
0
1
样例输出3
-1

【样例分析】
对于样例2:第5张牌后没有牌,所以他后面是错误的牌的数量应该是0,但他是2,所以这张牌是错误的。第4牌后面有1张牌是错误的(第5张),它上面写的是1,所以是正确的。第3张牌上写的是0,它后面有1张牌是错误的(第5张),所以它是正确的(题目说的是至少有,不是确定有)。第2张牌上面写的是3,但它后面只有一张是错误的(第5张)所以是错误的。第1张牌上写的是3,但它后面只有2张是错误的(第2张和第5张),所以是错误的。即一共有3张是错误的。

【正解】
把a数组进行从小到大sort然后把n-k+1到n的值逆序倒过来存储
再用一个for循环从后往前判断错误信息个数最后按照题意输出就行了
完啦!这道题就可以AC了
但是作为一个有良心的大大!
我必须证明威慑么!!
1)如果错误信息个数<k,因为只有在ai越大而i又越靠前的时候ai才更大几率的错,我们按照最大几率去排序,个数都不够,那么其他方案一样也不够
2)如果错误信息个数>k,就意味着n-k+1到n之间一定所有都是错误的信息,假设在n-k+1到n之间有一个i的信息是正确的,而1到n-k中每一个aj值都小于ai,那么它们的信息也一定是正确的,个数就不可能大于k,故假设不成立。那么如果我们交换i,j是否会减少k呢?过来人告诉不会,k只可能不变或者+1.因为如果我们换了i,j,j本身就是正确的,换过来了有可能也是正确,甚至是错误的导致k+1,而i换过去了前面错误的个数也不会变,就算j导致k+1使得i正确的话,k再-1也是不变,所以不管怎样都不会使得k最少

好了,话不多说,屁不多放,上马
【代码实现】

#include <cstdio>
#include <algorithm>
using namespace std;
#define MAXN 500005
int n, k;
int a[MAXN], b[MAXN];
int main() {scanf ( "%d %d", &n, &k );for ( int i = 1;i <= n;i ++ )scanf ( "%d", &a[i] );sort ( a + 1, a + n + 1 );int cnt = 0;for ( int i = 1;i <= n - k;i ++ )b[++ cnt] = a[i];for ( int i = n;i >= n - k + 1;i -- )b[++ cnt] = a[i];cnt = 0;for ( int i = n;i >= 1;i -- )if ( b[i] > cnt ) cnt ++;if ( cnt == k )for ( int i = 1;i <= n;i ++ )printf ( "%d\n", b[i] );else printf ( "-1" );return 0;
}

平A小王子,AWM一枪爆掉你的三级头

不懂的地方,欢迎各位xjj,xgg留言,bye~~

[COCI2017-2018#5] Karte相关推荐

  1. 回顾 2018,展望 2019

    1. 概述 今天是 2019 年第一天,趁着元旦 3 天假期时间,对即将过去的这一年做个总结回顾,看下这一年得到了什么,失去了什么,并对来年做个新的规划,看下需要采取哪些措施提升自己. 2. 2018 ...

  2. 2017 年总结及 2018 年计划

    概述 本文写于 2018.01.01,计划从 2017 开始有目的的进行复盘行动,所以将该文搬运到此处. ----------------------------分界线---------------- ...

  3. 2018 Google kickstart Problem A. Planet Distance

    题目描述 Small dataset 3 ≤ N ≤ 30. Large dataset 3 ≤ N ≤ 1000.input 2 5 1 2 2 3 3 4 2 4 5 3 3 1 2 3 2 1 ...

  4. 2018年终总结:自由而独立

    时间真快,一年,走完了大三的后半学期和大四的前半学期. 这一年经历了很多事情,第一次这么久没有回家. 收获: 计算机进度: 一年的时间从VB版机房系统到现在的JS 其实,并没有很快很扎实连贯的走进度, ...

  5. VLOG丨树莓派Raspberry Pi 3安装PLEX并挂载USB硬盘打造最牛的微型家庭影音服务器2018...

    视频介绍 树莓派3安装目前最流行的PLEX服务器,实现既能最大限度降低功耗,也能随时随地观看分享影片. 一.在树莓派下安装PLEX媒体服务器 1.在终端,将你的树莓派更新至最新 sudo apt up ...

  6. 狗年拜年php源码,2018狗年拜年词大全!再也不担心拜年没祝词啦~祝您新年快乐!...

    原标题:2018狗年拜年词大全!再也不担心拜年没祝词啦~祝您新年快乐! 2018 狗 年 大 吉 HAPPY NEW YEAR 为了您在春节期间能够在第一时间 为您的亲朋好友送上祝福~ 小编已经贴心的 ...

  7. 2018usnews计算机专业排名,2018年研究生计算机专业前50排名(美USNews版)

    2018年美国大学--研究生--计算机科学专业排名: (USNews 美新闻周刊版) 排名 学校英文名  学校汉语名  州 / 城市 1 Carnegie Mellon University 卡耐基梅 ...

  8. 2018会考计算机成绩查询入口,2018年山东会考成绩查询时间及入口

    2018年山东会考成绩查询时间及入口2019-07-10 20:39:51文/李男 2018年山东会考成绩查询时间为2018年2月2日,并且山东高中会考成绩的查询入口也已经开通了,下面小编整理了会考成 ...

  9. 康复治疗学可以考计算机吗,【大揭秘】2018“人机对话”康复医学治疗技术专业技术资格考试...

    原标题:[大揭秘]2018"人机对话"康复医学治疗技术专业技术资格考试 昨天,关于"2018年康复医学治疗技术专业技术资格考试采用人机对话考试方式"的通知一经发 ...

  10. pch在c语言中占内存字节数,2018年9月计算机二级C语言考试章节习题及答案(6).docx...

    2018年9月计算机二级C语言考试章节习题及答案(6) 第2章 C程序设计的初步知识 2.3 整型数据 1[单选题] 用8位无符号二进制数能表示的最大十进制数为( ) A.127 B.128 C.25 ...

最新文章

  1. [关于SQL]查询成绩都大于80分的学生
  2. C语言入门题-计算指数 (15分)
  3. SAP API开发方法大全
  4. 《构建之法》阅读笔记02
  5. 中国中医科学院大学落户苏州吴中区
  6. oracle创建用户和密码以及授权登录问题
  7. 编译原理0909的作业
  8. 使用windows crypto API加密解密
  9. 2020年python工资一般多少-武汉Python薪资一般是多少?真实数据告诉你
  10. 循环输出26个字母C语言,菜鸟求助,写一个随机输出26个英文字母的程序
  11. SSD源码解读之ssd_pascal.py
  12. python王者荣耀
  13. JAVA随机抽取一名幸运观众(手动输入观众)小实例
  14. typecho图片插件_AutoPhotos图片自动排版/图集Typecho插件
  15. PS制作水雾玻璃拍照效果、幻影视觉海报
  16. Unity入门——角色属性设置
  17. 最详细的Keycloak教程:Keycloak实现手机号、验证码登陆——(一)Keycloak的下载与使用
  18. R语言大全(后续更新和优化结构)
  19. 技术,管理,和境界问题
  20. 香颂花园是申市最有名的别墅区

热门文章

  1. mysql 5.6 slave stop_mysql 5.6 Replication 参数
  2. echarts 时间曲线图_制作按时间每秒实时更新的echarts折线图
  3. mysql rpm 安装后修改路径_mysql rpm包安装后修改数据目录
  4. makefile 打印变量_[Makefile] 缩进与空格--记录踩过的坑
  5. 机器学习之数据预处理——数据清洗(缺失值、异常值和重复值的处理)
  6. MATLAB函数gensurf,MATLAB模糊逻辑工具箱函数.ppt
  7. leetcode377. 组合总和 Ⅳ
  8. Java继承-子类不可以继承父类的构造方法
  9. [C++11]自动类型推导auto
  10. [设计模式]单例模式(懒汉式,饿汉式)