摘要: 先废话一下.嗯 嗯 从今天开始 从基础一步一步开始 追逐我的梦想!今天先来讨论一下树状数组.问题提出:已知数组a[],元素个数为n,现在更改a中的元素,要求得新的a数组中i到j区间内的和(1<=i<=j<=n).思考:对于这个问题,我们可以暴力地来解决,从a[i]一直累加到a[j],最坏的情况下复杂度为O(n),对于m次change&querry,合起来的复杂度为O(m*n),在n或m很大的情况下,这样的复杂度是让人无法忍受的.另外,如果没有元素的变更,我们完全可以存储sum[1,k](k=1,2,……),然后对任意给定的查找区间[i,j],都可以方便的用ans=su 阅读全文
posted @ 2012-03-09 19:59 我们一直在努力 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=305这道题用递归写会比较简单点。View Code 1 #include <iostream> 2 #include <cmath> 3 #include <cstdio> 4 #include <cstring> 5 using namespace std; 6 char a[500]; 7 int start; 8 int sove() 9 {10 int m,n;11 switch(a[start])12 {13 case ' 阅读全文
posted @ 2012-03-09 08:00 我们一直在努力 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=309题意:很好理解就是选手可以选择加速,或者保持速度不变,但在要求的点处速度不能超过给定的值。思路就是从起点开始不断加速,到有限制点时比较当前的速度和限制速度,如果当前速度小于限制速度则继续进行,否则,把当前的速度改为限制速度继续进行,直到最后,将结果保存到一个数组中,然后从后向前做同样的操作,直到0,不同之处在于在终点时的初始速度不能为1,而应该为不能达到的速度,将结果保存在另一个数组中,比较上面的两个数组,取相同位置的最小值,这样在这些值里边找最大的就是最求的最大速度。View C 阅读全文
posted @ 2012-03-09 07:56 我们一直在努力 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.tju.edu.cn/toj/showp2196.htmlView Code 1 #include<iostream> 2 #include<cmath> 3 #include<cstring> 4 #include<set> 5 using namespace std; 6 int main() 7 { 8 int i,j,k,n,m,t; 9 char ch;10 multiset<int>st2;11 multiset<int>::iterator in2;12 while (cin& 阅读全文
posted @ 2012-03-09 07:42 我们一直在努力 阅读(254) 评论(0) 推荐(0) 编辑