2016 Sichuan Province Programming Contest

代码


A. Nearest Neighbor Search

  • \(dx\)根据\(x_0\)与\([x_1, x_2]\)位置考虑。
  • \(dx、dy、dz\)单独考虑。

B. Odd Discount

  • 做法一:对于两个不同优惠\((i,j)\),所有方案中与两个优惠商品交集为奇数,即同时取到两种优惠的个数为\(2^{n-2}\)种。
  • 简要证明:
  1. 记\(x\)为集合\(i\)有而集合\(j\)没有的个数,\(y\)为集合\(j\)有而集合\(i\)没有的个数,剩余\(n-x-y\)个考虑交集与购买方案的交集奇偶性。
  2. 若交集部分与购买方案的交集为奇数,这种方案有\(2^{n-x-y-1}\)种,那么\(x\)位需要和集合\(i\)的交集为偶数,\(y\)位与集合\(j\)的交集也偶数,方案数分别为\(2^{x-1},2^{y-1}\),则方案数为\[2^{x-1}\cdot 2^{y-1}\cdot 2^{n-x-y-1}=2^{n-3}\]再考虑交集与购买方案的交集为偶数情况,方案数也是这个,所以总的方案数为\[2^{n-2}\]
  • 做法二:参考ICPC-CAMP题解
  • 用\(f(p_1,p_2,\cdots,p_i,s_{i+1},s_{i+2},\cdots,s_n,r)\)表示已经购买了\(i\)件商品,\(i+1\cdots n\)的优惠状态为\(s\),且交集奇偶性为\(r\)的价格之和。
  • 按购买的商品个数划分阶段,根据\(p_{i+1}\)和\(s_{i+1}\)来计算交集的奇偶性即可。

E. Coins

  • 分类讨论:
  1. 只有一种硬币时,返回相应的个数。
  2. \(a_1=0\),分两种情况:\(a_2=1\)时,\[2\ |\ 3,\times,5\ |\ 6,\times,8\ |\ \cdots\]即从3开始,每三个一组,每组有两个值。
    \(a_2>1\)时,构成\[2,3,4,5,6,7,\times,9,\cdots\]
    此时,在\(2a_2+3a_3\)范围内有两个值取不到。
  3. \(a_1>0\)时,分三种情况:
    \(a_1 =1, a_2=0\),此时构成\[1,\times,3,4,\times,\times,6,7,\times,\times,\cdots\]
    共\(1+2a_3\)种值。
    \(a_1>=2, a_2=0\),可以构出\([1, a_1+3a_3]\)内的值。
    \(a_2>0\),那么总可以构出\([1, a_1+2a_2+3a_3]\)内的所有值。

F. Floyd-Warshall

  • 随便构一棵树出来,那么两点之间的路径的最短路要么直接走树边,否则走非树边。
  • 因为非树边最多100,涉及200个点,那么可以枚举必经的顶点,bfs到其他点的最短距离,时间复杂度为\(O(200N)\)。

G. Road History

  • 考虑每条边加入带来的效果(中间的推论过程):
  1. 若连接的是两个连通块,如果要构成奇数条边,则一边贡献奇数,一边贡献偶数才行。
  2. 如果连接的是同一个联通块,则构成环,如果构成的环长度为偶数,显然没有什么卵用(如果其他两点需要经过这两个点,走环的任意一侧奇偶性都一样,加入这条边后也没什么改变)。如果环长度为奇数,说明整个连通块任意两点都有奇数长度的路径(因为走到奇环上可以根据需要走其中一侧可以改变路径的奇偶性)。
  3. 在考虑连通块是否有奇偶性时,在1.中的合并就需要额外考虑奇环的存在。
  4. 并查集维护时,需要维护当前节点到根的奇偶性,可以维护当前节点与直接父节点的奇偶性,路径压缩时直接连向根节点即可维护节点到根的奇偶性。

