【日常训练】【ACM】2019-10-27_ccpc2019秦皇岛

A: Angle Beats

我们写掉了,但是不是我写的,是pcf写的。他卡了好久常数,所以我就不写题解了

D: Decimal

题面

每次给你一个正整数\(n\),问\(\frac{1}{n}\)在十进制下是否是无限小数。

题解

如果\(n\)只有2或者5作为质因子,那么就不是,否则就是。

这题很傻。

E: Escape

这题有点意思。

网络流

题面

  • 给你一个\(n\times m\)的网格,有些格子可能有障碍。
  • 在第\(1\)行上面放了若干个机器人,第\(i\)个在\((0,p_i)\)。
  • 在第\(n\)行下面有若干出口,第\(i\)个在\((n+1,e_i)\)。
  • 机器人在没有外力的情况下,只能走直线。初始他们往下走。
  • 你可以在若干个格子里放置与水平面呈\(45^{\circ}\)的固定的反射装置,每个装置可以双向转换。(即:假如一个装置可以让左转向上,那也可以让上转向左;但是不能从右边过来或者从下边过来)
  • 多个机器人可以同时存在于一个格子中。就是说机器人互不影响。
  • 询问是否有一种放置方案,使得每个机器人都可以到达一个出口。
  • \(1\leq n,m\leq 200\)

题解

  • 首先,我们观察一下,会发现这个东西用光线来描述似乎会更好。所以我就写光线了。
  • 我们首先会发现一件事情:不会有任何一对光线公用一个转换器,因为他们就没有合到一起的可能性。从这件事,我们就能推出来:
    • 对于一个格子,最多一条光线水平穿过,最多一条光线竖直穿过,最多一条光线在这里拐弯。
    • 当一个格子中有光线拐弯时,就一定不能再有其他光线经过了。
    • 一条光线走过的路线如果绕了一个圈,就一定会有一种不绕圈的方法完成等价的路线(因为在绕圈的交点,我们可以直接放置一个转换器)。
    • 一个出口最多走一条光线。
  • 那么,我们就可以建网络流图了(虽然我们还需要具体讨论一下,才能说明这样的确是能流的)
  • 如图:
  • 其中,每条边正向反向流量都是1。
  • 我们发现,这样子一弄,\(1\rightarrow0\rightarrow3\)(或者反过来),就代表了一条竖直穿过的光线;\(2\rightarrow0\rightarrow4\)(或者反过来),就代表了一条水平穿过的光线。
  • 拐弯的话,这也能表示。但是你可能会觉得,它会导致一个格子能让两条光线拐弯。比如\(1\rightarrow0\rightarrow2,3\rightarrow0\rightarrow4\)或者\(2\rightarrow0\rightarrow1,4\rightarrow0\rightarrow3\)。对于这件事,我们可以分类讨论。
    • \(1\rightarrow0\rightarrow2,3\rightarrow0\rightarrow4\),这东西就相当于一条竖直通过,一条水平通过。
    • \(2\rightarrow0\rightarrow1,4\rightarrow0\rightarrow3\),这东西虽然不能等价,但是他必定会导致其他地方和这个交叉口一起组合出一个环。那我们就可以直接交换两条光线得到合法解。也就是说,这个东西如果出现,是一定可以将之化为合法情况的。
  • 于是这个网络流就可行了。
  • 然后,我们再回到那幅图,发现1,2,3,4号节点一点用都没有,我们就只用把原图没有障碍的相邻节点连起来,跑Dinic就可以了。
  • 所以这道题的关键,就是认识到这个网络流是对的。
  • 复杂度\(O(nm(n+m))\),而且绝对跑不满。

F: Forest Program

这是傻题

题面

给你一个仙人掌森林,求有多少种删边方案使得删完之后剩下一个森林。

题解

对于一个\(n\)个点的环,方案数就是\(2^n-1\),对于不在环上的边,记其总和为\(m\),对答案贡献就是\(2^m\),乘起来即可。

I: Invoker

这是傻题

题面

题面有点长,但是没有什么意思,就放链接了codeforces I题

题解

直接状压最后三位就可以了

J: MUV LUV EXTRA

题面

给一个小数,问最好的循环节是什么

循环节”好”程度衡量:\(ap-bl\),\(l\)是循环节长度,\(p\)是按循环节出现的长度(例:0.012312,按循环节123出现了5位)

题解

  • 倒序之后对字符串跑kmp
  • 第\(i\)位结尾的循环节,最短长度即为\(i-ne_i\)。
  • 随便计算即可

其他的题

我们没做出来。

其中G有想法,但是pcf沉迷A题卡常,就没时间写了。

原文地址:https://www.cnblogs.com/czyarl/p/11748791.html

时间: 2024-10-31 15:03:15

【日常训练】【ACM】2019-10-27_ccpc2019秦皇岛的相关文章

2019.10.19初赛滚粗后的日子

