![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BZOJ
Nick_hhlab
一望无际的海,一望无际的星海......
展开
-
[SCOI2005]超级格雷码
提交:bzoj1081 题目↑↑这道题并不是很难,题意易懂,用搜索,是可以知道的但是,十分麻烦……然而一位神同学yzh通过打表来发现了这道题的规律……十分神奇耶……假设是n=2 B=3: 答案是:00 10 20 21 11 01 02 12 22 分下组: 00 10 20 21 11 01 02 12 22 也就是说,当第i数是偶数时,第i-1个数是由大到小排列,当第i数是原创 2016-08-29 14:52:55 · 388 阅读 · 0 评论 -
[SCOI2005]繁忙的都市
提交:bzoj1083 题目↑↑这道题第一眼就觉得是树,后来发现不对所以这道题要用并查集将能够直接或间接地连在一起的点归在一个集合里,一旦发现两个点不在一个集合里就加一条边。。代码↓↓#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;struct node{原创 2016-08-26 14:43:35 · 486 阅读 · 0 评论 -
[SCOI2005]王室联邦
提交:bzoj1086 题目↑↑这道题看的第一眼,我是一脸懵@_@然而看了XGC大神的思路,豁然开朗既然题目要求该区域所有的点到根的路径上的点都属于该区域。很明显,就是一棵树,所以题意其实就是把一棵多叉树分成若干个区域,然而又不用输出最小方案,所以弱爆了。这个玩意我也不知道它算什么,应该属于dfs的范畴吧。 一种简单粗暴的想法就是dfs,每找到B个就分一块,但是这样连通性不能保证(一颗子树的下转载 2016-08-26 14:34:08 · 554 阅读 · 0 评论 -
[SCOI2005]扫雷Mine
提交:bzoj1088 题目↑↑这道题很水。。。其实只要确定第一行第一个有多少个地雷,那么其他位置的地雷数就能确定了所以直接枚举第一个位置的地雷数,就能得出答案了代码↓↓#include<cstdio>#include<cstring>using namespace std;int a[11000];int n,ans;int b[11000];int main(){ scan原创 2016-08-26 08:32:40 · 443 阅读 · 0 评论 -
[SCOI2005]互不侵犯King
提交:bzoj1087 题目↑↑解法:状压DP。。。状压好难QAQ,这道题也好难QAQ。。。这道题就是用二进制来保存状态,从而进行DP。。。代码↓↓#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>#include<sstream>using namespace std;typedef long l原创 2016-08-25 15:32:23 · 331 阅读 · 0 评论 -
[SCOI2005]骑士精神
提交:bzoj1085 题目↑↑这道题的做法就是搜索,但是一般的搜索只能对三到四个点= =所以我们要用特殊的方法 ^_^A*算法!!!!!刚开始,我还不知道这是啥。。。经过大神的讲解,终于明白。。A*算法的好处就是:预判当前递归到结束得到的值,从而判断是否进入递归,部分判断 PS:用了之后,很快很快很快。。。代码↓↓#include<cstdio>#include<iostream>#inc原创 2016-08-25 15:19:31 · 442 阅读 · 0 评论 -
[SCOI2007]组队
提交:bzoj1071 题目↑↑这道题题意十分简明,很容易明白但是,我经过百般尝试,还是错了QAQ经过xgc的深刻教育,终于理解了这道题做法:用单调队列来判断是否能进入队列和是否需要退出队列代码↓↓(xgc)#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL转载 2016-09-02 13:26:53 · 324 阅读 · 0 评论 -
[HAOI2008]硬币购物
这是开博客的第一道题,可喜可贺>~<提交网站:bzoj1042题目我就不讲了,在 ↑↑ 链接中可浏览 >_<这道题的做法:背包+容斥定理f[i]表示不限制个数,放满值为i的方案数因为硬币的值有重复,所以用到容斥定理得到面值S的超过限制的方案数 – 第1种硬币超过限制的方案数 – 第2种硬币超过限制的方案数 – 第3种硬币超过限制的方案数 – 第4种硬币超过限制的方案数 + 第1,2种硬币同时超过限制原创 2016-08-23 15:56:30 · 420 阅读 · 0 评论 -
[HAOI2007]反素数ant
提交:bzoj1053 题目↑↑ //参考hzwer大神= = //友情链接:hzwer本题似乎要先知道许多结论,不要问我证明。。一个数约数个数=所有素因子的次数+1的乘积 举个例子就是48 = 2 ^ 4 * 3 ^ 1,所以它有(4 + 1) * (1 + 1) = 10个约数然后可以通过计算得一个2000000000以内的数字不会有超过12个素因子并且小素因子多一定比大素因子多要优预处原创 2016-09-13 13:00:24 · 429 阅读 · 1 评论 -
[SCOI2005]栅栏
提交:bzoj1082 题目↑↑题意简明易懂做法就是:二分答案,然后用搜索来判断这个答案是否能够达到,比较简单PS:要剪枝!!先快排两个数组,如果最小需求比老板拥有的一些木板还要大的话,证明这些木板没用,如果老板的最大木板比一些需求的木板小,证明这些需求的木板无法符合条件。。代码↓↓#include<cstdio>#include<cmath>#include<cstring>#includ原创 2016-09-01 13:45:05 · 515 阅读 · 0 评论 -
[JSOI2007]建筑抢修
提交:bzoj1029 题目↑↑这道题就是贪心操作:先用操作时间从小到大将数组排序一遍,然后用multiset来记录进入队列的数(注意不能用set,因为set会去重,也要注意在删除一个元素时,不能将所有元素都删除,要在删了一个之后加回多删的数)代码↓↓#include<cstdio>#include<cstring>#include<algorithm>#include<set>using原创 2016-09-11 16:03:05 · 658 阅读 · 0 评论 -
[JLOI2011]飞行路线
提交:bzoj2763 题目↑↑这道题是由tyb师兄讲的一道spfa只要记录f[i][j]表示到第i个点用j次机会的最短路径即可if(f[x][c]+a[k].d<f[y][c])//这种情况直接进行最短路{ f[y][c]=f[x][c]+a[k].d; if(v[y][c]==false) { v[y][c]=true; list[ta原创 2016-09-09 13:52:51 · 493 阅读 · 0 评论 -
[SHOI2008]汉诺塔
提交:bzoj1019 题目↑↑这道题是更高级的汉诺塔(也不是很高。。),这道题加了一个优先级排列,所以情况多了一种。 正常汉诺塔公式:f[i]=f[i-1]*2+1; 这道题要加一维来表示放的盘数 f[i][j] 表示在第i个塔中取j个的最小步数 p[i][j]表示在第i个塔中取j个盘,这些盘放的位置#include<cstdio>#include<cstring>#include<原创 2016-09-08 13:59:47 · 523 阅读 · 0 评论