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. 2017SN多校D1T2 note:dp

    题意: 给你一个长度为n的字符串s,并且告诉你有m对字母不能相邻,问你最少在s中取出多少个字符能够使这个字符串合法. 题解: 表示状态: dp[i] = max num of letters 考虑到第 ...

  2. CentOS 7编译安装Tengine+PHP+MariaDB全程笔记

    安装环境:CentOS7 3.10.0-693.5.2.el7.x86_64 准备源码包: pcre-8.41.tar.gz openssl-1.0.1h.tar.gz zlib-1.2.11.tar ...

  3. 疑难杂症:“代理 XP”组件已作为此服务器安全配置的一部分被关闭。系统管理员可以使用 sp_configure 来启用“代理 XP”。

    “代理 XP”组件已作为此服务器安全配置的一部分被关闭.系统管理员可以使用 sp_configure 来启用“代理 XP”.有关启用“代理 XP”的详细信息,请参阅 SQL Server 联机丛书中的 ...

  4. physoft.net网站暂停 www.physoft.cn 正式开通 (菲烁科技, physoft)

    physoft.net原本计划以开源代码为主体,由于各种原因代码未能开源.基于这些代码,physoft成立了 菲烁(重庆)科技有限公司 ( www.physoft.cn) ,专注于工业级双目视觉测量, ...

  5. leetcode 229. Majority Element II(多数投票算法)

    就是简单的应用多数投票算法(Boyer–Moore majority vote algorithm),参见这道题的题解. class Solution { public: vector<int& ...

  6. linux命令学习笔记(44):top命令

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管 理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷 ...

  7. highcharts 图例全选按钮方法

    $('#uncheckAll').click(function(){ var chart = $('#container').highcharts(); var series = chart.seri ...

  8. PHP调用Python快速发送高并发邮件

    1 简介 在PHP中发送邮件,通常都是封装一个php的smtp邮件类来发送邮件.但是PHP底层的socket编程相对于Python来说效率是非常低的.CleverCode同时写过用python写的爬虫 ...

  9. 数据结构&算法 索引

    最近在看牛客网的算法课,准备开个坑,根据自己的理解,把课程讲到的内容列一个大纲,明年找工作的时候用. 再加上看算法第四版的内容,整理一套明年找工作能够直接拿出来用的代码. 此篇博文作为索引.

  10. eclipse修改workspace

    Eclipse是一款很强的Java IDE,我们在开始的时候,往往设定了默认的workspace,当用久在之后,我们可能要去更改一下workspace的位置,但是在启动的时候已经不会显示更改了.下面有 ...