CF_#277.5_DIV2_A_B_C

69 篇文章 0 订阅
11 篇文章 0 订阅

A. SwapSort

http://codeforces.com/contest/489/problem/A


给定一个n个数的序列 然后输出小于等于n次排序的交换方式使之递增有序


暴力

o(n^2)

直接sort一下

然后从第一个数开始对比两组数是否相同 不同则寻找应该在该位的数 记录交换位置 和交换次数


pretest wa了一次 由于没有输出交换次数

结果fst 发现是因为在找到交换数时候没有break 所以 wa了

要细心


ac代码

http://paste.ubuntu.com/9068518/


B. BerSU Ball

http://codeforces.com/contest/489/problem/B


给定一组n个数和一组m个数 两组数 对于两组数中 如果两个数的相差不大于1则可以配成一对 请问最多有多少种配对方式


贪心

o(max(nlgn, m+n))

对两组数分别sort一下

然后从最后小的那组开始 如果另一个可以配对 则组数++ 指针往前移

如果不可以配对 则大的那组指正前移 循环到任意一组到头

1y


ac代码

http://paste.ubuntu.com/9068606/



C. Given Length and Sum of Digits...

http://codeforces.com/contest/489/problem/C


贪心

o(n)


意思是说给定m和s两个数

m为非0正整数 s为非负整数

然后存在一些数是m位 并且每位和为s

求出对应最小数和最大数

不存在就输出-1 -1


想了一下发现如果符合题意那么显然 m*9 <= s

如果s / 9 + bool( s % 9) == m


    则最小是(s%9)在最高位 其他都是9 

        最大是(s%9)在个位 其他都是9


否则

    最小一定是最高位是1 然后一堆0 然后是(s-1)%9(如果(s-1)%9不为0) 最后一堆9

    最大是s/9位的9 接着是s%9后面一堆0


有几个坑

1 0的结果是

0 0

x 0的结果是     (x不为0)

-1 -1

1 x的结果是       (x<=9)

x x


很有意思的一个题 不过被出题人坑了  = =在没做到之前出了个tips

说前导零应该去掉 例如‘007’这种数据是不对的 只有‘0’可以输出

然后我就很二逼的认为有一组数据是3 7

对应是007 700

其实这样的话 应该是106 700

结果我就恶性脑补了 导致最后一直wa到结束 不然 rank也不会掉 = =


ac代码

http://paste.ubuntu.com/9068914/


期待蓝名之日的来临

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值