BestCoder-Round#33
写在前面
- 这是我第一次做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−2ans = 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
- 最后一个是我犯的错误, 在高速幂和高速乘的时候我先把传入的两个參数都模了…&%#……
- 当n = 1时, 总的排法应该是 1 而不是 2^1 - 2 = 0. 全部递增的序列和全部递减的序列并没有被算两次. 由于它一共就一个序列.
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的非常慘, 事实上还是自己弱
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
版权声明:本文博客原创文章,博客,未经同意,不得转载。
BestCoder-Round#33的更多相关文章
- hdu4585 & BestCoder Round #1 项目管理(vector应用)
主题链接:pid=4858">http://acm.hdu.edu.cn/showproblem.php?pid=4858 项目管理 Time Limit: 2000/1000 MS ...
- hdu 5643 BestCoder Round #75
King's Game Accepts: 249 Submissions: 671 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6 ...
- hdu 5641 BestCoder Round #75
King's Phone Accepts: 310 Submissions: 2980 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- hdu5634 BestCoder Round #73 (div.1)
Rikka with Phi Accepts: 5 Submissions: 66 Time Limit: 16000/8000 MS (Java/Others) Memory Limit: ...
- BestCoder Round #89 02单调队列优化dp
1.BestCoder Round #89 2.总结:4个题,只能做A.B,全都靠hack上分.. 01 HDU 5944 水 1.题意:一个字符串,求有多少组字符y,r,x的下标能组成等比数列 ...
- BestCoder Round #90 //div all 大混战 一题滚粗 阶梯博弈,树状数组,高斯消元
BestCoder Round #90 本次至少暴露出三个知识点爆炸.... A. zz题 按题意copy Init函数 然后统计就ok B. 博弈 题 不懂 推了半天的SG..... 结果这 ...
- bestcoder Round #7 前三题题解
BestCoder Round #7 Start Time : 2014-08-31 19:00:00 End Time : 2014-08-31 21:00:00Contest Type : ...
- Bestcoder round #65 && hdu 5593 ZYB's Tree 树形dp
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...
- Bestcoder round #65 && hdu 5592 ZYB's Premutation 线段树
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submissio ...
- 暴力+降复杂度 BestCoder Round #39 1002 Mutiple
题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ...
随机推荐
- Blend4精选案例图解教程(五):可视数据管理
原文:Blend4精选案例图解教程(五):可视数据管理 应用程序中我们会经常需要操作数据,在程序设计之初示例数据一般都是手工添加,Blend4提供了非常方便的数据管理能力,包括丰富的数据类型和内置示例 ...
- C++ 习题 输出日期时间--友元类
Description 设计一个日期类和时间类,编写display函数用于显示日期和时间.要求:将Time类声明为Date类的友元类,通过Time类中的display函数引用Date类对象的私有数据, ...
- javascript有用小技巧—实现分栏显示
记得给师哥师姐測试考试系统的时候,看到他们的考试页面能够实现隐藏左边的考生信息部分,当时认为好高大上.好人性化. 如今学了javascript,我也能实现这个功能了,以下来显摆一下. 1.页面设计: ...
- iOS开展-clang: error: unknown argument: '-websockets'解决方案
问题: 昨天莫名其妙Xcode自己主动升级,那么今天之前执行project什么时候,不知怎的,他们都获得了. 错误内容: clang: error: unknown argument: '-webso ...
- SQL server 2005 PIVOT运算符的使用
原文:SQL server 2005 PIVOT运算符的使用 PIVOT,UNPIVOT运算符是SQL server 2005支持的新功能之一,主要用来实现行到列的转换.本文主要介绍PIVOT运算符的 ...
- JAVA实现DAO基本层CRUD操作
随着shh2各种操作方便框架.越来越多JAVA WEB效率,可是,假设在不了解这些框架使用的场合的情况下,一拿到项目就盲目地选择这些框架进行系统架构的搭建,就有可能造成非常多不是必需的资源浪费. 在项 ...
- 【C语言探索之旅】 第二部分第五课:预处理
内容简介 1.课程大纲 2.第二部分第五课: 预处理 3.第二部分第六课预告: 创建你自己的变量类型 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语 ...
- 在Linux终端下使用代理访问网络(转)
最近,需要在linux环境下使用脚本进行一些网络访问(主要是HTTP请求与文件下载),于是查阅了一些关于代理的资料. 以下是尝试的几种代理设置方法,以供参考: 一.使用wget命令进行代理访问 wge ...
- HSV 量化
function L=hsvquan(hsv) %对HSV量化,该3维特征矢量: h=hsv(:,:,1); s=hsv(:,:,2); v=hsv(:,:,3); % 假设对HSV 空间进行适当的量 ...
- Property 和 Attribute 的区别(转)
property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴. property ...