ACM International Collegiate Programming Contest World Finals 2014

A - Baggage

题目描述:有\(2n\)个字符摆在编号为\(1\)~\(2n\)格子里,奇数位为\(B\),偶数位为\(A\),另外编号为\((-2n+1)\)~\(0\)的格子是空的,现在可以移动两个相邻的字符,移动到两个空的格子里,最终使得全部\(A\)在全部\(B\)的左边,而且字符都是连续的,但不必放回原位,输出最小步数的方案。

solution
显然,最小操作为\(n\)步。
假设\(n=8\),
__BABABABABABABABA

ABBABABABABABAB__A

ABBA__BABABABABBAA

ABBA|__BABABABA|BBAA

如果存在一种方案使得中间字变成下面的模样,即两个空位跑到了最后
ABBA|AAAABBBB__|BBAA

A__AAAAABBBBBBBBAA

AAAAAAAABBBBBBBB__

最后两位也是空位。四步解决八个字符(四个\(A\),四个\(B\)),也就是可以递归求解方案。

但要特殊处理\(n=3, 4, 5, 6, 7\)的方案,因为这几个的操作比较特殊,最优操作并不是上述的操作,这几个特殊的可以暴搜出来。

时间复杂度:\(O(n)\)

B - Buffed Buffet

题目描述:有\(n\)道菜,这\(n\)道菜可以分成两类,第一类是以整数为计量,即一道这样的菜有一个固定的重量\(\omega_i\),若这道菜点了\(m\)道,则第\(j\)道的美味值为\(t_i-j\Delta t\);第二类是以小数为计量,即这道菜可以取任意一个重量\(X\),则这道菜的美味值为\(\int_{0}^{X} (t_i-x\Delta t) dt\)。问在菜的总质量为\(W\)的情况下,美味值最大是多少。

solution
先解决第一类的菜。
这看起来像一个普通的背包,但直接\(O(nW^2)\)会超时。可以考虑将菜按重量分类,重量相同的菜各自算出第\(j\)道菜的美味值,因为这些菜的重量是相同的,所以取(相同重量的菜)算出来的美味值的前\(W\)个即可。这样归类之后,最多有\(n\)种重量不同的菜,所以背包的时间复杂度为\(O(\sum_{w=1}^{W} wlnn)=O(\frac{1}{2}W^2lnn)\)
然后解决第二类菜。
枚举第一类菜的总重量\(wf\),剩下的重量由第二类的菜来承担。
因为是重量是连续的,考虑用拉格朗日乘数法。设每种菜的重量为\(x_i\),
约束函数
\[g(x_i)=\sum x_i-(W-wf)=0\]
目标函数为
\[f(x_i)=\sum \frac{1}{2}(2t_i-x_i\Delta t)x_i\]
设函数
\[F(x_i)=f(x_i)-\lambda g(x_i)\]
求解得
\[x_i=\frac{t_i-\lambda }{\Delta t}\]
但因为\(x_i \geq 0\),所以选择用二分的方法来求解\(\lambda\),在这里\(\lambda\)有一个特殊的几何意义:每道菜只取美味函数(美味值的被积函数)大于等于\(\lambda\)的部分,若某道菜的\(t_i<\lambda\),则\(x_i=0\)。\(\lambda\)越小,\(g(x_i)\)越能满足。
但有一类特殊的菜需要注意,就是\(\Delta t=0\)的菜,这些菜的美味函数是一个常数函数,这些菜不能用上面的方法来求解(因为\(\Delta t\)在\(x_i\)的分母)。显然,这类菜只需考虑\(t_i\)最大值(\(con\))即可,当\(\lambda > con\)时,就不必选这道菜了,否则\(\lambda < con\)的部分可以用这道菜来补充,所以可以令\(\lambda =con\),算出\(\sum x_i, (W-wf)-\sum x_i\)的部分由\(con\)来补充,更新答案。

