Codeforces Round #566 (Div. 2)

A Filling Shapes

给定一个 \(3\times n\) 的网格,问使用 这样的占三个格子图形填充满整个网格的方案数

如果 \(n\) 是奇数,那么显然无解,否则考虑每个 \(3\times2\) 的方格正好能塞下两个这玩意而且必须这样塞进去,方案数为 \(2\),因此答案为 \(2^{n/2}\)

B Plus from Picture

给定一个 \(h\times w\) 的矩阵,每个元素为 "." 或者 "*"。询问该矩阵内是否存在且仅存在一个 "*" 十字形,十字形的定义是有一个中心,且中心的四个方向都延长出去至少一格,并且不能有其它的 "*" 出现

寻找一个中心点,如果一个位置是 "*" 并且它四个方向都是 "*" 那么它必然是中心点。把以其为中心的十字形删去,判断是否有剩余的 "*" 即可

C Beautiful Lyrics

给定一堆字符串,定义一个 lyric 是四个字符串 s1,s2,s3,s4 满足 s1的元音字母个数和s3的元音字母个数相等,s2的元音字母个数和s4的元音字母个数相等,s2的最后一个元音字母和s4的最后一个元音字母相同。问这些字符串最多能组成多少个 lyric 要求每个字符串最多只能使用一次(即只能用在一个 lyric中),若输入了多个相同的字符串那么这个字符串可以使用输入的个数次

不难发现有用的只有一个串的元音个数和这个串的最后一个元音字母。优先匹配元音个数和最后一个元音字母都相同的串,因为这样的串放在 s1和s3 和放在 s2和s4 同样可行。那么对于一个给定的元音个数和元音字母最多剩下一个这样的串(没别的跟它配对了),这样的串按照元音个数再配一次对,那么对于一个指定的元音个数,最多剩下一个串没有配对,只能扔掉了。然后令只有个数相同的配对存储在 \(A\) 集合里面,元音个数和字母都相同的存储在 \(B\) 集合里面,那么如果 \(|A|\geq|B|\),那么答案就是 \(|A|\),否则就是先把 \(B\) 中的一些作为 s2,s4 和 \(A\) 中的一些作为 s1,s3 配成 lyric,直到 \(A\) 用光为止。然后继续把 \(B\) 里面的自己配一下,即可得到最优解。贪心正确性显然。

D Complete Mirror

给定一棵树,现在要求寻找一个根节点,满足到根节点距离相等的一堆节点的度数都相同,即只要 depth[i]=depth[j] 那么 degree[i]=degree[j]

首先考虑最终的树的构造,每个有大于一个儿子的子树的所有儿子应当完全相同

有两种做法

1:把所有叶子所在的枝(就是所有叶子以及其网上每个点都只有一个儿子的形成一条链的一段)删掉,剩下的就是上图中 mid level 部分 那么这个部分的 root 是很好找的,因为这棵树中只有一个点能够将整棵树分成 size 相同的几个部分,可以通过 dfs 一遍直接找出来

2:寻找树的直径,然后首先检查两端点,如果都不是证明树的直径应当是下图这样

这样的话 semi top 一定是直径的中点,然后检查一下这个点以及到这个点成链的一些点(就是说到这个点路径上所有点的度数都为2的最远的一些点),如果都不行显然就无解

E Product Oriented Recurrence

给定一个递推式 \(f_{x} = c^{2x-6} \cdot f_{x-1} \cdot f_{x-2} \cdot f_{x-3}\) 以及 \(f_1,f_2,f_3,c\) 的值,求第 \(n\) 项是多少(\(n\leq 10^{18}\))

首先观察 \(c^{2x-6}\),发现其就是 \(\frac {c^{x-1}\cdot c ^ {x - 2} \cdot c ^{x - 3}} {c ^ x}\)

那么令 \(g_x=c^x\cdot f_x\),则有 \(g_x=g_{x-1}\cdot g_{x-2} \cdot g_{x-3}\)

那么可以用矩阵存储每一项中 \(g_1,g_2,g_3\) 的次数,然后矩阵乘法转移一下

记得最终要除以 \(c_x\)

F Maximum Sine

令 \(f(x) = \text{abs}(\sin(\frac{p}{q} \pi x))\)
给定了 \(p,q\) 现在要求一个在 \([a,b]\) 范围内的整数 \(x\),满足 \(f(x)\) 最大
有多组询问,询问组数 \(\leq100\)

不难发现,对于 \(x,y \in [0,\pi]\) 而言,\(\sin(x) \leq \sin(y)\) 当且仅当 \(|x-\frac \pi 2| \leq |y - \frac \pi 2|\),并且题目中的 \(f(x)\) 的最小正周期是 \(\pi\)

