-
搜索
华容道70设两个变量,记在一个结构体里在进行爆搜,就是一个普通的bfs,只会简单的爆搜,正解是,三个bfs,先处理出白板到起始的最短距离,在处理出移动的代价,在跑一边最短路;12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 …
-
day4
alien飞船降落问题矩阵前缀和+枚举求出前缀和,暴力枚举每一个子矩阵的和,是0就可以降落注意有正方形飞船,长度不等于点12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include<cstdio>#include<iostream> …
-
部落冲突
这题弄k各部落就是把它合并成k个集合所以按最小的边合并的解一定是最优的这就借用了k算法的思想12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include<cstdio>#include<iostream>#include<c …
-
cicada
正解还不会用暴力搜索弄到了90.。。bfs与dfs都能过90思路:先弄一个f数组记得是这个点的最短路,就是破败指针在爆搜剪枝bfs12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758#include<cstdio>#inclu …
-
trigger
裸地kmp123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define for(i …
-
k'th number
有n个数,共有2^n个子集,一个子集的值看做其所有数的和。求这2^n个子集中第K大的子集。n<=35。首先我们可以通过meet in the middle的做法,将其分成两部分。二分答案后用two point统计满足条件的方案总数。与k进行比较即可。123456789101112131415161718192021222324252627282930313233343536373839404 …
-
twopoint
利用两个指针,其中一个从前往后扫a数组,另一个从后往前扫b数组,用可能成为最大值的数来更新答案。优化为o(n)123456789101112131415161718192021222324252627282930313233343536#include<cstdio>#include<iostream>using namespace std;#define for(i,n) …
-
lowbit
这个题先把它搞成二进制可以发现异或出来在lowbit找的是最后一位为一的数的价值,而异或出来只有两种情况,1或0,所以一开始把所有书分成两份,同分之间没有价值,只有异份之间有价值,且价值为2^t,就是最后一位不同的价值,找出同分异分之间有多少组合,就是多少个2^t一步一步分,最后直到不能分了像这样1 2 3 4 5 001010011100101 001 010011 100101 322 …
-
啦啦啦啦啦
stick木棍(stick) 思路:先把奇数个的削掉,因为奇数个的不可能组成长方形,削掉有可能然后削完的用贪心,最大的组成正方形一定最大。123456789101112131415161718192021222324252627#include<cstdio>#include<iostream>#include<algorithm>using namespace …
-
送分题
用暴力,枚举一个修改的,算最大子段和,o(n)2的复杂度12345678910111213141516171819202122232425262728293031#include<cstdio>#include<iostream>using namespace std;int a[99999];int s;int n,p; int main(){ freopen( …