写在前面

  • 这是我第一次做BestCoder, 熟悉了一下BestCoder的模式.
  • BC上并不是只能看英文, 后面的Chinese view下的链接是中文题目
  • 交的次数是会影响得分的. 所以有了把握再交. 至少样例要过吧.
  • 一定要考虑所有特殊情况, 因为有许多积极的Hacker正等着你上钩. 即使交过Accepted之后一旦被Hack成功一分都没有. 唉…
  • 我的第一次BestCoder比赛就以两个题被Hack两个题不会结束了.
  • 感觉BestCoder的比赛还是很刺激的. 拼手速, 拼细心, 拼代码能力.
  • 题目: http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=571

赛后题解

  • 第一题字符串, 但我发现我字符串的基本功还是不行啊, 做了近一个小时(一开始不知道有中文题面, 到处找翻译也费了不少时间), 还是看别人代码打的.

    • 不能输出前导零
    • 结果是0也不能不输出
    • 被hack后改呀改, 终于发现我在输出时如果数字大于10也用的+’0’输出…
  • 第二题倒是挺顺利的想到解法. 首先, 拐点一定是1或者n. 把1作为拐点时, 假设1在第i个位置上, 除了1之外还有n-1个数字, 1的左面可以从n-1个数字中任选i-1个数字, 而且有且只有一种排法(递减), 选完左侧右侧也就确定了, 且也只有一种排法(递增). 而把n当作拐点的排法总数和1时相等, 同时要注意到1, 2, …, n 和 n, n-1, …, 1 的排列被计算了两次. 总结果要减去2. 那么总的排法就是

    ans=2∗∑i=0n−1C(n−1,i)−2=2∗2n−1−2=2n−2

    ans = 2 * \sum_{i = 0}^{n - 1}{C(n-1, i)} - 2 = 2 * 2^{n-1} - 2 = 2^n - 2
    如果在比赛时想到这里就提交, 你会发现你A了, 但如果你在Hack的时间时去群里看一下, 就会发现事情并不单纯.

    • 当n = 1时, 总的排法应该是 1 而不是 2^1 - 2 = 0. 全部递增的序列和全部递减的序列并没有被算两次. 因为它一共就一个序列.
      所以要加特判, n=1时输出 1
      完了吗? 没有…(hack好强大)
    • 因为数据范围很大, 10^18, long long ? 但是乘法时可能溢出, 所以还需要写快速乘, 在矩阵乘法的题里曾用到过. 我当时犹豫要不要写, 但看到第一次提交AC后就没有写. 我当时还不知道hack有多强大.
      到这里, 所有问题应该都解决了吧?
      唉, 又调了好半天. 各种习惯不好导致的错误
    • 首先 n=1 时不能简单的输出1, 因为m还可能等于1
    • 然后, 记得把所有变量都开long long
    • 最后一个是我犯的错误, 在快速幂和快速乘的时候我先把传入的两个参数都模了…&%#……
  • A, B题都是基础的东西, 但掌握的都不好

  • 觉得做BestCoder很刺激样子.

  • 第三题后来看别人的代码弄明白了. 用map实现的DP

    • 先按照解决问题最早开始的时间先后排序
    • map<int, long long> f[2] 来记录状态. map是当前时间到最大分数的映射. f[2] 是滚动数组.
    • 如果选择放弃解决当前的问题, 就从上个状态的时间转移到当前状态的时间即可, 分数不变.
    • 如果选择解决当前问题, 就从上个状态的一个时间(pre_t)转移到当前状态的一个合法时间, 分数加上当前问题的分数. 这里需要考虑哪个时间是合法的, 如果pre_t加上任务所需时间早于最早完成时间, 就转移到最早完成时间, 否则转移到pre_t加上任务所需时间.
    • 用迭代器遍历map需要满足map里至少有一个元素吧. 所以先插入一个(0, 0)预处理.
    • 用map实现的状压感觉好厉害…
    • 还有记得该开long long的时候就开… 又在这里卡了一阵

赛后代码

A: https://code.csdn.net/snippets/619782
B: https://code.csdn.net/snippets/619742
C: https://code.csdn.net/snippets/619822


比赛结果

被hack的很惨, 其实还是自己弱

