SOJ和FOJ的比赛
昨天做两场线上比赛,FOJ和SOJ,都只做了两题。
FOJ
Problem 2074 Number of methods(数学)
有一排石子,每次只可取走一个,第一次可取任取一个,之后取被取走石子相邻位置的石子,有多少种取法?
一开始还看错题意,没注意"只能取被取走石子相邻位置的石子",WA了一次。
若有n个石子,我们取走第i个石子,左边剩下i-1,右边剩下n-i个石子,之后我们每次只能取左边最右边的石子或右边最左边的石子,左边要取i-1次,右边要取n-i次,
总共要取n-1次,若设左取一次的代号为0,右取一次的代号为1,取法就是一组由i-1个0和n-i个1组成的组合数。
Problem 2072 Count(数据结构,二分搜索)
查询一个正整数组成的数组某段区间某个数出现的次数。
建立一个由n个数为索引的链表,插入各个数在数组中的序号,查询的时候直接二分搜索关键值所在的链表。
用vector做的时候忘了clear了,WA了两次.
SOJ
Driving Range(最小生成树)
求最小生成树的最长边,由于点较多,克鲁斯卡尔比较好。
WA了10多次还是没做出来,晚上睡觉的时候猛然发现并查集的合并写错了,早上起来的时候想交居然交不了,只好去hdoj交,果然A了
Frosh Week(树状数组)
求一个数列转换成有升序至少需要多少次相邻交换,一次相邻交换只能减少一个逆序数,而升序数列的逆序数是0,所以实际上就是求逆序数。
可用归并排序(以前做过,忘了。。。。)和树状数组做。
KOMPIĆI(位运算)
在一个数列中,有多少对整数有相同数字。
因为数字只有0~9,数字形式总共也只有1023种,转换所有的整数表示形式,同一种形式的有 a[i]*(a[i]-1)/2 对,有相同数字的不同的形式有a[i]*a[j];