如图\(cut\)表示\(con>\lambda\)的情况,此时菜只选到\(cut\)就好,剩余的部分可由\(con\)补充,这样美味值就能增加黄色部分。

时间复杂度:\(O(W^2lnn+Wnlog(2*10^{16})),2*10^{16}=2*10^8*10^8\),前一个\(2*10^8\)表示\(\lambda\)的范围,后一个\(10^8\)表示精度范围。

C - Crane Balancing

题目描述:给出一个在二维平面上的多边形,在平面上\(1 \times 1\)的正方形的重量为\(1\),现在在多边形上指定一个顶点,在这个顶点上放一定质量的物体(无体积),满足多边形不向两边倒,问物体质量的范围,或无论质量是多少都会倒(unstable)

solution
将多边形剖分成很多个三角形,有向面积就是有向重量,然后求出三角形的质心(坐标平均),然后求出这些质点的质心,这个质心就是多边形的质心。找出多边形在\(y\)轴上的点,只有最左边和最右边的点才可能成为支点。多边形的质心与指定顶点构成的新质心的\(x\)坐标一定要在这两个支点之间,多边形才不会倒。
所以分类判断多边形的质心是否在两个支点之间,再根据指定的顶点再分类讨论,注意讨论指定顶点的\(x\)坐标是否在支点上。

时间复杂度:\(O(n)\)

D - Game Strategy

题目描述:有\(n\)个点,每个点有若干个集合(总共有\(m\)个)。有两个人在玩游戏,一开始指针在某一个点,第一个人这个点的一个集合,第二人选择这个集合内的一个点,然后指针移向那个点。分别求出从每个点出发,其它点能否到达,如果能则输出最小步数,否则输出\(-1\)。(第二个人是阻止第一个人的)

solution
显然如果能到达某个点,则最小步数不超过\(n\),所以可以一步一步地走。显然答案是最长路径,然后暴力搜就好了。

时间复杂度:\(O(n^2m)\)

I - Sensor Network

题目描述:求一个无向图的最大团。

solution
随机一种\(n\)排列,然后按排列顺序构最大团。

时间复杂度:\(O(n^2*10000)\)

K - Surveillance

题目描述:给出\(n\)个数对\((a, b)\),如果\(a \leq b\),则表示区间\([a, b]\),如果\(a>b\),则表示区间\([1, b], [a, m]\),问最少需要多少个数对覆盖\([1, m]\)。

solution
将区间延长至\([1, 2m]\),则一个数对对应一个区间。那么问题变成最少区间覆盖一个长度至少为\(m\)的连续区间。
将区间按右端点排序,然后倍增求出一个区间\(i\)出发向左利用\(2^j\)个区间最左能到哪个区间,以及最长能覆盖多长的区间。然后再倍增求答案即可。

时间复杂度:\(O(nlogn)\)

