SRM 592 DIV2 报告
昨天下午查看邮箱,看到了topcoder的SRM比赛通知和cf的比赛通知,当时什么也不想做,心里空荡荡的,忽然就想参加一下,试试看。吃完晚饭回来一看,就剩十几分钟了,匆忙把平台下了,就开始等待比赛开始了。话说这是第一次在topcoder比赛,以前一直都不想的,认为自己水平不够,参加比赛也是找虐,想把水平提高一下再比赛,可是...直到现在还是菜鸟一只...汗颜... 以前也在tc上练习过了,貌似做了一道题...不过后来重装系统了,所有插件、配置都没了,等到比赛开始,我就有点傻了,写类写方法...?好像有点印象,就试着写了第一题,在不能编译、不能调试的情况下(当时忘了有编译和调试功能),竟然提交成功了,哈哈,运气还不错。
Problem 1:给一个含有n个数的序列,从中找出k个数,使这k个数的和第二小。排序然后处理就可以了。
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std; class LittleElephantAndBooks
{
public:
int getNumber(vector<int> pages, int number)
{
sort(pages.begin(), pages.end());
int sum = ;
for (int i = ; i < number-; i++)
sum += pages[i];
sum += pages[number];
return sum;
}
};
Problem 1
Problem 2: 给两个正整数N和K,A和B是[1...N]的两个排列,定义magic(A, B) = sum (max(A[i], B[i])), 1 <= i <= N。找出magic(A, B) >= K 的个数。
当时第一感觉就是暴力,时间有点紧,一时也没想到什么好的解决办法,就暴力枚举了,时间复杂度O((n!)2)...不过还是提交了,结果被challenge了...(challenge时找了好长时间才知道怎么做,然后就看人家challenge,完全打酱油了...),今天看别人代码才发现了O(n!)的解法,当A不变B变化时,将A和B对应数对进行排列,magic值不变,共有有n!种排列。
#include <string>
#include <vector>
#include <algorithm>
using namespace std; class LittleElephantAndPermutationDiv2
{
public:
long long getNumber(int N, int K)
{
long long fact[];
fact[] = ;
for (int i = ; i <= N; i++)
fact[i] = i * fact[i-]; vector<int> a, b;
for (int i = ; i <= N; i++)
{
a.push_back(i);
b.push_back(i);
}
long long cnt = ;
do
{
int sum = ;
for (int i = ; i <= N; i++)
sum += max(a[i], b[i]);
if (sum >= K) cnt += fact[N];
} while (next_permutation(b.begin(), b.end()));
return cnt;
}
};
Problem 2
Problem 3: 给一个[A, A+N]的序列,通过擦除数的数字使得系列变成一个非递减序列,问共有多少种方法?
看完后没什么思路,想了一会儿还是没法写,就坐那发呆等着结束了...-_-||,今天准备看别人代码,扫了一眼,我...还是算了,以后再说吧...
第一次tc比赛就这样了,结果rating 875,感觉还算不错吧,其实也没我想的那么重要,不一定非要有一个好的开始,勇于开始也是不错的选择。
PS:吐槽一下这网络,比赛的时候掉了好几次,今天感觉一半的时间都是浪费在登陆上了...
SRM 592 DIV2 报告的更多相关文章
- topcoder SRM 592 DIV2 LittleElephantAndPermutationDiv2
#include <iostream> #include <vector> #include <algorithm> #include <iterator&g ...
- topcoder SRM 592 DIV2 LittleElephantAndBooks
#include <iostream> #include <vector> #include <algorithm> using namespace std; cl ...
- SRM 657 DIV2
-------一直想打SRM,但是感觉Topcoder用起来太麻烦了.题目还是英文,不过没什么事干还是来打一打好了.但是刚注册的号只能打DIV2,反正我这么弱也只适合DIV2了.. T1: 题目大意: ...
- Topcoder Srm 673 Div2 1000 BearPermutations2
\(>Topcoder \space Srm \space 673 \space Div2 \space 1000 \space BearPermutations2<\) 题目大意 : 对 ...
- Topcoder Srm 671 Div2 1000 BearDestroysDiv2
\(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...
- 记第一次TopCoder, 练习SRM 583 div2 250
今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...
- Topcoder srm 632 div2
脑洞太大,简单东西就是想复杂,活该一直DIV2; A:水,基本判断A[I]<=A[I-1],ANS++; B:不知道别人怎么做的,我的是100*N*N;没办法想的太多了,忘记是连续的数列 我们枚 ...
- SRM 638 Div2
2333... 因为TC过少的参与者.加上不断fst 我掉了div2该. 幸运的是完成的背div1该.. 250 水的问题 500 水的问题.. 直接bfs扩展即可了 注意判重. 我还用康托展开了真 ...
- SRM 670 div2 A B C div1 A(贪心,子问题合并)
A Cdgame brute force... B Drbalance 贪心,每次选最前面的-变成+,相当于后面所有的负值+2. C Treestrat 考虑集中去抓一个Red Token,以这个To ...
随机推荐
- HDU - 1083 Courses /POJ - 1469
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1083 http://poj.org/problem?id=1469 题意:给你P个课程,并且给出每个课 ...
- 利用Hierarchy Viewer优化布局
好久没更新博客了,趁着清明来写点什么. 今天来讲下如何使用android中提供的工具优化我们的布局.首先我们写一个最简单的框架布局. <?xml version="1.0" ...
- tcp断开连接,4次握手,为什么wireshark 只能抓到3个包?
用wireshark 抓包,看看tcp 断开连接的过程. 以前书上说tcp断开连接,4次握手,可我为什么wireshark 只能抓到3个包? 百度一下,别人也有类似的疑问. [求助]书上和网上的资料 ...
- div定位
1.float定位带来的问题<html> <head> <title>div浮动引发的问题</title> </head> <styl ...
- (转)Hadoop之常见错误集锦
Hadoop之常见错误集锦 下文中没有特殊说明,环境都是CentOS下Hadoop 2.2.0.1.伪分布模式下执行start-dfs.sh脚本启动HDFS时出现如下错误: ...
- margin问题
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- ARMs3c2440开发板挂接NFS服务
1.修改IP地址,使虚拟机,电脑PC机.开发板位于同一个网段,开发板网线与电脑网络接口连接,如PC:ip 192.168.0.112 255.255.255.0 虚拟机 192.168.0.8 255 ...
- Win7+QTP10.0+IE9无法识别对象的解决方法
在WIN7和IE9环境下使用QTP10,会出现识别不了web对象的情况,具体表现为:添加对象,先打开对象库,再打开IE,点击Add object to local 后,出现白色手指,将其拖拉到百度首页 ...
- 3D动画效果照片墙demo
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...
- 关于js的几道经典题(作用域、原型链等)自己做的
1. function test() { var a = 1; setTimeout(function() { alert(a); a = 3; }, 1000); a = 2; setTimeout ...