08 2021 档案
摘要:题目要求每一个长度为偶数的正方形里,1的个数都是奇数。 于是我们发现,一旦n >= 4同时 m >= 4那么一定是-1,奇+奇+奇+奇=偶 之后就剩下了三种可能性,n=1,n=2,n=3 于是考虑状压dp。 #include <bits/stdc++.h> using namespace std;
阅读全文
摘要:差点AKdiv3www 首先这道题肯定不能暴力了啦。之后我们发现这道题其实跟数位dp非常的相像。那么数位dp的时候,一旦某一位变大了,那么后面的数字其实是随便选的,因为不管怎么选,这个数字肯定是大于之前的数的。 比如122245与123***肯定不管怎么取*的数字肯定是比122245大的。 之后这道
阅读全文
摘要:这场区分度比较低完全就是手速场嘛...趁机上了波分。 感觉这场最有思维量的就是这道D2了(D1直接n2并查集水过去了) 从D1我们就有一种感觉,题目给我们的其实是两个森林,我们每次肯定是将森林中的两棵树连接在一起。 那么我们不妨设置1号节点所在的树为主树,让森林中其他树都尽可能连接到主树上去。 所以
阅读全文
摘要:A.好哥哥 题目的意思就是:从第一层开始往后起跳,每次可以跳到该层层数减一或者加一的层数,询问跳m次后最多可以经过多少对不重复的括号。 首先我们发现这个其实是一个树形结构。 那么我们很容易就能得到一个想法,如果钱不够的话,那一定是跳到树的最长链上。 但是如果钱够呢?那么我们就需要考虑来回走的情况,我
阅读全文
摘要:给定n个数字,m个操作 操作1是往数组最后添加一个数字x 操作2是给出[L, R],与数字x,输出在[L, R]中选一个数字p使得,a[p]^a[p+1]^...^a[n]^x的值最大 首先,考虑题目要求的是【1,R】的话,那么其实这道题无非就是可持久化trie + 前缀和异或而已。 但是问题就是有
阅读全文
摘要:首先我们看到题目其实挺懵的。 对于(a1 + a2) ^ (a1 + a3) ^ ... ^ (an-1 + an),感觉除了暴力一点办法都没有。 其实我们可以看到。所有的括号外面其实都是异或符号。那么我们最后求的是一个异或的值。 那么[0 - 1e7]异或的值必然不会超过2e7。于是我们可以考虑按
阅读全文
摘要:这道题可以直接枚举第一个格子状态,之后check即可。因为方案最多只有两种 当然也可以用dp 以下是dp做法: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 2e6 + 10;
阅读全文
摘要:最大子区间和:dp[i] = max(a[i], dp[i-1] + a[i]) (dp[i]的含义是必须选择a[i]的最大子区间
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/CF1304E 这道题稍微想了一下就有思路了。 让我们先来简化一下问题,如果没有加边,仅仅是询问的话,那么该怎么做呢。 很明显在两点树上的路径只有一条,那么我们很容易求出u和v的距离dis(u, v)又因为可以来回走,所以就
阅读全文
摘要:题目链接:https://codeforces.com/problemset/problem/1292/B 洛谷链接:https://www.luogu.com.cn/problem/CF1292B 主要还是没能多想想吧。 还是看了题解。其实并没有那么难。突破口是在上面。 我们可以发现假设bx =
阅读全文