ACM International Collegiate Programming Contest World Finals 2014的更多相关文章

  1. ACM International Collegiate Programming Contest World Finals 2013

    ACM International Collegiate Programming Contest World Finals 2013 A - Self-Assembly 题目描述:给出\(n\)个正方 ...

  2. ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2018) Syria, Lattakia, Tishreen University, April, 30, 2018

    ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2018) Syr ...

  3. ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2017)- K. Poor Ramzi -dp+记忆化搜索

    ACM International Collegiate Programming Contest, Tishreen Collegiate Programming Contest (2017)- K. ...

  4. Gym100814B Gym100814F Gym100814I(异或) ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (2015) Arab Academy for Science and Technology

    今日份的训练题解,今天写出来的题没有昨天多,可能是因为有些事吧... Gym100814B 这个题就是老师改卷子,忘带标准答案了,但是他改了一部分卷子,并且确定自己改的卷子没出错,他想从改过的卷子里把 ...

  5. [ACM International Collegiate Programming Contest, Amman Collegiate Programming Contest (2018)]

    https://codeforces.com/gym/101810 A. Careful Thief time limit per test 2.5 s memory limit per test 2 ...

  6. 2019.04.04 第二次训练 【ACM International Collegiate Programming Contest, JUST Collegiate Programming Contest (2018)】

    题目链接:https://codeforces.com/gym/101853 A: ✅ B: (二分图匹配) https://blog.csdn.net/qq_41997978/article/det ...

  7. ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (ECPC 2015)

    A.Arcade Game(康拓展开) 题意: 给出一个每个数位都不同的数n,进行一场游戏.每次游戏将n个数的每个数位重组.如果重组后的数比原来的数大则继续游戏,否则算输.如果重组后的数是最大的数则算 ...

  8. Codeforces Gym100814 I.Salem-异或 (ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (2015) Arab Academy for Science and Technology)

    这个题就是二进制,找两个数相应的二进制相对应的位置上数不同的最多的个数.异或写就可以. 一开始还想麻烦了,找出来最大的偶数和最大的奇数,最小的偶数和最小的奇数,但是这样想考虑的不全.因为范围比较小,直 ...

  9. Codeforces Gym100814 F.Geometry (ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (2015) Arab Academy for Science and Technology)

    这个题真的是超级超级水啊,哈哈哈哈哈哈.不要被题面吓到,emnnn,就这样... 代码: 1 #include<iostream> 2 #include<cstring> 3 ...

随机推荐

  1. AngularJS中$watch

    $watch在digest执行时,如果watch观察的value与上一次执行时不一样时,就会被触发.angularjs内部的watch实现了页面随model的及时更新.$watch 方法在用的时候主要 ...

  2. C++解析(18):C++标准库与字符串类

    0.目录 1.C++标准库 2.字符串类 3.数组操作符的重载 4.小结 1.C++标准库 有趣的重载--操作符 << 的原生意义是按位左移,例:1 << 2;,其意义是将整数 ...

  3. KMPnext数组自看

    emm...无数次再看kmp了 因为一直没做相关的题..看了就忘看了就忘..emm.. next[i]表示去掉第i个元素后,自已的前缀和后缀完全匹配的最大长度 例 字符串 a b a b a b z ...

  4. atcoder 2017Code festival C ——D题 Yet Another Palindrome Partitioning(思维+dp)

    题目大意: 把一个字符串s分割成m个串,这m个串满足至多有一种字符出现次数为奇数次,其他均为偶数次,问m的最小值 题解: 首先我们想一下纯暴力怎么做 显然是可以n^2暴力的,然后dp[i]表示分割到i ...

  5. hive 一次性命令

    1.用hive查询,而不进入hive cli,查询后的值可以保存到文件中 #使用参数-e [hadoop@bigdata-senior01 ~]$ hive -e "select * fro ...

  6. 【BZOJ2138】stone(线段树,Hall定理)

    [BZOJ2138]stone(线段树,Hall定理) 题面 BZOJ 题解 考虑一个暴力. 我们对于每堆石子和每个询问,显然是匹配的操作. 所以可以把石子拆成\(a_i\)个,询问点拆成\(K_i\ ...

  7. 洛谷 P2261 [CQOI2007]余数求和 解题报告

    P2261 [CQOI2007]余数求和 题意: 求\(G(n,k)=\sum_{i=1}^n k \ mod \ i\) 数据范围: \(1 \le n,k \le 10^9\) \(G(n,k)\ ...

  8. SCWS中文分词,词典词性标注详解

    SCWS中文分词词典条目多达26万条之巨,在整理的时候已经把很多明显不对的标注或词条清理了 ---- 附北大词性标注版本 ----Ag 形语素 形容词性语素.形容词代码为a,语素代码g前面置以A. a ...

  9. 链接错误 multiply defined (by misc_1.o and misc.o).

    http://www.stmcu.org/module/forum/thread-286128-1-1.html *** Using Compiler 'V5.06 (build 20)', fold ...

  10. SVN Server 500 NotLicensed 错误的解决方法

    SVN Server 500 NotLicensed 错误的HTML页面显示 Not licensed The server encountered an internal error or misc ...