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. wsgi协议

    用来为server程序和app/framework程序做连接桥梁的,使server和app/framework各自发展,任意组合 上图是python3.4标准库里面,关于wsgiserver的实现.从 ...

  2. Maven 玩 github上的项目

    第一步,使用maven创建了一个项目"helloworld",cmd命令如下: @echo offecho [INFO] Generating project in ./gener ...

  3. 关键字const

    const关键字常和指针一起使用. 1,const给读代码的人传达非常有用的信息.比如一个函数的参数是const char *,你在调用这个函数时就可以放心地传给它char *或const char ...

  4. 虚拟机安装Centos版本的linux

    选择自定义安装,然后一路确定下去,对了,Centos的版本一定要高,比如centos 6,太低安装会出问题

  5. 我认为测试应该掌握的SQL语句

    最近在学习Oracle,对测试人员而言必须掌握两种语言:第一种是DML,数据操纵语言 (Data Manipulation Language) 是SQL语言中,负责对数据库对象运行数据访问工作的指令集 ...

  6. IPAD2 5.1.1越狱后的屏幕不能自动旋转~~~

    己顶,出现这问题的原因是因为越狱安装了插件的原因.问题解决了,大家没有遇到类似的问题吗?问题出在大家都装了一个SBSettings的插件,解决办法就是在这个插件的ISO 5+ Notification ...

  7. git命令学习用

  8. the way of reading English books

    除了datesheet ,我们经常遇到英语文档和资料.找到正确的英语文档的打开方式变的非常必要. 计算机类的书大致归为三大类: (1)语言方面的书.比如C.Java.Python等等 (2)算法书籍. ...

  9. access手工注入

    1.判断数据类型 and exists (select * from msysobjects) >0 and exists (select * from sysobjects) >0 一般 ...

  10. 二、XML约束

    XML约束有dtd约束和Schema约束两种 dtd约束:可以在xml内部写dtd约束也可以在xml中引用外部dtd文件 book.dtd<!ELEMENT 书架 (书+)>    < ...