上一页 1 2 3 4 5 6 ··· 30 下一页
摘要: k短路问题是一个比较经典的问题,求从a到b的第k短的路径。 https://www.luogu.com.cn/problem/P4467 以这题为例子: 解决k短路的算法之一:A星算法,这个算法复杂度为O(nklogn)。 A星算法设立了一个评估函数g(x) = f(x) + h(x)。 f(x) 阅读全文
posted @ 2022-02-24 16:09 levill 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 最短路很重要的一部分就是堆的实现,java也有自带的优先队列。 通过实现一个comparator的接口,来确定排序的优先级。 这里很重要的一个函数就是compare函数:和c++不同它返回的不是大小的判断,而是差值。 public int compare(int x, int y) { return 阅读全文
posted @ 2022-02-24 08:57 levill 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 输入输入问题: 今天遇到一个题一直TLE,后面测试了很久发现是因为println导致的超时。 Java普通的输入输出比较慢,容易超时。 这里有一种更快的输入输出方法,利用buffer流。 StreamTokenizer cin = new StreamTokenizer(new BufferedRe 阅读全文
posted @ 2022-02-21 20:08 levill 阅读(32) 评论(0) 推荐(0) 编辑
摘要: A: #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int,int> pii; const int N = 1e6 + 5; const int M = 1e7 + 5; const L 阅读全文
posted @ 2022-02-20 21:41 levill 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 首先可以状压所有方案,但是这样复杂度O(2 ^ u * n)。 考虑到连续的xor操作其实可以整合到一起,那么可以再次优化。 然后我们考虑dfs,理论上来说dfs每层都有两种操作应该是2 ^ u * n。 但是因为连续的异或操作是没有意义的,所有我们就可以明白了除非是进行1的xor操作,否则进行和不 阅读全文
posted @ 2022-02-18 09:26 levill 阅读(21) 评论(0) 推荐(0) 编辑
摘要: 首先题意不能搞错,就是如果盒子为空也是不合法的,所以就是说 我们给每个不是1的球绑定一个1,然后剩下的保证每个盒子里至少1个球。 绑定的这些可以随便排列可以存在盒子为空的情况数即可。 #include<bits/stdc++.h> using namespace std; typedef long 阅读全文
posted @ 2022-02-01 10:45 levill 阅读(55) 评论(0) 推荐(0) 编辑
摘要: C:首先我们可以知道重量为1的方案数就是重量为2的物品的数量,因为只有2 / 2 = 1可以影响它。 那么如果我们从小到大迭代的话,对于当前位置i,只能赋值2 * i才能影响当前位置,那么如果当前方案数的差为d,那么就还需要放d个2 * i。 这里要注意的是差值可能为负数。 #include<bit 阅读全文
posted @ 2022-01-30 08:42 levill 阅读(42) 评论(0) 推荐(0) 编辑
摘要: A:假设一个三位数为x1y1z1,有cal(x1y1z1) + cal(x2y2z2) = cal((x1 + x2)(y1 + y2) (z1 + z2)) 证明: 我们不进位把每一位看成一个多进制数(实际上和十进制是一样的). 可以得出cal(x1y1z1) = cal(x1 + y1 + z1 阅读全文
posted @ 2022-01-26 10:07 levill 阅读(44) 评论(0) 推荐(0) 编辑
摘要: https://www.acwing.com/problem/content/description/2070/: 首先我们考虑两个数拼接:a[i] + a[j] 实际上就是$a[i] * 10^{length(a[j])} + a[j]$ 即有:$a[i] * 10^{length(a[j])} 阅读全文
posted @ 2022-01-24 09:16 levill 阅读(50) 评论(0) 推荐(0) 编辑
摘要: C - XOR to All: 假设进行的操作是x,y。经过第一次操作y = y ^ x。 然后到了第二次操作就变成了(y ^ x),因为所有的数都已经^ x。那么就变成了^y。 所有这两次操作就相当于在原来的序列上^y。 所以可以发现对于多次操作之后,异或上的数永远都是最后一个,那么显然只要异或一 阅读全文
posted @ 2022-01-23 07:55 levill 阅读(49) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 30 下一页