- 博客(15)
- 资源 (5)
- 收藏
- 关注
原创 poj 2018
<br />#include<iostream>using namespace std;#define MAXN 100005int sum[MAXN];int f[MAXN];long long xmult(int i,int j,int k){ return (long long)(i-j)*(sum[k]-sum[j])-(long long)(k-j)*(sum[i]-sum[j]);}int queue[MAXN];int back;void run
2011-04-29 18:59:00 1271
原创 poj 2464
<br />很有意思的题目,貌似用树状树状解更合适,但是还是用线段树代替了<br />#include<iostream>#include<vector>#include<algorithm>using namespace std;#define MAXN 200002int ind_x[MAXN];int ind_y[MAXN];int sum_x[MAXN];int sum_y[MAXN];struct point { int x,y;}p[MAXN];
2011-04-23 21:56:00 1270 2
原创 pku 3145
<br />做的我吐血的题啊,吃饭时突然想到有个小地方错了,改了以后就AC<br />#include<iostream>using namespace std;#define MAXN 500005int rank[MAXN];int vec[40005];struct SegmentTree{ int left[MAXN*4],right[MAXN*4]; char exist[MAXN*4]; char unexist[MAXN*4]
2011-04-20 17:43:00 520
原创 SRM 503
<br />250pts 这题实在没什么可说的。。。。<br />#include <vector>#include <list>#include <map>#include <set>#include <deque>#include <stack>#include <bitset>#include <string>#include <functional>#include <numeric>#include <utility>#include <sstream>
2011-04-17 21:24:00 417
原创 poj 2886
<br />线段树解决约瑟夫环问题,一开始要处理一下反质数<br />#include<iostream>using namespace std;#define MAXN 500002struct Person{ char name[12]; int step;}person[MAXN];int rprime[]={1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,1260,1680,2520,5040,7560
2011-04-14 15:29:00 904
原创 ZOJ One Person Game
<br />对期望仍然理解的不深入啊<br />#include<iostream>#include<iomanip>#include<string.h>using namespace std;#define MAXN 505double f[MAXN][2];int main(){ int n,k1,k2,k3,a,b,c; int t; cin>>t; while(t--){ cin>>n>>k1>>k2>>k3>>a
2011-04-14 09:30:00 627
原创 poj 2991
<br />线段树,几何知识很重要啊,左子树会对右子树产生影响<br />#include<iostream>#include<cmath>using namespace std;#define DEBUG_ENABLE 1#define eps 1e-8#define MAXN 10005const double PI = (acos(-1.0));int sum[MAXN];int len[MAXN];struct point{ double x,y;
2011-04-13 16:31:00 975
原创 SRM 502
<br />250 pts<br />#include <vector>#include <list>#include <map>#include <set>#include <deque>#include <stack>#include <bitset>#include <string>#include <functional>#include <numeric>#include <utility>#include <sstream>#include <io
2011-04-13 09:44:00 501
原创 ZOJ Machine
<br />#include<iostream>#include<algorithm>using namespace std;#define DEBUG_ENABLE 0 #define MAXN 20005struct Operate{ char c; int l,r;}op[MAXN];int seg[MAXN*4][2];int f[MAXN*2];struct SegmentTree{ int left[MAXN*8],ri
2011-04-12 14:06:00 602
原创 HDU 3436
<br />#include<iostream>#include<algorithm>#define DEBUG_ENABLE 1using namespace std;#define MAXN 100005#define KeyNode (ch[ch[root][1]][0])struct operate{ char c; int x;}op[MAXN];int seg[MAXN*2][2];int f[MAXN];struct SplayTre
2011-04-11 13:26:00 102
原创 HDU 3487
#include#define DEBUG_ENABLE 1using namespace std;#define MAXN 100005#define KeyNode (ch[ch[root][1]][0])struct SplayTree{ int sz[MAXN*3]; //sz[x]-x为根结点的结点数量 int ch[MAXN*3][2]; //ch[x][0]-x的左子节点;ch[x][1]-x的右
2011-04-11 13:22:00 1005
原创 HDU 1890
<br />Splay Tree,重点在子树的旋转,线段树很难实现:<br />#include<iostream>#define DEBUG_ENABLE 1using namespace std;#define MAXN 100005#define KeyNode (ch[ch[root][1]][0])int num[MAXN][2];struct Pair{int v,i;};struct SplayTree{ int sz[MAXN];
2011-04-08 10:31:00 1625
原创 HDU 2871
小HH推荐的题目,说是用Splay-Tree可以过,没想到方法,就先用了线段树,WA了一天啊,没有找出错误,贴代码如下:#includeusing namespace std;#define MAXN 50002struct node{ int l,r; int mb,mc; /* 最大空闲区间起始地址和长度 */ int nl,nr; /* 左右起始空闲区间长度 */ char sta; /
2011-04-07 09:24:00 1059
原创 zoj 3327 Friend Number
<br />思路:<br />1、有0存在,直接加1或者加10<br />2、一位数结果为1X<br />3、其他情况,从低位向高位遍历,记录2,3,5,7的个数,对于每个位,看是否可以用已经有的2,3,5,7的个数构成大于此数的最小数,如果存在这个数字,那么可以停止遍历,此数高位的数保持不变,低位的数:从低位遍历,用已有的2,3,5,7构造尽量大的小于10的数;如果不存在这个数字,结果的最高位为1,然后从最低位遍历。<br />#include<iostream>#include<string>#
2011-04-05 15:05:00 1234
原创 SRM 501
<br />SRM 250<br />#include <vector>#include <list>#include <map>#include <set>#include <deque>#include <stack>#include <bitset>#include <string>#include <functional>#include <numeric>#include <utility>#include <sstream>#include <io
2011-04-05 10:28:00 589
android上连连看游戏实现
2011-12-08
NDK OpenGLES 实现两个Cube的旋转
2011-10-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人