FJUT2019暑假周赛一题解】的更多相关文章

A.排队问题*-* 题意就是有长度为L的序列,每位的取值可以是'f'或者'm',问不包含'fff'和'fmf'的个数. 打表找规律 不难找出递推公式为F[n] = F[n-1] + F[n-3] + F[n-4]. 然后直接遍历就可以了...突然发现L范围很小,我写了个矩阵快速幂... 多组数据且模数不固定,矩阵快速幂即可 #include <bits/stdc++.h> using namespace std; typedef long long ll; int n,mod; struct…
A本来想改到q<1e5,让你们预处理的,然后想了哈作为个逆元模板题吧= =,做不出来自行反思. B贴个题面 因为只有一次机会,那么也就是两点分布期望E = p了,先说说大家的做法,先求出每个n的逆元保存,然后因为最大只会取到1e6,所以对0-1e6跑一遍每个数的倍数个数.复杂度O(N1/3),代码如下 #include <iostream> using namespace std; typedef long long ll; ; ll sum[maxn+]; ll sqr3(ll n){…
A 服务器维护 题目大意: 给出时间段[S,E],这段时间需要人维护服务器,给出n个小时间段[ai,bi],代表每个人会维护的时间段,每个人维护这段时间有一个花费,现在问题就是维护服务器[S,E]这段时间,需要最小花费是多少,就是用n个小时间段[ai,bi],覆盖满[S,E]这段时间并且所用的花费最少. 解题思路: 解法一:最短路径,这是我一开始想到的用的算法,S到E需要使用最小花费,并且还给出每一小段的路程和花费,感觉就像最短路径裸题吖,但是这题问题在于如何建图,如果你使用常规方法建图是不可行…
本周的周赛题目质量不是很高,因此只给出最后两题题解(懒). 1552 两球之间的磁力 #二分答案 题目链接 题意 有n个空篮子,第i个篮子位置为position[i],现希望将m个球放到这些空篮子,使得任意两球间最小磁力最大.(其中,磁力简化为两点位置之差) 分析 该题是二分答案的裸题,详细见代码 class Solution { public: bool Judge(vector<int>& a, int x, int m){ int cnt = 1,lastpos = a[0];…
A.分组 首先,认识的人不超过3个,因此不存在无解的方案 考虑直接构造,先把所有点设为1,顺序扫一遍把有问题的点加入队列 每次取队头,将其颜色取反,再更新有问题的点 复杂度:考虑到每个点不会操作2次,所以是\(O(N+M)\) 到目前为止.AC的代码几乎都是因为数据水才AC的错误代码 #include<bits/stdc++.h> #define REP(i,a,b) for(int i=(a);i<=(b);++i) #define DEC(i,a,b) for(int i=(a);i…
目录 Problem A Problem B Problem C Problem D Problem E Problem F Problem A 思路 这是一道带权并查集问题 因为只有三种种类,我们分别用0,1,2来表示,即0-->1,1-->2,2-->0. 我们需要知道x和y的关系,即需知道x和祖先xx的关系,y和祖先yy的关系,即可得x和y的关系. ①当x的祖先和y的祖先不同时,可知x和y的关系在前面并没有体现,所以此话一定是真的 ②当x的祖先和y的祖先相同时,通过x,y和祖先的关…
1566. 重复至少 K 次且长度为 M 的模式 #模拟 题目链接 题意 给定正整数数组 arr,请你找出一个长度为 m 且在数组中至少重复 k 次的模式. 模式 是由一个或多个值组成的子数组(连续的子序列),连续 重复多次但 不重叠 . 模式由其长度和重复次数定义.如果数组中存在至少重复 k 次且长度为 m 的模式,则返回 true ,否则返回 false . 分析 题目初看有点麻烦,但实际上隔着特定周期(即重复长度)去检查相应字符是否相等,模拟一下题意即可. class Solution {…
1561. 你可以获得的最大硬币数目 #贪心 题目链接 题意 有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币: 每一轮中,你将会选出 任意 3 堆硬币(不一定连续). Alice 将会取走硬币数量最多的那一堆. 你将会取走硬币数量第二多的那一堆. Bob 将会取走最后一堆. 重复这个过程,直到没有更多硬币. 给你一个整数数组piles ,piles[i] 是第 i 堆中硬币的数目.现要你求出可获得的最大硬币数目. 分析 毫无疑问,需要先将硬币堆降序排序.既然每一轮我只能拿当前三堆…
5480. 可以到达所有点的最少点数目 #贪心 题目链接 题意 给定有向无环图,编号从0到n-1,一个边集数组edges(表示从某个顶点到另一顶点的有向边),现要找到最小的顶点集合,使得从这些点出发,能够到达图中所有顶点. 样例 输出为[0, 2, 3].从这三个顶点出发即能访问所有顶点. 分析 实际上,只需要将所有入度为0的顶点加入解集即可.因为:1.入度为0的顶点若不加入解集,则除了它以外,没有其他顶点能够沿途访问到它.2.入度不为0的顶点一定能被某个顶点沿途访问到,为了保证解集尽可能小,那…
1540 K次操作转变字符串 #计数 题目链接 题意 给定两字符串\(s\)和\(t\),要求你在\(k\)次操作以内将字符串\(s\)转变为\(t\),其中第\(i\)次操作时,可选择如下操作: 选择字符串\(s\)中满足 \(1 \leq j \leq s.length\) 且之前未被选过的任意下标 \(j\)(下标从1开始),并将此位置的字符恰好切换 \(i\) 次.切换 1 次字符即用字母表中该字母的下一个字母替换它(字母表环状接起来,所以$'z'切换后会变成 \('a'\)). 请记住…