ACM International Collegiate Programming Contest World Finals 2013
ACM International Collegiate Programming Contest World Finals 2013
A - Self-Assembly
题目描述:给出\(n\)个正方形组件,正方形每条边有一个标签,标签可能是00,表示这条边不能与其它边相拼,也可能是一个字母加正号或负号,相同字母不同符号的边可以相拼。每个组件有无限个,问利用这些组件是否能拼出一个无限大的多边形。

solution
拆点,每个正方形拆成\(4\)个点,每条边一个,然后每条边拆成两个点(出点和入点),然后新增\(52\)个点,表示\(52\)个标签,然后每个点拆成两个点(出点和入点)。连边,然后判断是否有环,如果有,则能拼出一个无限的多边形,否则不能。
时间复杂度:\(O(n*8+n*4*4)\)
C - Surely You Congest
题目描述:给出一个无向图,每个点上有一些车,这些车都要到\(1\)号点,车都走最短路径,但不能有两辆车同时同向进入某条边,但可以进入某个点,每辆车都同时出发。问最多有多少辆车能同时出发。
solution
先求出\(1\)号点到每辆车的最短路径,有一个性质:最短路径不同的点不会同时同向进入某条边。所以将最短路径相同的点归成一类,同时处理这些点,找出那些最短路径的边,设流量为\(1\),然后跑一次最大流,然后每一类的最大流相加就是答案。
时间复杂度:难以估计,大胆写吧
D - Factors
题目描述:设\(f(n)\)表示\(n\)分解质因数后有多少种不同的排列,如\(f(20)=3\),因\(f(20)=2 \cdot 2 \cdot 5=2 \cdot 5 \cdot 2=5 \cdot 2 \cdot 2\)。给出一个数\(k\),求出一个最小的\(n\),使得\(f(n)=k\)。
solution
设\(a_i\)表示\(n\)的每个质因数的个数。
\[f(n)=\frac{(\sum a_i)!}{\prod a_i!}\]
设\(n'=np^s, n \nmid p\)
\[f(n')=\frac{(\sum a_i +s)!}{\prod a_i! \times s!}\]
\[=\frac{(\sum a_i)! \cdot (\sum a_i +1) \cdot ... \cdot (\sum a_i +s)}{\prod a_i! \times s!}\]
\[=f(n) \cdot C_{\sum a_i +s}^{s}\]
所以直接搜索,质因数肯定是取最小的那些。貌似有答案不多。
时间复杂度:不会算。
F - Low Power
题目描述:有\(n\)个机器,每个机器有两个芯片,每个芯片会有\(k\)个电池,给出\(2nk\)个电池,分配这些电池,使得所有机器的两个芯片的电池最小值的差的最大值最小,输出这个值。
solution
先将电池从小到大排序。二分答案,显然每台机器的两个芯片的最小电池一定是相邻的电池,所以贪心分配就好。
时间复杂度:\(O(nlog10^9)\)
H - Матрёшка
题目描述:有\(n\)个排成一行的俄罗斯套娃,每个套娃有一个大小,一套完整的套娃的大小是从\(1\)到\(m\)(随便一个数)的连续整数,小的放在大的里面。现在将这\(n\)个套娃套成若干套完整的套娃,每次只能将相邻的套娃套在一起,一旦一个套娃变成一组套娃中的一个,则它最终不会变成别的组的套娃。问最少需要几次打开操作。如合并\([1, 2, 6]\)与\([4]\),需要打开\(6\)和\(4\)的盖子。
solution
显然,一套套娃一定是连续的一段全排列,所以可以区间dp来分割区间成多个全排列。然后考虑一个全排列需要多少次打开操作来套成一套套娃。
这又可以用一个区间dp来求解,问题是合并两套不完整的套娃的最少操作,假设两套套娃最小的大小为\(A, B\),若\(A<B\),则\(A\)那套中小于\(B\)的那些套娃不用打开,反之有类似的结论,其它的套娃都要打开。
时间复杂度:\(O(n^3)\)
I - Pirate Chest
题目描述:有一个\(n \times m\)的水池,给出每一格水池的深度,现要将一个底面的长和宽不超过\(a\)和\(b\)的长方体放入池中,使得长方体严格在水面以下,当然长方体放进去后水面会上升。求出长方体体积的最大值。
solution
假设水面不会上升。则某个子矩阵上的长方体的体积为该子矩阵中的最小值乘子矩阵的面积。设\(A(h)\)表示最小值为\(h\)的子矩阵的最大面积(当然要考虑\(a, b\)),这个函数可以在\(O(n^3)\)的时间内求出。(枚举某两列,表示子矩阵的列的范围,压缩成一列,即每行只保留最小值,算出第\(i\)行的最小值为子矩阵最小值的范围)
事实上并不需要记录\(A(h)\),当算出\(A(h)\)时,\(O(1)\)就能算出它能高出原水面的高度,更新答案即可。
时间复杂度:\(O(n^3)\)
J - Pollution Solution
题目描述:求一个半圆与一个多边形的交的面积。
solution
由于那个多边形也只在半圆的那边,所以直接求多边形与圆的交也是可以。直接上模板。
时间复杂度:\(O(n)\)
ACM International Collegiate Programming Contest World Finals 2013的更多相关文章
- ACM International Collegiate Programming Contest World Finals 2014
ACM International Collegiate Programming Contest World Finals 2014 A - Baggage 题目描述:有\(2n\)个字符摆在编号为\ ...
- 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 ...
- 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. ...
- Gym100814B Gym100814F Gym100814I(异或) ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (2015) Arab Academy for Science and Technology
今日份的训练题解,今天写出来的题没有昨天多,可能是因为有些事吧... Gym100814B 这个题就是老师改卷子,忘带标准答案了,但是他改了一部分卷子,并且确定自己改的卷子没出错,他想从改过的卷子里把 ...
- [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 ...
- 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 ...
- ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (ECPC 2015)
A.Arcade Game(康拓展开) 题意: 给出一个每个数位都不同的数n,进行一场游戏.每次游戏将n个数的每个数位重组.如果重组后的数比原来的数大则继续游戏,否则算输.如果重组后的数是最大的数则算 ...
- Codeforces Gym100814 I.Salem-异或 (ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (2015) Arab Academy for Science and Technology)
这个题就是二进制,找两个数相应的二进制相对应的位置上数不同的最多的个数.异或写就可以. 一开始还想麻烦了,找出来最大的偶数和最大的奇数,最小的偶数和最小的奇数,但是这样想考虑的不全.因为范围比较小,直 ...
- 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 ...
随机推荐
- BZOJ 4034 树上操作(树的欧拉序列+线段树)
刷个清新的数据结构题爽一爽? 题意: 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x ...
- 分布式文件系统服务器FastDFS
1. 什么是FastDFS FastDFS 是用 c 语言编写的一款开源的分布式文件系统.FastDFS 为互联网量身定制, 充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标, ...
- String Typing CodeForces - 954B
题意: 给一个字符串,可以复制某一段字符,问最少需要多少步能将其输出,比如abcabcd,先输入abc然后再赋值abc再输入d就只需要5步. 复制的这段字符 必须是从字符串的0位置开始复制的 而且只 ...
- C++四种类型转化
2018-08-02 (星期四)C++类型转换:static_cast提供编译时期静态类型检测: static_cast <type-id> (expression) 1)完成 ...
- NOIP2017 Day2 T2 宝藏(状压DP)
$O(n*3^n)$好难想...还有好多没见过的操作 令$f[i][j]$表示最深深度为i,点的状态为j的最小代价,每次枚举状态$S$后,计算$S$的补集里的每个点与S里的点的最小连边代价,再$O(3 ...
- [ACM][2018南京预赛]Magical Girl Haze
一.题面 样例输入: 15 6 11 2 21 3 42 4 33 4 13 5 64 5 2 样例输出: 3 二.思路 关键词:分层BFS 考试时觉得题干意思很清晰——求可将k条边赋值为0的最短路. ...
- dfs.datanode.du.reserved 预留空间不生效的问题
生产环境(cdh5.5.1)遇到一个问题:已经设置 dfs.datanode.du.reserved预留空间为20G,但是磁盘仍然被写满了. 当挂载磁盘作为datanode的存储空间,如果磁盘大小为2 ...
- swiper.js的使用
点击api文档地址, (1)图片轮播banner <script src="js/jquery-2.1.4.min.js"></script> <sc ...
- 字符串hash的学习部分 可以算是模板?
资料来自于http://www.bilibili.com/video/av7230433/ 定义这个字符串为s ①单hash hash[i] = (hash[i - 1] * p + idx(s[i] ...
- CF821 A. Okabe and Future Gadget Laboratory 水
Link 题意:询问n X n中非1数是否能够由同行同列中分别取两个数做和得到. 思路:水题. /** @Date : 2017-07-03 16:23:18 * @FileName: A.cpp * ...