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. “更高效率:标准化+简约风+移动化”--K2 BPM老客户交流会

    主题:工作流主数据标准化和移动工作流带来的企业沟通建设机会 嘉宾:李瑞延(盛大网络IT总监) 公司管理需要更好的工作流 -为决策提供依据 通过对各级业务公司各类流程数据的获取与分析,为管理决策提供必要 ...

  2. 【参考文献1】Word2010删除引用参考文献留下的横线

    那个莫名其妙不能选中,相信你也遇到.如果是这样,可能那个是尾注分隔符.你可以按照本文的方法解决.当然啦,这个也是按照网上的方法整理参考文献会留下的直线 Office Word2010 方法/步骤   ...

  3. 宏定义#define和typedef的区别和典型范例题目辨析

    宏定义#define pStr char*  ,是直接把程序中出现pStr的地方替换成char* ,直接替换: typedef  char * pStr; 是给char*定义一个别名叫做 pStr; ...

  4. pyqt5 笔记(二)实现http请求发送

    上个图~ index.py 文件 # -*- coding: utf-8 -*- from PyQt5 import QtWidgets,QtCore #从pyqt库导入QtWindget通用窗口类 ...

  5. Spark的编译

    由于Spark的运行环境的多样性,如可以运行在hadoop的yarn上,这样就必须要对Spark的源码进行编译.下面介绍一下Spark源码编译的详细步骤: 1.Spark的编译方式:编译的方式可以参考 ...

  6. xml文件有误

    Unable to start activity ComponentInfo{com.anzi.jmsht.scripturelibrary/com.anzi.jmsht.scripturelibra ...

  7. lightoj1080 线段树

    //Accepted 6628 KB 520 ms //I a b 把a到b区间的二进制位去反,转化成a到b区间的数全部加1 //Q a 判断第a位的奇偶 #include <cstdio> ...

  8. JS tab切换事件

    $('ul.main-tab>li').on('mousedown', data, function() { var $this = $(this), $box = $('.main-tab-c ...

  9. BZOJ 1630/2023 Ant Counting 数蚂蚁

    DP. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  10. CentOS 7.0禁用iptables防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. firewall: systemctl start firewalld.service#启动firewal ...