近两天

来源:互联网 发布:清军入关 知乎 编辑:程序博客网 时间:2024/04/25 12:47
最近两天做了两套联赛题,但做的都不好。天啊,智商都去哪儿了。。。继续找回状态。


8.21

T1:给出一个N*M的矩阵,定义一个子矩阵的权值为这个子矩阵中最小的数。求权值为i的矩阵有多少个

我在考试的时候觉得这很像之前做过的一道直接统计答案的题,于是就按那题的思想去做了,可惜算漏了一个地方。正解是枚举子矩联阵的上下边界,然后用一个单调栈处理每个最小值的左右边界即可,复杂度严格O(N3)


T2:国王要对N件事发表意见,有M个大臣,每个大臣有两个建议,如果国王的决议和某个大臣的两个建议都不同,这个大臣就会离开。问国王该如何决议使得没有一个大臣离开。

考试的时候往网络流的方向想过但是没有想出来,最后拿了暴力的50分。正解:把每件事拆成等赞成和反对两个点,如果违反某大臣的一个建议,那么一定要遵守另一条建议。把违反建议代表的点和遵守的点连一条边,每次从一个决策点沿边走,如果不出现矛盾(即同时赞成和反对同一事件),那么这个决策是合法的。每个决策枚举一遍即可。


T3:链剖的裸题,链剖维护value[i]-dep[i]的最大值以及最大值的个数即可。


8.22

T1:给定一个串,问有多少子串满足子串中的A,B,C个数相同。

这题我只拿了暴力的70分。。正解还是与前缀和有关,用三个前缀和,记录区间A和B,B和C,C和A的数量关系,然后不同位置关系相同的两个位置之间即满足条件。把前缀和排序方便计算。


T2:给定N个点,M条边的无向图。问有多少条路径使得路径上的点权乘起来是完全平方数。

解法:状压DP,小于45内的质数有14个,计0为此质因子有偶数个,1为有奇数个,会有2^14个状态。 设f[i][j]表示从i开始,状态为j的路径条数。然后直接转移即可。


T3:有很多条边,每条边有一个边权。有K个点权,求一个最小值M,使得权小于等于M的边不能走后,K个点对不能连通。

这题二分的思想很明显,60分应该是比较容易拿的。可惜在考时没有时间去想,正解是二分答案,然后把大于权的边加入图中,用并查集维护连通性即可。



教训:注意比赛策略。最重要的是保持正常的心态,发挥自己应有的水平。

加油!把智商找回来!

0 0