上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 20 下一页
摘要: hdu 2131View Code#include<stdio.h>#include<string.h>int main(){ char ch[2],s[210]; while(scanf("%s %s",ch,s)!=EOF) { char x = ch[0]; int len = strlen(s); int cnt = 0; if( x >= 'A' && x <= 'Z' ) { for(int i = 0; i < len; ++i ) ... 阅读全文
posted @ 2013-04-16 10:19 yefeng1627 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 另附 2013 个人选拔赛排名: 阅读全文
posted @ 2013-04-16 09:56 yefeng1627 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题意 N个数,M个操作,操作有三类: 1. D,A,B,C 区间[a,b]中 大于0 的数 除以C,计算机整除 2. M,A,B,C 区间[a,b]所有数减去C 3. S,A,B 区间[a,b]求和解法 区间更新和求和,线段树上延迟更新就可以了。主要是除法如何维护。 这里的数C <= 5*1E5 , 因为大于0才除,所以每个数最多被除 log(Ai) 次, N个数则最多被除 N*log(Ai) 次了。 所以做除法可以直接更新到底,还有就是使用一个标记,区间中都不可被除时,就没必要更新到底了。 另外,除数是1的时候,不能除,貌似后台数据好多1,╮(╯▽╰)╭~~~ Vi... 阅读全文
posted @ 2013-04-15 09:35 yefeng1627 阅读(1233) 评论(0) 推荐(0) 编辑
摘要: 对于序列 a_1,a_2,..a_i.,a_n从小到大排列处理花费会最小。一个一个处理完,例如当处理 a_1 则此时花费分为 a_1, 以及 a_x (x>1)的花费来计算 1. a_1 时 2. a_x 时 当消除掉 a_1 后,又生成一个新的 序列 a_1`, a_2`, ..., a_n` 此时可以知道, a_i` = a_i - a_1 + 1 我们可以通过 线段树来 维护更新序列,这样省事. 但是这题 n = 1e5 , 且极限T = 100, 此时时间复杂度达到 1e7,若再添加个 log(N) 复杂度,就会TLE了。 我们可以发现总花费为 序列除了被... 阅读全文
posted @ 2013-04-14 21:56 yefeng1627 阅读(258) 评论(3) 推荐(0) 编辑
摘要: Problem A 一边输入边一边维护残留网络,然后跑ISAP。小数据过了,大数据TLE。据说可以BFS预处理 层次网络。可以过。View Code #include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>using namespace std;const int inf = 10000000;const int MAXN = 500;#define MIN(a,b) (a)<(b)?(a):(b)#define MAX(a,b) (a)>(b)?( 阅读全文
posted @ 2013-04-14 21:29 yefeng1627 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 1 namespace MappingBinaryHeap{ 2 /* 3 DS: 4 Datastructure to show the value 5 Heap: 6 1.Ds:value 7 2.idx:index 8 pos: 9 The position for each index10 len:11 The volum n of heap12 hh:13 heap14 Push:15 insert an element16... 阅读全文
posted @ 2013-04-12 15:39 yefeng1627 阅读(307) 评论(0) 推荐(0) 编辑
摘要: Problem A 客户数量 可以得出将长度为 len的蛋糕切成 len段 1的,不管如何切,总花费都为 len*(len-1)/2 对于每个顾客,来到的时间st,以及需要的蛋糕长度k,则有一个终止时间ed = st+k*(k-1)/2 对每个顾客求出其服务终止时间,然后得到n个区间,将区间以终点排序,然后线性扫过去,用i的起点时间与前一个服务顾客 的终点时间比较即可。 时间复杂度 O( NlogN )View Code #include<cstdio>#include<cstring>#include<algorithm>#include<casse 阅读全文
posted @ 2013-04-12 12:31 yefeng1627 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 题意: n个单词,每行字符数量m个,单行字符数量值为j时,花费我 (m-j)^3 单词间有一个空格,问最小花费。 最后一行不花费解法 dp[i][j] 表示前i个单词,长度为j的最小花费 // 最后一行多余空格不作为计算,只有出现换行时才计算。// dp[i][j] 表示前i个单词,长度为j的最小整齐度// 由 dp[i][j] 通过添加一个 单词 L[i+1] 只可能导致两种情况// 1, 依然在一行,此时应满足条件 // 若 j == 0 ,则此时必定可以添加到后面有// dp[i+1][ L[i+1] ] = Min{ dp[i][j] }// 若 j > 0... 阅读全文
posted @ 2013-04-10 18:41 yefeng1627 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题意 n(n<=2e4)个顶点m(m<=6e4)条边,每个顶点有个权值val_i, 然后有Q(Q<=5e5)次操作. 操作分为三类: D x : 删除第x条边 Q x k : 查询与节点x关联的所有顶点中第k大 C x V : 将节点x的权值更改为V 输出查询的均值 /sum { Query_val } / Query_num解题思路 离线算法 对于删除,可以通过将所有操作读入后,从后往前处理。把删除边转换成插入边。 对于查询第k大顶点,我们可以使用 treap维护的名次树 kth来实现 对于修改操作,我们先将原来的值删除,然后再插入新值。 因为我们使用离线逆向... 阅读全文
posted @ 2013-04-09 20:29 yefeng1627 阅读(671) 评论(0) 推荐(0) 编辑
摘要: Treap是一颗拥有键值,优先级两种权值的树. 对于键值而言,这棵树是排序二叉树(BST Balance Sort Tree); 对于优先级而言,这棵树是堆,既在这棵树的任意子树中,根节点的优先级是最大的(这个性质称为堆性质) 1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<algorithm> 5 using namespace std; 6 struct Node{ 7 Node *ch[2]; //左右子树 8 int r; // 优先级,数值越大, 阅读全文
posted @ 2013-04-08 20:23 yefeng1627 阅读(412) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 20 下一页

Launch CodeCogs Equation Editor