笔记
文章平均质量分 62
Beating_spark
Even a beating_spark can light a fire of wisdom!
展开
-
dfs回溯的注意事项
回溯可能是多个量回溯 别忘了 比如void dfs(int n,int temp){ if(n==10) {if(temp<min) min=temp;return;} if(temp>min) return; for(int i=1;i<=9;i++) if(!vis[i]) { int j;原创 2016-03-19 10:16:59 · 1367 阅读 · 0 评论 -
The Rotation Game uva1343
#include #include #include #include #include #include using namespace std;#define N 10int n;int mat[N][N];int pos=0;int ans[100];bool read(){ if(cin>>mat[1][3]&&mat[1][3]) { c原创 2016-10-08 03:49:23 · 234 阅读 · 0 评论 -
区间筛法 (埃氏筛变种)
最近看到白书上的区间筛法 就根据区间筛自己打了一段代码 理解了一下里面的原理这个题目我最初一眼看过去就是一次筛法 但是根本不可行啊 时间空间肯定会爆炸 书上介绍说可以用小于等于根下b的素数来筛 刚开始我觉得会超时但是后来分析了一下这个算法其实还是蛮高效的1.首先我们要明白一点 : a-b这个区间里边的数之可能被小于等于根下b的素数筛掉 那么我们可以一边找根下b的素数 一边把他们的倍原创 2016-10-04 16:27:50 · 813 阅读 · 0 评论 -
51nod 1305 Pairwise Sum and Divide
#include #include #include using namespace std;long long arr[200000];int main(){ int n ; cin>>n; int save=0; long long ans=0; for(int i=1;i<=n;i++) { int x;原创 2016-09-21 17:22:24 · 177 阅读 · 0 评论 -
树状数组学习
#include #include #define maxn 50000+50using namespace std;int c[maxn],a[maxn];int n;int lowbit(int x){return x&(-x);}int sum(int r){ int all=0; while(r) { all+=c[r];原创 2016-09-20 12:54:13 · 191 阅读 · 0 评论 -
dp 计数问题 复杂整数划分 区间dp
百练的题目 : 让我对dp有了新体会 这是记忆化搜索写法 省了很多时间 并且状态转移的方式符合我们的认知 这个通过递推很难发现关系 但是讲区间搜索一下分解的话就可以计数了 并且在不影响结果的前提下自己规定了拿走数字的大小的方式和拿走的方向(能体会到这一点就好,这是写出来dp的关键 可以用复杂状态来表示准确的dp)三段solve 分别对应 三个问题#include #include #原创 2016-07-19 21:32:29 · 765 阅读 · 0 评论 -
线段树求逆序数
线段树是一类非常有用的数据结构 这个可以体现到求解一组序列的逆序数上来可以这么想 我们求逆序数的时候,对于每一个数字都找前面比他大的数字的数目例如 9 5 7 9这三个序列 我们先找5前面比5大的数字的个数 很明显是9 有一个我们继续找7前面比7大的个数 也是9 找 9 前面比9大的个数 和明显没有 按照这个想法实现的是O(n^2)的一个算法 复杂度不是很好 既然是区间操作原创 2016-07-23 22:43:19 · 2573 阅读 · 0 评论 -
百练 1088 dp
1088:滑雪查看提交统计提示提问总时间限制: 1000ms 内存限制: 65536kB描述Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例原创 2016-07-18 22:28:18 · 592 阅读 · 0 评论 -
记忆化搜索简介
在dp的方面,记忆化搜索感觉不如递推好用,这是肯定的,但有些时候dp的转移过程过于复杂很难求解一个问题的时候其子问题都解决了,所以这个时候可以用记忆化搜索来解决记忆化搜索因为可以将已经求解的问题保存起来,所以求解非常快,这个方法的基本思想就是由下到上求解,先递归到最底层,然后层层向上去解决这个问题,在这中间会有重叠子问题,大大加快了求解过程,可以用memset 将dp的值全部设置为-1 表示不原创 2016-07-05 14:10:58 · 233 阅读 · 0 评论 -
并查集操作
#include #include #include #include #include #include #include #include #include #include #include #include #include #define inf 1e9+7using namespace std;int fa[1005];int height[1005];原创 2016-07-13 17:21:15 · 274 阅读 · 0 评论 -
pair 的用法
pair 是一类很重要的类模版 目前我发现比较实用的方面是 用于map1. 定义一个pair : pair p;2.对于p的赋值 p.first=? p.second=?;开始也可以直接赋值 pair p (1,0.5);p=make_pair(1,0.5);3 .用于map#include map,int>mp;//往map里添加:mp[make_pair(1,1)原创 2016-06-25 14:45:44 · 418 阅读 · 0 评论 -
hdu 2061反思总结
这份是错掉的代码 因为度入的时候乱加了break 会导致接下来输入乱掉 悲剧。。。。去掉break以后就是正确的代码 读入的时候不能乱动#include #include #include #include #include #include #include #include #include #include #include #include #include原创 2016-06-02 17:26:24 · 214 阅读 · 0 评论 -
BFS 同余模定理 poj1426
摘自 優YoU http://user.qzone.qq.com/289065406/blog/1303946967大致题意:给出一个整数n,(1 解题思路:首先暴力枚举肯定是不可能的 1000ms 想不超时都难,而且枚举还要解决大数问题。。要不是人家把这题放到搜索,怎么也想不到用BFS。。。 解题方法: BFS+同余模定理转载 2016-05-02 10:20:16 · 335 阅读 · 0 评论 -
acm近来笔记
acm 知识---------------------------------2016.4.4如何对一个正整数输出连续的和? 题目:输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列。一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:15=1+2+3+4+515=4+5+615=7+81:一个数M若可以原创 2016-04-06 22:06:37 · 257 阅读 · 0 评论 -
c++ 高精度运算类 bign
#include #include #include #include #include #include using namespace std; const int MAXN = 410; struct bign { int len, s[MAXN]; bign () {转载 2016-04-06 21:50:15 · 765 阅读 · 0 评论 -
dfs的技巧
dfs很多人觉得难写,其实只要掌握好规律即可:1,每个dfs函数中必然有另外一个指向next的dfs函数2,用好dfs的参数传递;3,回溯比如刚开始标记访问,dfs一组之后结束标记访问4,技巧性的,如果感觉写的很乱,可以在前边写剪枝与条件判断,后面再写递归原创 2016-03-13 12:00:29 · 595 阅读 · 0 评论 -
poj2104 k-th number 主席树入门讲解
定义:主席树是一种可持久化的线段树 又叫函数式线段树刚开始学是不是觉得很蒙逼啊 其实我也是 主席树说简单了 就是保留你每一步操作完成之后的线段树 然后有可加减性呃 。。。 这么说好像还是有点生涩那么就拿poj2104来举例子吧 慢慢讲我觉得会很好的题意就是给你一个100000长度的数字 然后100000次询问[L,R]之间第k大的数字是多少这个很容易原创 2017-02-03 21:21:12 · 1083 阅读 · 0 评论