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. SQlServer 从系统表 sysobjects 中获取数据库中所有表或存储过程等对象

    [sysobjects] 一.概述 系统对象表. 保存当前数据库的对象,如约束.默认值.日志.规则.存储过程等,该表中包含该数据库中的表 存储过程 视图等所有对象 在sqlserver2005,sql ...

  2. 自定义的dialog

    自定义的dialog  其中包含置顶 删除 和取消 下面的是BaseDialog package com.free.csdn.view.dialog; import android.app.Dialo ...

  3. [转] lib和dll 区别,生成及使用方法

    lib 和 dll 的区别.生成以及使用详解 [目录] lib dll介绍 生成动态库 调用动态库 生成静态库 调用静态库 首先介绍一下静态库(静态链接库).动态库(动态链接库)的概念,首先两者都是代 ...

  4. linux基础命令学习(三)Vim使用

    1. # vim 1.txt 命令模式: a i o A I O x X yy dd p G dw de h j k l f H M B a --- append 追加 在光标所在位置后追加一个字符 ...

  5. javascript笔记1-基本概念

    关键字: 变量: function test(){ message = 'hi'; //不加var,表示全局变量:加var,表示局部变量 } 数据类型: 总共有五种基本数据类型:Undefined.N ...

  6. http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx

    http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx

  7. iOS 获取IP地址

    一.获取本机IP地址 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #import <ifadd ...

  8. 升级IOS 9 和 XCode 7 引起的问题

    问题一: 升级xcode 7最低的系统配置要求 升级了ios9 后使用 xcode 6.1 已经不能用了,必须升级 xcode 7才行,原先的系统是OSX 10.10.1 版本.而xcode 7.0 ...

  9. oracle第一招之神马都是浮云

    oracle: 一款关系型(二维表)数据库,可以用来存储海量数据.在大数据量并发检索的情况下,性能要高于其他的同类数据库产品.一般运行环境是Linux和Unix操作系统上! 目前最流行的商业数据库,主 ...

  10. 8、网页制作Dreamweaver(jQuery基础:安装、语法)

    在<网页制作Dreamweaver(悬浮动态分层导航)>中,运用到了jQuery的技术,轻松实现了菜单的下拉.显示.隐藏的效果,不必再用样式表一点点地修改,省去了很多麻烦,那么jQuery ...