那么我们可以将题目修改成寻找 \([a,b]\) 范围内的一个整数 \(x\),使得 \(\frac p q x\) 的小数部分最接近 \(\frac 1 2\),即寻找一个 \(x\) 使得 \(2px \mod 2q\) 最接近 \(q\)

令 \(g(x) = 2px \mod 2q\)。令 \(t = \sqrt{b-a+1}\) 并且建立一个表如下 \([(g(a), a), (g(a+1), a+1), \ldots (g(a+t-1), a+t-1)]\)

这样我们可以找到任意的 \(x\) 满足 \(g(x)\) 和 \(y\) 最接近,现在我们可以直接找出任意一个 \([a,b]\) 之间的数而不用修改我们的表,因为 \(g(x)+g(y)=g(x+y) \pmod {2q}\)

因此每一次询问需要 \(\sqrt{b-a+1}\) 次操作,我们的目标值是 \(q-2 \cdot i \cdot t \cdot p \mod {2q}\) 对于第 \(i\) 次操作。最终我们为了保证范围还要再暴力一遍。

Codeforces Round #566 (Div. 2)的更多相关文章

  1. Codeforces Round #566 (Div. 2) C. Beautiful Lyrics

    链接: https://codeforces.com/contest/1182/problem/C 题意: You are given n words, each of which consists ...

  2. Codeforces Round #566 (Div. 2) B. Plus from Picture

    链接: https://codeforces.com/contest/1182/problem/B 题意: You have a given picture with size w×h. Determ ...

  3. Codeforces Round #566 (Div. 2) A. Filling Shapes

    链接: https://codeforces.com/contest/1182/problem/A 题意: You have a given integer n. Find the number of ...

  4. Product Oriented Recurrence(Codeforces Round #566 (Div. 2)E+矩阵快速幂+欧拉降幂)

    传送门 题目 \[ \begin{aligned} &f_n=c^{2*n-6}f_{n-1}f_{n-2}f_{n-3}&\\ \end{aligned} \] 思路 我们通过迭代发 ...

  5. Codeforces Round #566 (Div. 2)题解

    时间\(9.05\)好评 A Filling Shapes 宽度为\(3\),不能横向填 考虑纵向填,长度为\(2\)为一块,填法有两种 如果长度为奇数则显然无解,否则\(2^{n/2}\) B Pl ...

  6. Codeforces Round #566 (Div. 2)C(字符串,SET)

    #include<bits/stdc++.h>using namespace std;string s[100007];set<int>st[100007][7];int t[ ...

  7. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  8. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  9. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

随机推荐

  1. ZOJ 3640 Help Me Escape:期望dp

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3640 题意: 有一个吸血鬼被困住了,他要逃跑... 他面前有n条 ...

  2. 搭建自己的AppRTCDemo服务器

    http://www.jianshu.com/p/c55ecf5a3fcf http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD%E7%AB%A0 ...

  3. linux 网络编程getdomainname与gethostname函数

    getdomainname与gethostname函数 1 gethostname() : 返回本地主机的标准主机名. 原型如下: #include <unistd.h> int geth ...

  4. P2762 [网络流24题]太空飞行计划问题(最小割)

    地址 最大权闭合子图裸题,不说了吧,求方案就是把s集遍历一遍. 错误记录:dfs那块忘判断残量了,11分×1. #include<cstdio> #include<iostream& ...

  5. P2764 [网络流24题]最小路径覆盖问题[最大流]

    地址 这题有个转化,求最少的链覆盖→即求最少联通块. 设联通块个数$x$个,选的边数$y$,点数$n$个 那么有 $y=n-x$   即  $x=n-y$ 而n是不变的,目标就是在保证每个点入度.出度 ...

  6. 关于redis,学会这8点就够了

    1,redis是什么 redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存,事件发布或订阅,高速队列等场景.该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队 ...

  7. 11g dataguard 类型、保护模式、服务

    一. Dataguard中的备库分为物理备库和逻辑备库及快照备库 备库是主库的一致性拷贝,使用一个主库的备份可以创建多到30个备库,将其加入到dataguard环境中,创建成功后,dataguard通 ...

  8. POJ2387(最短路入门)

    Til the Cows Come Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 38556   Accepted ...

  9. 云-资讯-Micron-Insight:云的形成方式 — 以及它的发展方向

    ylbtech-云-资讯-Micron-Insight:云的形成方式 — 以及它的发展方向 1.返回顶部 1. 云的形成方式 — 以及它的发展方向 当你坐下来开始一天工作的时候,你可能不会考虑到你所做 ...

  10. [bzoj2440]完全平方数(二分+mobius反演)

    解题关键:由容斥原理得,num=1的倍数的数量−一个质数平方数(9,25,49...)的倍数的数量+两个质数的积平方数(36,100,225...)的数量−三个质数...... 这道题用莫比乌斯的正向 ...