上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 19 下一页
摘要: #include #include char b[100020];int p[100020];int main(){ int i,j,y; int cas; scanf("%ld",&cas); while(cas--) { scanf("%s",b+1)... 阅读全文
posted @ 2014-06-06 13:37 贝尔摩德 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题目是求边数最少的最小割集。网上看到了两种方法,粘一下。第一种:建边的时候每条边权 w = w * (E + 1) + 1;这样得到最大流 maxflow / (E + 1),最少割边数 maxflow % (E + 1)道理很简单,如果原先两类割边都是最小割,那么求出的最大流相等但边权变换后只有边... 阅读全文
posted @ 2014-05-19 21:41 贝尔摩德 阅读(1518) 评论(0) 推荐(0) 编辑
摘要: 首先对于表示这个国家地图的有向边(u,v,cost),直接在图中建一条一样的边(u,v,cost)。对于供你选择的城市i,假设它的价值是value,创建一个汇点T,建一条(i,T,value)的边。然后以1为源点,T为汇点,求最小割即可。有两种边,一种是原地图中的A边,另一种是与汇点相连的B边,若某... 阅读全文
posted @ 2014-05-18 22:16 贝尔摩德 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 最后的人的位置一定是固定的,所以倒序插入,插入之后这个位置就不参与计数了,所以问题变成,找到第 i 个空位,线段树记录该区间里有几个空位。#include #define maxn 200010int sum[4*maxn];int pos[maxn],val[maxn];int ans[maxn]... 阅读全文
posted @ 2014-05-17 18:49 贝尔摩德 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 最后的人的位置一定是固定的,所以倒序插入,插入之后这个位置就不参与计数了,所以问题变成,找到第 i 个空位,线段树记录该区间里有几个空位。#include #define maxn 200010int sum[4*maxn];int pos[maxn],val[maxn];int ans[maxn]... 阅读全文
posted @ 2014-05-17 18:49 贝尔摩德 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 二分最大长度len,再分组判定,代码直接贴的论文里的==#include "stdio.h"#define maxn 20000int wa[maxn],wb[maxn],wv[maxn],ws[maxn];int cmp(int *r,int a,int b,int l){return r[a]=... 阅读全文
posted @ 2014-05-16 19:58 贝尔摩德 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 二分最大长度len,再分组判定,代码直接贴的论文里的==#include "stdio.h"#define maxn 20000int wa[maxn],wb[maxn],wv[maxn],ws[maxn];int cmp(int *r,int a,int b,int l){return r[a]=... 阅读全文
posted @ 2014-05-16 19:58 贝尔摩德 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题目给出一个字符串,合法的子串是该字符串的前缀,且存在一个后缀与他匹配。求一共有几个合法的子串,并求出每个合法的子串在字符串中出现的次数。第一问可以直接用kmp的p数组解决,除了原字符串本身外最长的合法子串是1----p[ len ],第二长的是1----p[p[ len ] ],直到为0,累加就好... 阅读全文
posted @ 2014-05-16 19:46 贝尔摩德 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题目给出一个字符串,合法的子串是该字符串的前缀,且存在一个后缀与他匹配。求一共有几个合法的子串,并求出每个合法的子串在字符串中出现的次数。第一问可以直接用kmp的p数组解决,除了原字符串本身外最长的合法子串是1----p[ len ],第二长的是1----p[p[ len ] ],直到为0,累加就好... 阅读全文
posted @ 2014-05-16 19:46 贝尔摩德 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 线段树维护该区间有多少个数就好,计算名次时二分一下。#include #define maxn 362144 int tree[4*maxn];void pushup(int o){ tree[o]=tree[o*2]+tree[o*2+1];}void build(int l,int r,i... 阅读全文
posted @ 2014-05-15 16:47 贝尔摩德 阅读(113) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 19 下一页