上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 25 下一页
摘要: 线段树节点记录内容请见代码注释操作1:每次查询区间 [A, N - 1] 中第一个空格的位置,然后在[ A, N - 1 ]中二分右端点的位置。实际放的花的数量是 要求数量 与 剩余空格数量 之间的最小值。如果[ A, N - 1 ]中已经没有空格了,就不能放了。操作2:求和与成端更新,线段树基本操作不解释比赛的时候把PushDown函数写错了,样例死活不过,比赛结束之后才看出来,2A之,orz……要不要这么伤人…… 1 #include 2 #include 3 #include 4 #include 5 6 #define lson l, m, rt > 1; 33 ... 阅读全文
posted @ 2013-07-25 17:24 冰鸮 阅读(399) 评论(0) 推荐(0)
摘要: 解释一下样例,因为我觉得这个题意表述的不是很清楚。以第二组样例为例。牌序为:3 1 4 5 2第一轮:把 3 放到末尾:1 4 5 2 3,最顶上的牌是1,把1拿走。剩余 4 5 2 3第二轮:1.把4放到末尾:5 2 3 4 2.把5放到末尾:2 3 4 5 最顶上的牌是2,把 2 拿走,剩余:3 4 5第三轮:1.把3放到末尾:4 5 3 2.把4放到末尾:5 3 4 3.把5放到末尾:3 4 5 最顶上的牌是3,把 3 拿走,剩余:4 5第四轮:1.把4放到末尾:5 4 2.把5放到末尾:4 5 3.把4放到末尾:5 4 4... 阅读全文
posted @ 2013-07-24 14:24 冰鸮 阅读(331) 评论(0) 推荐(0)
摘要: i 表示节点 i ,j=0表示不选择其父节点,j=1表示选择其父节点。f 为其父节点。取 每个节点选择/不选择 两者中较小的那个。一组数据:151 21 31 41 1010 910 1112 1012 1410 1313 154 55 74 66 8答案是6 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 const int MAXN = 100010;10 11 vector adj[MAXN];12 bool vis[MAXN][2];13 int d[M... 阅读全文
posted @ 2013-07-24 13:11 冰鸮 阅读(289) 评论(0) 推荐(0)
摘要: 留着当个模板用,在BNU上AC,在LA上RE……可能是java的提交方式不同???数和运算符各开一个栈。表达式从左到右扫一遍,将数存成大数,遇到数压在 数的栈,运算符压在 运算符的栈,每当遇到右括号时,弹出 数的栈 的栈顶头两个元素,弹出 运算符的栈 顶的头一个元素,进行运算,将运算结果压回 数的栈 中。最后输出栈顶元素。运算过程中把不符合情况的判掉。我写的第二个java的题,竟然1A……这世界太不可思议了= =import java.util.*;import java.math.BigInteger;public class Main { static Scanner in=new ... 阅读全文
posted @ 2013-07-23 23:13 冰鸮 阅读(340) 评论(0) 推荐(0)
摘要: 枚举每个位置,求以num[i]为起点的最长不下降子序列和以num[i]为结尾的最长不递增子序列。并且把相同值的个数统计一下,最后要减去算重复了的。比如:194 4 2 2 2 3 3 3 7#include #include #include using namespace std;const int MAXN = 100000 + 10;int n;int num[MAXN];int stack1[MAXN];int stack2[MAXN];int dp1[MAXN];int dp2[MAXN];int same1[MAXN];int same2[MAXN];void DP( int *s 阅读全文
posted @ 2013-07-23 17:49 冰鸮 阅读(262) 评论(0) 推荐(0)
摘要: HDU 1711Number Sequence(模板题)#include const int MAXN = 1000010;const int MAXL = 10010;int N, M;int textS[MAXN];int tarS[MAXL];int next[MAXL];void GetNextVal( int* s, int* nextval, int len ){ int i = 0, j = -1; nextval[0] = -1; while ( i #include #include const int MAXN = 1000010;const int MA... 阅读全文
posted @ 2013-07-22 21:19 冰鸮 阅读(285) 评论(0) 推荐(0)
摘要: 跟 UVa1474 - Evacuation Plan 一个题,但是在杭电上能交过,在UVa上交不过……不知道哪里有问题……将施工队位置和避难所位置排序。dp[i][j] 代表前 i 个避难所收留前 j 个施工队。dp[i][j] = min( dp[i - 1][j - 1], dp[i][j - 1] ) + abs( b[i] - a[j] );内存卡的比较死,要用滚动数组,并且记录路径的path[i][j]只能用bool型。MLE了四五次OTL…… 1 #include 2 #include 3 #include 4 #include 5 6 #define LL... 阅读全文
posted @ 2013-07-22 10:40 冰鸮 阅读(295) 评论(0) 推荐(0)
摘要: 把所有的点都映射到XOZ这个平面的第一象限内,则这个三维问题可以转化二维问题:求一条直线,使所有点在这条直线的下方,直线与X轴和Z轴围成的三角形旋转形成的圆锥体积最小。这样转化之后可以看出直线的临界条件应当是经过其中一点。三分圆锥半径R,因为要覆盖所有的点,让点(R, 0)与所有点连线,直线与Z轴交点即为H,H取其中最大的那个。 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 #define EPS 1e-9 8 9 using namespace std;10 11 const int MAXN = 1001... 阅读全文
posted @ 2013-07-20 17:37 冰鸮 阅读(423) 评论(1) 推荐(0)
摘要: 一开始我用的Trie+计数,但是不是计多了就是计少了,后来暴力暴过去的……看了别人的代码知道是字符串哈希,但是仍有几个地方不理解:1.26^500溢出问题2.没考虑哈希碰撞?跪求指点! 1 #include 2 #include 3 #include 4 5 #define LL unsigned long long int 6 7 const int MAXN = 1010; 8 const int MAXLEN = 510; 9 10 int N;11 char str[MAXN][MAXLEN];12 int len[MAXN];13 LL Hash[MAXN]; /... 阅读全文
posted @ 2013-07-20 11:59 冰鸮 阅读(334) 评论(0) 推荐(0)
摘要: 思路跟 LA 6187 完全一样。我是乍一看没反应过来这是个并查集,知道之后就好做了。d[i]代表节点 i 到根节点的距离,即每次的sum。 1 #include 2 #include 3 #include 4 5 const int MAXN = 200010; 6 7 int N, Q; 8 int p[MAXN]; 9 int d[MAXN];10 11 int FindSet( int x )12 {13 if ( p[x] == x ) return x;14 int root = FindSet( p[x] );15 d[x] += d[ p[x]... 阅读全文
posted @ 2013-07-19 22:39 冰鸮 阅读(166) 评论(0) 推荐(0)
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 25 下一页