写在故事的前面的话 人生中第一次考CSP-S,然后考得有点自闭,我想我写这篇blog并不是想要说AFO之类的话,相反,我觉得自己应该继续坚持下去的丫子.自己以前欠了很多知识,以前是自己初中时期的不认真,现在我就把自己当成是高一才学OI的萌新,忘记过去对自己的一些期望,重新开始自己的OI生涯. 2019.10.19 今天在自闭完了之后还是逐渐接受了初赛没有多大几率过的事实,开始复习起之前学的东西.首先,今天开始复习树形DP(入门).list如下: Park visit (已过) 没有上司的舞会 (

2019.10.27 头条面试准备

2019.10.27 头条面试准备 个人简历 2019.06 - 至今上海华为开发工程师 实习部门:5G开发部 项目:网站开发.运维开发.数据处理 2019.06至今华为实习 Python+Django+Javascript+Nginx+rabbitMQ+ELK 基于 Django 框架使用 Python 开发网站基础进程监控系统,实现进程异常记录.进程异常自动恢复.发送告警邮件,并且用 Web 界面进行展示和管理.整个框架由本人独立设计完成并上线,保证了部门 Web 的稳定. 使用Python

离线赛 2019.10.31

2019.10.30 \[ Ameiyo \] A: 地精部落 : Dp , 前缀和优化 Dp B: 深入虎穴 : 图,结论题 C: 教义问答手册 : 分治,分块,Dp A 挺简单的一道 Dp ...看 这个博客 . B 其实可以用 dijsktra 做这道题,但是每次用来更新的都是自己的次小值. 因为当你走到当前点时,老虎会让你不能走最小值,所以是用次小值更新. 每次也是拿次小值最小的点出来更新. ll mi[N][2]; struct NODE { int id; ll w; inline

[日常训练]yayamao的神题

Description $yayamao$是数学神犇,一天他在纸上计算起了$1/P$, 我们知道按照模拟除法可以得到准确解,例如$1/7=0.(142857),1/10=0.1(0)$.$yayamao$发现无论他如何模拟小数都会出现循环,现在$yayamao$想知道循环的长度以及循环出现之前,小数点后面的未循环的数字的位数.例如$1/15=0.0(6)$,那么它的循环长度为$1$,小数点后面的未循环的数字的位数为$1$;$1/4=0.25(0)$,那么它的循环长度为$1$,小数点后面的未循环的

[日常训练]最大M子段和

Description 在长度为的序列中选出段互不相交的子段,求最大字段和. Input 第一行两个整数. 第二行个整数. Output 一行一个整数表示最大值. Sample Input 5 2 10 -1 10 -1 10 Sample Output 29 HINT Solution 如果序列中正整数个数,直接取最大的个数的和即可. 将序列合并成若干个交错的正负段和,如-1,-2,3,4,-5,-6可以合并成-1-2,3+4,-5-6. 记录所有正数段之和,设正数段个数为,则需要把k段正数段

[日常训练]变戏法

Description 一开始有$n$个只有颜色不同的小球.定义使用一次膜法的效果是重新排列第$l_i$个到第$r_i$个小球.给定了$n$个小球的初始状态和最终状态,以及$m$次膜法的范围$l_i,r_i$.判断是否可以从初始状态转移到最终状态. Input 第一行有一个整数$t$表示数据组数. 每组数据中, 第一行两个整数$n,m$,表示总共有$n$个小球,$m$次操作. 第二行$n$个整数$a_i$,表示初始状态. 第三行$n$个整数$b_i$,表示最终状态. 接下来$m$行,每行两个整数

[日常训练]school

Description 众所周知,家离学校很远.于是,每天算准了时间出发,以保证能在上课铃响前 秒到达学校. 不幸的是,市最近正在修路.这就导致有些路可能无法通行,因而可能导致迟到. 不打算改变他的出发时间,现在他告诉你他通过每一条路的时间,他想要知道如果某条路被维修了,那么他是否能避免迟到? Input 第一行输入两个正整数,分别表示点数(路口)和边数(路). 第二行输入两个正整数,表示家标号为,学校标号为. 接下来行,每行三个整数,表示有一条连接的道路,走过该路所需的时间为. 接下来一个整数

c和c++的一些训练题(10)(打印螺旋方阵)

问题的提出:编写螺旋方阵.其中螺旋方阵形式如下: 1  12 11  10 2  13 16   9 3  14 15   8 4   5   6    7 设row,column分别代表行.列坐标,变量p从1到n2将p依次存入数组a[row][column]中,要确定row.colomn的变化情况.分析如下:引进变量k,初值为n.当数据存入到左下角或右上角时,k减1,这样可保证输出时方阵.引进变量t,初值为1,当数据存入到右下角时,令t改变符合,当存入到左上角时,t又改变符合,这样可保证赋值到

「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

题意与分析(CodeForces 540D) 代码 #include <iomanip> #include <iostream> #include <cstring> #include <algorithm> #include <vector> #define MP make_pair #define PB push_back #define fi first #define se second #define ZERO(x) memset((x