摘要: /* 本字典树较弱 只支持插入单词 查询单词. 特殊的 bool变量w 标记此字母是不是某个单词的结束 (然而这个题并没卵用) */ #include #include #include #define maxn 300010 #define maxm 1010 using namespace std; char s[maxm]; struct node { int next[27];... 阅读全文
posted @ 2016-05-05 21:59 一入OI深似海 阅读(181) 评论(0) 推荐(1) 编辑
摘要: /* 区间修改 区间查询 可以用线段树搞 但是一般的标记下放对这个题好像不合适 只能改叶子 然后更新父亲(虽然跑的有点慢) 小优化:如果某个点是1 就不用再开方了 所以搞一个f[i]标记 i 这个点还需不需要处理下去 注意用longlong 还有就是数组开大 */ #include #include #include #include #define LL long long #defin... 阅读全文
posted @ 2016-05-05 21:56 一入OI深似海 阅读(141) 评论(0) 推荐(0) 编辑
摘要: /* ST表多次查询区间最小值 设 g[j][i] 表示从第 i 个数到第 i + 2 ^ j - 1 个数之间的最小值 类似DP的说 ans[i][j]=min (ans[i][mid],ans[mid+1][r])mid=(l+r)/2 but 数太大装不下 所以改一个g数组出来就好了 接下来考虑 g[i][j]由谁转移来(不漏下就好 因为是去min 可以重复 同理gcd也可以 其他的... 阅读全文
posted @ 2016-05-04 17:36 一入OI深似海 阅读(135) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include #include #define M 100000 #define pa pair//优先比较第一个元素 using namespace std; int d[M],n,m,cnt,head[M],next[M],u[M],dis[M],num,s,t; bool f[M]; void add(int from,int t... 阅读全文
posted @ 2016-04-25 21:30 一入OI深似海 阅读(1881) 评论(0) 推荐(1) 编辑
摘要: /* 树形DP 根节点一定有人 然后 剩下的人没到每个孩子去 因为孩子数可能很多 不好枚举 所以转二叉树 分两部分 O(sum)就可以了 当然 转二叉树候必须顾及原来树的一些性质 如不能只选左孩子 转化好了之后就是DP了 写的记忆化 递归每个节点 枚举分给左右孩子的人数 */ #include #include #include #define maxn 1010 using namesp... 阅读全文
posted @ 2016-04-25 19:30 一入OI深似海 阅读(240) 评论(0) 推荐(0) 编辑
摘要: /* 一开始认为是个水题 直接模拟 没想到只得了50分 一看数据吓niao了 模拟妥妥的TLE 实在不好优化了0.0(最快O(m)) 然后借鉴别人的 DP+神奇的输出 DP:状态:f[i][j] 前i个字符出现j次1的数字个数 很容易想到 如果i是1 f[i][j]=f[i][j]+f[i-1][j-1] 如果i是0 f[i][j]=f[i][j]+f[i-1][j] 初始化 i==... 阅读全文
posted @ 2016-04-25 16:43 一入OI深似海 阅读(180) 评论(0) 推荐(0) 编辑
摘要: /* 算法描述:维护一个s[p]表示累加和 并且更新最大值ans 如果s[p]<0 则从p+1重新累加 证明:设某个区间的起点和终点分别为s t 分两种情况 1.t0 s1=s3-s2 所以有s3>s1 即 从1开始更优 2. t>=p:设s2表示1到p的累加和 s1表示1到s的累加和 s3表示s到p的累积和 根据前面的条件 s1>0 s2s4 即s[p]<0 时 重新;累加更优 */ ... 阅读全文
posted @ 2016-04-25 10:25 一入OI深似海 阅读(386) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include using namespace std; int n,ans[1010],a[1010],b[1010],sum,ti[1010]; struct node//三元组结构 { int o;//工作编号 int t;//时间 int ab;//在哪个机器 }job[1010]; int cmp(... 阅读全文
posted @ 2016-04-24 21:35 一入OI深似海 阅读(413) 评论(0) 推荐(0) 编辑
摘要: /* 第一眼以为就是个区间覆盖 然后敲完提交60分0.0 然而觉得自己的做法很对 以为数据错了 后来发现XXX他的牛棚是一圈(牛过得挺好的啊 还能赏湖...) 然后枚举断开的点 可惜n=750 p=10000 这组数据TLE了 1.3秒的样子 90分 后来看题解说可以并查集 觉得好有道理的样子 0.0 下面是两次的代码 */ #include #include #include #def... 阅读全文
posted @ 2016-04-23 21:35 一入OI深似海 阅读(250) 评论(0) 推荐(1) 编辑
摘要: /* 状态:f[i][j] 前i个村庄已经建了j个学校 转移:f[i][j]=min(f[i][j],f[ii][j-1]+s[ii+1][i]) 1 #include #include #include #include using namespace std; int n,m,a[505],h[505],s[505][505],f[505][505],ans; int Dfs(int nn... 阅读全文
posted @ 2016-04-23 16:29 一入OI深似海 阅读(242) 评论(0) 推荐(0) 编辑