众所周知,人类的本质是鸽子。10018.数的划分水题。
int ans,n,k;
void dfs(int num,int sum,int now)
{
if (now==k)
{
if (sum==n) ans++;
return;
}
int mx=n-sum-k+now+1;
for (int i=num;i&l...
读题读了十多分钟才读懂,辣鸡ybt翻译。需要注意的关于题意的点:移动和点击都要算作次数最后还要打印*换行符每个方向直接移动到最近的不同的点,如果没有就不移动做法就是基础的bfs,不过需要预处理一下每个点向四个方向移动的下一个点,直接暴力做即可。剪枝是如果当前在打印文本的位置 $>$ 之前搜索过的同一个点位置就退出。#include<bits/stdc++.h>
#defin...
题解这题数据范围极小,所以直接考虑暴搜。首先预处理一下两个块是否要满足先后关系,如果有就连一条边。判断的标准是纵坐标相等,而且横坐标上有相交的区域。还要对每个块按照纵坐标为第一关键字,横坐标为第二关键字排序,这样可以保证对于上下颜色相等时,可以先涂完上面再继续涂下面而不会漏解。然后进行dfs,每次搜索枚举要涂的颜色,然后把能够涂色的块都涂了。需要注意的是当前颜色和上次涂的颜色不能相等,否则没...
做完了ybt上的那道埃及分数,以为这道题只需要改一下就能过,结果断断续续折腾了一天多,我还是太菜了。这道题与ybt那道主要区别就是多组数据+给定不能用的数。多组数据容易搞定,但处理不能用的数就把我坑惨了。我最开始是直接拿bool数组来记录,然后次次本机AC,提交RE,调试发现是越界了。虽然答案不会很大,但由于是从小到大枚举,最开始最后一个就会很大而越界。然后我就用了个数组,排序后用来判断,然...
我们假设在 $AB$ 段走到 $M$ 点,然后走到 $CD$ 段的 $N$ 点,那么可以得到时间为$$T= \dfrac {AM}{P} + \dfrac {MN}{R} + \dfrac {ND}{Q}$$很显然我们的目标就是找到合适的 $M$ 和 $N$ 让时间最小。对于 $M$ ,如果我们知道 $k= \dfrac {AM}{AB}$ ,那么就可以确定 $M$ 的坐标为$$M(A_x+...
10011.愤怒的牛二分答案,然后贪心进行验证,即只要达到了枚举的距离能放就放,如果最后能放下就验证成功。int n,m,ans,s[100005];
inline bool check(int x)
{
int now=1;
for (int i=1;i<m;i++)
{
int j=now+1;
while (s[now]+...
洛谷博客: https://www.luogu.org/blog/llf/solution-uva1205贪心策略和其他题解一样,选取最大的点和它的父节点合并。只是我看其它题解每次找最大都是 $O(n)$ 把全部扫一遍,就想到用优先队列来优化。不过问题也是显然的,每次合并我们都会删除当前点并改变父节点的值,但之前父节点肯定也已经放进了队列,而优先队列显然不能满足直接修改的条件。但仔细一想,每...
徐妈让我们做一本通的题,说是巩固基础。但说实话这里面的题又烂又水,就连第一章11道题就有双倍经验我也是无语的。这一章完成时间:两天(其实就是一个晚自习1h+两个中午40min),而且还包括颓废时间10000.活动安排贪心区间覆盖经典模型。按照右端点排序,然后依次判断能不能放即可。struct Edge{
int s,f;
} edge[1005];
int n,ans;
inlin...
首先预处理一下两个单词 $s[i],s[j]$ 是否安全并记录在 $can[i][j]$ 中,用 $f[i]$ 代表包含第 $i$ 个单词的安全组有多少个。枚举每一个小于当前单词的单词,如果他们俩安全,那么当前单词和 枚举单词所在的安全组成员 在一起也一定是安全的,所以加上答案即可。$$f[j]= \begin{cases} f[j] \\ f[j]+f[i] , can[i][j] \&a...
关于这次比赛这次比赛本来想全用原创题的,但是@Terrasse大佬的题还没有验题和数据(现在有了,下次考),@Ofnoname大佬的题考察范围很多人应该都没学,我的另一道题太过码农和毒瘤,所以在徐妈的建议下就找了洛谷2279 消防局的设立作为T3。背景使用的是以正在连载的新番辉夜大小姐想让我告白~天才们的恋爱头脑战~中人气角色藤原千花为主人公的故事。墙裂推荐大家去看这部番!书记太可爱了aws...
今天做了P1738 洛谷的文件夹。这道题本身挺水,其实map就行了,但我菜所以还用了pbds里的hash_table,这篇文章主要是记录一下hash_table的用法。hash_table食用方法先引入头文件:#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>然后是pb...
一开始我还用拓扑删链然后瞎搞,后来发现环可能是有交叉的,这就意味着不可能直接通过搜索一个个的环来得到答案。所以我最开始的做法只有10分。然后看了题解,发现数据有点水,直接 $O(n^{2})$ 搜索搞就完事。struct Edge{
int next,to,w;
} edge[105];
int head[55],cnt,n,m,t,a,b,c;
bool vis[55],ans;
...
日推水题系列。对于每一个子树,每个叶节点对答案的贡献就是 根到所有叶节点距离的最大值 $dismax$ 减去 根到这个叶节点的距离 $dis[x]$。直接dfs即可。注意要开long long,我又被坑了一次。struct Edge{
ll next,to,w;
} edge[1000005];
ll head[500005],cnt,n,m,s,a,b,c,dis[500005],...
又是一道我看了题解才知道怎么做的题,我还是太弱了。题意每个骑士都有一个自己痛恨的骑士(不会恨自己),这俩不能在一起,每个骑士有个能力值,问怎么组合使总的能力值最大。其中骑士的人数 $N\le 10^{6}$ 。题解分(看)析(题)题(解)目可以发现,如果将每个关系之间连一个双向边,每个连通块都有且仅有一个环,所以整个图就是一个基环森林,然后拆一条边分成两棵树各跑一遍树形dp即可。拆开看以后也...
大半年打一次cf结果因为评测机出锅unrated了,非常不爽。这次比赛是和@Duanyll大佬合作打的,但因为我很弱出了很多锅坑了他,不过幸好是unrated。好歹还是A了四道题的,还是总结一下吧。A. Lunar New Year and Cross Counting题意给你一个矩阵,只要满足 $M(i,j)=M(i-1,j-1)=M(i-1,j+1)=M(i+1,j-1)=M(i+1,j...