- 博客(21)
- 收藏
- 关注
原创 [HAOI2007]反素数ant
提交:bzoj1053 题目↑↑ //参考hzwer大神= = //友情链接:hzwer本题似乎要先知道许多结论,不要问我证明。。一个数约数个数=所有素因子的次数+1的乘积 举个例子就是48 = 2 ^ 4 * 3 ^ 1,所以它有(4 + 1) * (1 + 1) = 10个约数然后可以通过计算得一个2000000000以内的数字不会有超过12个素因子并且小素因子多一定比大素因子多要优预处
2016-09-13 13:00:24 440 1
原创 最长严格上升子序列
提交:codevs3955 题目↑↑这道题是最长上升子序列的加强版,这道题的数据比一般的最长上升子序列要大,所以一般的算法O(n^2)会超时所以这道题用一种贪心算法(师兄讲评)代码↓↓#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;int b[1100000]
2016-09-12 13:30:02 492
原创 [JSOI2007]建筑抢修
提交:bzoj1029 题目↑↑这道题就是贪心操作:先用操作时间从小到大将数组排序一遍,然后用multiset来记录进入队列的数(注意不能用set,因为set会去重,也要注意在删除一个元素时,不能将所有元素都删除,要在删了一个之后加回多删的数)代码↓↓#include<cstdio>#include<cstring>#include<algorithm>#include<set>using
2016-09-11 16:03:05 669
原创 [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 513
原创 [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 538
原创 困难的A+B
提交:尚未知道。。= = Problem A困难的A+B【aplusb】 FJ在教奶牛做加法运算!奶牛很聪明,她们很快就厌倦了,于是希望你能帮她们编一个程序应付FJ。FJ每次会给奶牛一张纸,上面分两行写着两个加数,奶牛只要把结果写在另一张纸上就可以了。输入格式: Line 1: 加数A Line 2: 加数B 请注意! 由于奶牛学会了小数运算, 并在FJ前炫耀, 因此FJ会想尽办法刁难奶牛
2016-09-06 13:47:35 457
转载 [SCOI2007]组队
提交:bzoj1071 题目↑↑这道题题意十分简明,很容易明白但是,我经过百般尝试,还是错了QAQ经过xgc的深刻教育,终于理解了这道题做法:用单调队列来判断是否能进入队列和是否需要退出队列代码↓↓(xgc)#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long LL
2016-09-02 13:26:53 333
原创 [SCOI2005]栅栏
提交:bzoj1082 题目↑↑题意简明易懂做法就是:二分答案,然后用搜索来判断这个答案是否能够达到,比较简单PS:要剪枝!!先快排两个数组,如果最小需求比老板拥有的一些木板还要大的话,证明这些木板没用,如果老板的最大木板比一些需求的木板小,证明这些需求的木板无法符合条件。。代码↓↓#include<cstdio>#include<cmath>#include<cstring>#includ
2016-09-01 13:45:05 528
原创 [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 401
原创 [SCOI2005]繁忙的都市
提交:bzoj1083 题目↑↑这道题第一眼就觉得是树,后来发现不对所以这道题要用并查集将能够直接或间接地连在一起的点归在一个集合里,一旦发现两个点不在一个集合里就加一条边。。代码↓↓#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;struct node{
2016-08-26 14:43:35 503
转载 [SCOI2005]王室联邦
提交:bzoj1086 题目↑↑这道题看的第一眼,我是一脸懵@_@然而看了XGC大神的思路,豁然开朗既然题目要求该区域所有的点到根的路径上的点都属于该区域。很明显,就是一棵树,所以题意其实就是把一棵多叉树分成若干个区域,然而又不用输出最小方案,所以弱爆了。这个玩意我也不知道它算什么,应该属于dfs的范畴吧。 一种简单粗暴的想法就是dfs,每找到B个就分一块,但是这样连通性不能保证(一颗子树的下
2016-08-26 14:34:08 568
原创 [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 454
原创 [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 346
原创 [SCOI2005]骑士精神
提交:bzoj1085 题目↑↑这道题的做法就是搜索,但是一般的搜索只能对三到四个点= =所以我们要用特殊的方法 ^_^A*算法!!!!!刚开始,我还不知道这是啥。。。经过大神的讲解,终于明白。。A*算法的好处就是:预判当前递归到结束得到的值,从而判断是否进入递归,部分判断 PS:用了之后,很快很快很快。。。代码↓↓#include<cstdio>#include<iostream>#inc
2016-08-25 15:19:31 456
原创 SET使用
SET函数的基本用法 by hhl使用set的好处 1. 当增加元素后,集合会自动删重并从小到大排列(时间比快排还快) 2. 相当于一棵伸展树(能快速求出前驱后继) 头文件#include<set>定义set函数set <数据类型(int,long long,double,bool..)> 名称(A,B,C,D...)set <数据类型(int,long long,double,bool
2016-08-23 16:42:37 576
原创 [HAOI2008]硬币购物
这是开博客的第一道题,可喜可贺>~<提交网站:bzoj1042题目我就不讲了,在 ↑↑ 链接中可浏览 >_<这道题的做法:背包+容斥定理f[i]表示不限制个数,放满值为i的方案数因为硬币的值有重复,所以用到容斥定理得到面值S的超过限制的方案数 – 第1种硬币超过限制的方案数 – 第2种硬币超过限制的方案数 – 第3种硬币超过限制的方案数 – 第4种硬币超过限制的方案数 + 第1,2种硬币同时超过限制
2016-08-23 15:56:30 432
转载 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-08-23 14:16:37 235
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人