2014-2015 Petrozavodsk Winter Training Camp, Contest.58 (Makoto rng_58 Soejima contest)
2014-2015 Petrozavodsk Winter Training Camp, Contest.58 (Makoto rng_58 Soejima contest)
Problem A. Manhattan
solved by RDC 32 min 1Y
题意 给一网格图,找出欧几里得距离为 d 的两点,最大化最短路。
第一回合
三分搜索,第一个点的坐标 \((x,0)(0\leq x<1)\),确定第一个点后,对第二个点的横坐标或者纵坐标进行枚举计算答案。
第二回合
设最优解两点之间,横坐标差绝对值为 \(dx\) 纵坐标差绝对值为 \(dy\),分类讨论。
- 当 \(dx\) 为整数时,枚举 \(dx\),有 \(dy=\sqrt{d^2-dx^2}\)。
- 当 \(dy\) 为整数时,枚举 \(dy\)。
- 否则,猜测答案为 \(\sqrt{2}d\),两点斜率绝对值为 1。(距离为 \(d\) 的两点曼哈顿距离最大值为 \(\sqrt{2}d\))
第三回合
- 注意到,若 \(min(dx,dy)\geq 1\) 或者 \(dx,dy\) 皆不为整数,两点间最短路即曼哈顿距离。
- 当两点间最短距离不是曼哈顿距离时,\(0 \leq min(dx,dy)<1\),且 \(dx,dy\) 中存在正整数。
Problem C. Clique Coloring
solved by RDC 112 min 1Y
题意 求极小的 m,使得可以选出大小分别为 \(a_1,a_2,...,a_n\) 的子集,使得两两交大小小于等于 1.
做法
- 注意到任意两个集合的交,小于等于 1.
- 元素按,是否归属于 \(1,2,...,n\) 号集合,可以划分成 \(2^n\) 个等价类,编号分别为 \(0\)~\(2^n-1\)
- DFS 枚举编号 \(bitcount()\) 大于 1 的等价类中是否有元素,剪掉一些 invalid 的枚举(若 \(bitcount(x\&y) \geq 2\),那么第 x 个等价类,第 y 个等价类,不可同时有元素)。
- 合法的枚举方案很少 \((<1e5)\),对每种方案统计答案即可。
Problem B. Dictionary
upsolved by RDC,sdcgvhgj,F0_0H
题意 给 n 个串,字符集为小写字母,替换 '?',使字典序单增。
做法1 考虑 DP
- \(f[l][r][p][c]\) 表示考虑第 l 个串到第 r 个串的 p ~ 20 位, 使得它们字典序单增,且 \(s[x] [p]=c(l \leq x \leq r)\) 的方案数。
- \(g[l][r][p][c]\) 表示考虑第 l 个串到第 r 个串的 p ~ 20 位, 使得它们字典序单增,且 \(s[l] [p]=c\) 的方案数。
- \(g[21][i][i]['\0']=f[21][i][i]['\0']=1(1\leq i\leq n)\)
- \(f[l][r][p][c]=\sum_{ch}g[l][r][p+1][c]*[condition]\),其中 \([condition]\) 表示 \(s[x][p](l\leq x\leq r)\) 能否全为字符 \(c\).
- \(g[l][r][p][c]=\sum_{ch>c}\sum_{mid}f[l][mid][p][c]*((mid+1<=r)?g[mid+1][r][p][ch]:1)\)
- 对 \(g[l][r][p][]\) 做后缀和,优化。
code
做法2 对上述状态转移的简化
- \(f[l][r][p][c]\)表示考虑第 l 个串到第 r 个串的 p ~ 20 位, 使得它们字典序单增,且 \(s[x] [p]\leq c(l \leq x \leq r)\) 的方案数。
- \(f[l][r][p][c]=\sum_{ch<c}\sum_{mid}f[l][mid][p][ch]*f[mid+1][r][p+1]['z']*[condition]\),其中\([condition]\)表示\(s[x][p](mid+1\leq x\leq r)\)能否全为字符\(c+1\)
code
Problem D. Dense Amidakuji
upsolved by F0_0H
题意 排骨龙沿着竹竿往下爬,输出会从哪个竹竿落下。
做法
考虑两个如下事实:
- 对于每条横边,定会被经过两次,一次从左往右,一次从右往左
- 每删除一条横边,相当于交换该横边左右两次经过的状态
所以只需要考虑每条横边原始被经过的标号,交换一下即可(从上到下考虑)
code
Problem G. Snake
upsolved by sdcgvhgj
题意 给一条折线段\(P_1P_2,.....P_n\),问能否穿过一个洞。
口胡 by rdc
- 能穿过洞,等价于折线段在任意位置都能被直线划分成两段。
- 若在位置 \(Q\) 能被划分成两段,那么必存在 \(1\leq i \leq n\),使得 \(QP_i\) 能把折线段划分成两段。
- 枚举点 \(P_i\),更新点集 \(\{Q|P_iQ 能划分折线段\}\)。
- 有解,等价于,\(\cup_{i=1}^{n} \{Q|P_iQ 能划分折线段\} = 折线段上点组成点集\)。
Problem J. Hyperrectangle
题意 输入 \(d\) 维长方体,求 \(x_1+x_2+..+x_d\leq s\) 体积。
2014-2015 Petrozavodsk Winter Training Camp, Contest.58 (Makoto rng_58 Soejima contest)的更多相关文章
- 【取对数】【哈希】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem J. Bobby Tables
题意:给你一个大整数X的素因子分解形式,每个因子不超过m.问你能否找到两个数n,k,k<=n<=m,使得C(n,k)=X. 不妨取对数,把乘法转换成加法.枚举n,然后去找最大的k(< ...
- 【BFS】【最小生成树】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem G. We Need More Managers!
题意:给你n个点,点带权,任意两点之间的边权是它们的点权的异或值中“1”的个数,问你该图的最小生成树. 看似是个完全图,实际上有很多边是废的.类似……卡诺图的思想?从读入的点出发BFS,每次只到改变它 ...
- 【状压dp】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem E. Guessing Game
题意:给你n个两两不同的零一串,Alice在其中选定一个,Bob去猜,每次询问某一位是0 or 1.问你最坏情况下最少要猜几次. f(22...2)表示当前状态的最小步数,2表示这位没确定,1表示确定 ...
- 【推导】【单调性】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem B. Tribute
题意:有n个数,除了空集外,它们会形成2^n-1个子集,给你这些子集的和的结果,让你还原原来的n个数. 假设原数是3 5 16, 那么它们形成3 5 8 16 19 21 24, 那么第一轮取出开头的 ...
- 【线性基】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem A. XOR
题意:给你一些数,问你是否能够将它们划分成两个集合,使得这两个集合的异或和之差的绝对值最小. 设所有数的异或和为S,集合A的异或和为A. 首先,S的0的位对答案不造成影响. S的最高位1,所对应的A的 ...
- 【模拟退火】Petrozavodsk Winter Training Camp 2017 Day 1: Jagiellonian U Contest, Monday, January 30, 2017 Problem F. Factory
让你在平面上取一个点,使得其到给定的所有点的距离和最小. 就是“费马点”. 模拟退火……日后学习一下,这是从网上扒的,先存下. #include<iostream> #include< ...
- 【动态规划】【二分】Petrozavodsk Winter Training Camp 2017 Day 1: Jagiellonian U Contest, Monday, January 30, 2017 Problem B. Dissertation
题意: 给定S1串,长度100w,S2串,长度1k.问它俩的LCS. f(i,j)表示S2串前i个字符,LCS为j时,最少需要的S1串的前缀长度.转移的时候,枚举下一个字符在S1的位置即可.(可以预处 ...
- 【二分】Petrozavodsk Winter Training Camp 2017 Day 1: Jagiellonian U Contest, Monday, January 30, 2017 Problem A. The Catcher in the Rye
一个区域,垂直分成三块,每块有一个速度限制,问你从左下角跑到右上角的最短时间. 将区域看作三块折射率不同的介质,可以证明,按照光路跑时间最短. 于是可以二分第一个入射角,此时可以推出射到最右侧边界上的 ...
- 2015 UESTC Winter Training #7【2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest】
2015 UESTC Winter Training #7 2010-2011 Petrozavodsk Winter Training Camp, Saratov State U Contest 据 ...
随机推荐
- 原创:用node.js搭建本地服务模拟接口访问实现数据模拟
前端开发中,数据模拟是必要的,这样就能等后台接口写完,我们直接把接口请求的url地址从本地数据模拟url换成后台真实地址就完成项目了.传参之类的都不用动. 之前网上找了很多类似于mock等感觉都不太实 ...
- Linux系统管理----账号与权限管理作业习题
1.创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) 创建目录:mkdir +目录 [root@localhost chen]#mkdir /guan ...
- Java秒杀系统实战系列~商品秒杀代码实战
摘要: 本篇博文是“Java秒杀系统实战系列文章”的第六篇,本篇博文我们将进入整个秒杀系统核心功能模块的代码开发,即“商品秒杀”功能模块的代码实战. 内容: “商品秒杀”功能模块是建立在“商品详情”功 ...
- 用机智云做PWM占空比控制电机,物联网智能家居应用
因为是新申请的博客,所以申请了总想往里面加点东西,所以把我之前在机智云写的帖子复制了过来 (各位抱歉,由于之前上传的文件可能有错误,之前上传的文件PWM不能用,那么我又重新上传了一个文件,这个文件 ...
- Kotlin学习快速入门(5)——空安全
介绍 kotlin中,对象可分为两种类型,可为空的对象和不可为空对象 默认为不可为空对象,代码检测如果发现不可为空对象赋予了null,则会标红报错. 可为空的对象,如果调用了方法,代码检测也会标红报错 ...
- 表单与v-model
基本用法 vue.js提供了v-model指令,用于在表单类元素上双向绑定数据,例如在输入框上使用,输入的内容会实时映射到绑定的数据上 example1:修改input框内容,message会实时渲染 ...
- 有容云-【原理】Docker存储驱动之AUFS
编者按:今天聊一聊Docker的Image(镜像)与Container(容器)的存储以及存储驱动之AUFS. Docker存储驱动简介 Docker内置多种存储驱动,每种存储驱动都是基于Linux ...
- Permission 使用详解
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...
- .net core使用ocelot---第一篇 简单使用
简介原文地址 接下来你会学习,基于asp.net core 用Ocelot实现一个简单的API网关.或许你会疑问什么是API网关,我们先看下面的截图 API网关是访问你系统的入口,它包括很多东西,比如 ...
- 【Python】狂蟒来袭 | 使用Anaconda搭建Python开发环境
这段时间转了一个小圈圈,发现又回来了,瞎忙.想要学习数据挖掘的小伙伴一定得对机器学习有所了解吧,我之前看过几页周志华老师的西瓜书,但终没能坚持下来. 人生处处是起点,什么时候都不晚.记此笔记以分享与督 ...