I. Longest Increasing Subsequence

  • 对于\(n\)个数来说,我们只关心其大小关系,用\(5^5\)枚举每个位置的值在整个序列中的排名。
  • 固定排名后,用\(f(i,j)\)表示第\(i\)大的值为\(j\)的方案数,转移时为\[f(i,j)=\sum_{k=0}^{j-1}{f[i-1][k]}\]维护前缀和即可\(O(1)\)转移。

J. Matrix Transformation

  • 维护四个方向的链表。

2016 Sichuan Province Programming Contest的更多相关文章

  1. 2016 Hunan Province Programming Contest

    2016 Hunan Province Programming Contest A. 2016 题意 \(1 \le a \le n, 1 \le b \le m\) ,其中\(1 \le n,m \ ...

  2. 2016 China Collegiate Programming Contest Final

    2016 China Collegiate Programming Contest Final Table of Contents 2016 China Collegiate Programming ...

  3. Sichuan State Programming Contest 2012 C。Counting Pair

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=118254#problem/C 其实这道题目不难...就是没有仔细分析... 我们可以发现 ...

  4. 2016-2017 CT S03E05: Codeforces Trainings Season 3 Episode 5 (2016 Stanford Local Programming Contest, Extended) E

    链接:http://codeforces.com/gym/101116 学弟写的,以后再补 #include <iostream> #include <algorithm> # ...

  5. 2016-2017 CT S03E05: Codeforces Trainings Season 3 Episode 5 (2016 Stanford Local Programming Contest, Extended) J

    链接:http://codeforces.com/gym/101116 题意:给出n个点,要求一个矩形框将(n/2)+1个点框住,要面积最小 解法:先根据x轴选出i->j之间的点,中间的点(包括 ...

  6. 2016-2017 CT S03E05: Codeforces Trainings Season 3 Episode 5 (2016 Stanford Local Programming Contest, Extended) I

    链接:http://codeforces.com/gym/101116 题意:选六个数,必须出现次数最多,且数字最小,如果出现7优先加入7 解法:排序,出现7优先加入7,最后再将6个数排序 #incl ...

  7. 2016-2017 CT S03E05: Codeforces Trainings Season 3 Episode 5 (2016 Stanford Local Programming Contest, Extended) B

    链接:http://codeforces.com/gym/101116 学弟做的,以后再补 #include <iostream> #include <stdio.h> #in ...

  8. UESTC 1717 Journey(DFS+LCA)(Sichuan State Programming Contest 2012)

    Description Bob has traveled to byteland, he find the N cities in byteland formed a tree structure, ...

  9. zoj The 12th Zhejiang Provincial Collegiate Programming Contest May Day Holiday

    http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5500 The 12th Zhejiang Provincial ...

随机推荐

  1. 在同一个页面中加载多个不同的jQuery版本

    <!-- 从谷歌服务器加载jQuery最新版本--> <script type="text/javascript" src="http://ajax.g ...

  2. 分布式一致性原理—BASE

    定义 BASE是BasicallyAvailable(基本可用).Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写,是由来自eBay的架构师Dan ...

  3. Problem K 栈

    Description A math instructor is too lazy to grade a question in the exam papers in which students a ...

  4. PL/SQL : Procedural Language / Structual Query Language and it is an exrension to SQL.

    SQL is not very flexible and it cannot be made to react differently to differing sutuations easily. ...

  5. [转]change the linux startup logo

    1. Make sure that you have the kernel sources installed. As annoying as this may seem, you will need ...

  6. [转]shell基本算术运算

    from:http://www.cnblogs.com/yfanqiu/archive/2012/05/10/2494031.html#undefined shell程序中的操作默认都是字符串操作,在 ...

  7. [安卓]The Google Android Stack

  8. 防止忘记初始化NSMutableArray的方法

    在写项目的过程中,经常会遇到一些郁闷的事,往一个可变数组中添加一个模型数据时,经常会发现程序运行很正常,可是可变数组中就是没有任何数据,久病成医,我发现自己总是放一个错,就是NSMutableArra ...

  9. php 封装分页查询类

    <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $lis ...

  10. Repeater分页

    void BindData()        {            PagedDataSource pds = new PagedDataSource();                     ...