BestCoder-Round#33相关推荐

  1. BestCoder Round #33

    A和B做法和官方题解一样 C题我是用背包+map,先把任务按最早開始的时间进行排序,然后去背包,dp[j]表示j时间能得到最大的得分,然后就过了.. 代码: A: #include <stdio ...

  2. hdu4585 amp; BestCoder Round #1 项目管理(vector应用)

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4858 项目管理 Time Limit: 2000/1000 MS (Java/Others)    M ...

  3. 矩阵快速幂---BestCoder Round#8 1002

    当要求递推数列的第n项且n很大时,怎么快速求得第n项呢? 可以用矩阵快速幂来加速计算. 我们可以用矩阵来表示数列递推公式 比如fibonacci数列 可以表示为 [f(n)   f(n-1)] = [ ...

  4. 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II

    题目传送门 1 /* 2 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 3 当然有可能两个数和超过p,那么an ...

  5. 贪心 BestCoder Round #39 1001 Delete

    题目传送门 1 /* 2 贪心水题:找出出现次数>1的次数和res,如果要减去的比res小,那么总的不同的数字tot不会少: 3 否则再在tot里减去多余的即为答案 4 用set容器也可以做,思 ...

  6. 字符串处理 BestCoder Round #43 1001 pog loves szh I

    题目传送门 1 /* 2 字符串处理:是一道水题,但是WA了3次,要注意是没有加'\0'的字符串不要用%s输出,否则在多组测试时输出多余的字符 3 */ 4 #include <cstdio&g ...

  7. hdu4932 Miaomiao#39;s Geometry (BestCoder Round #4 枚举)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4932 Miaomiao's Geometry Time Limit: 2000/1000 MS (Ja ...

  8. HDU 5228 ZCC loves straight flush( BestCoder Round #41)

    题目链接:ZCC loves straight flush 题面: ZCC loves straight flush Time Limit: 2000/1000 MS (Java/Others)    ...

  9. BestCoder Round #90 Kblack loves flag

     BestCoder Round #90 Kblack loves flag 问题描述 kblack喜欢旗帜(flag),他的口袋里有无穷无尽的旗帜. 某天,kblack得到了一个n∗mn*mn∗ ...

  10. HDU 5804 BestCoder Round #86 Price List (水题)

    Price List 题目链接: 点我打开链接 Source BestCoder Round #86  题意:有一个人去 n 间商店购物,在每家商店购买最多一件物品,也可以什么都不买.给你每家商店的物 ...

最新文章

  1. 【Opencv】直方图函数 calchist()
  2. 大作文十大必背范文:五星级真题
  3. 如何在 Janus 中获取 WebRTC 的流
  4. C++ 复数类运算符重载
  5. [caffe解读] caffe从数学公式到代码实现2-基础函数类
  6. 25、Power Query-日期与时间数据处理
  7. mt4虚拟服务器在哪里看,mt4查看自己服务器地址
  8. linux软件包管理工具,Linux 软件包管理器-----yum配置详解一
  9. 十万字cpp成神总结-看完月薪25k
  10. android getter不起作用,java - 如何在Android Studio中自动生成getter和setter
  11. JPanle组件按钮 表格布局
  12. centos7配置php-fpm,centos7 配置php-fpm
  13. 在MySQL中以下属于ddl语句的_ddl语言(以下哪些命令是ddl语句)
  14. matlab EOF程序
  15. DSP2812入门2——结构资源性能
  16. 广州java程序员平均工资_9月程序员工资统计已公布,你拖后腿了吗?
  17. 【华为OD机试真题 JAVA】数字涂色
  18. 研究:多因素影响粮食安全 应早做规划避免粮食短缺
  19. 滑雪总结 --- 双板滑雪
  20. JAVASCRIPT实现基于文本的自动智能聊天机器人

热门文章

  1. 科大星云诗社动态20211102
  2. 中学计算机科学教育,计算机科学教育周 – Tsinghua International School 清华大学附属中学国际部...
  3. 给js文件加一些参数
  4. lseek函数实现对打开文件的定位
  5. 通过init进程看如何启动第一个应用程序
  6. BugkuCTF-reverse:Easy_vb + Easy_Re
  7. python基础——字典
  8. CPU 乱序执行验证
  9. 显存文本模式详解 ———《x86汇编语言:从实模式到保护模式》读书笔记补遗02
  10. Head First JSP---随笔一