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. 9.1 NOIP普及组试题精解(1)

    9-1 series1.c #include <stdio.h> int main() { float s=0.0,k; int n; printf("输入数字k(1~15):& ...

  2. 程序猿老公去米国参加 WWDC,顺便想带渡老婆蜜月,如何办签证?

    这个问题要拆开描述比较好:1. 老公是苹果开发者,抽中了2014 WWDC购票机会,打算自费去参加.如果自己成行,应该办何种签证?2. 顺带,两人新婚半年还未安排蜜月,打算提前几天过去先游览一下西海岸 ...

  3. listen and translation exercise 53

    It was hard work and there weren't any interesting things for him. You should be an expert with comp ...

  4. PS滤镜— —波浪效果

    clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); I=imread ...

  5. ubuntu下 修改主机名

    sudo gedit /etc/hostname 写入: sudo gedit /etc/hosts

  6. QT画矩形

    第一次发QT的博文,本人对QT接触没多久,还在入门水平,大牛勿喷哈,之前因为C#  (.net framework)做出来的绘制矩形的程序闪的太厉害了,现在用QT重做一个 先上效果图 代码贴全了 #i ...

  7. c++控制台 对齐 域宽

    包含在头文件  iomanip 设置对齐: cout<<setiosflags(ios::xxx); xxx内填参数 left左对齐 right右对齐 setiosflags还有其他选项, ...

  8. <c和指针>学习笔记4之字符串

    1 字符串基础 NUL字节是字符串的终止符,但它本身并不是字符串的一部分,所以字符串的长度并不包括NUL字节. (1)字符串长度 size_t strlen(char const * string)注 ...

  9. 微信小程序开发之带搜索记录的搜索框

    实现功能:点击搜索框,有搜索记录时以下拉菜单显示,点击下拉子菜单,将数据赋值到搜索框,点击搜索图标搜索,支持清空历史记录,可手动输入和清空查询关键字, UI: wxml: <!--查询历史记录数 ...

  10. 二十五种网页加速方法和seo优化技巧

    一.使用良好的结构 可扩展 HTML (XHTML) 具有许多优势,但是其缺点也很明显.XHTML 可能使您的页面更加符合标准,但是它大量使用标记(强制性的 <start> 和 <e ...