- 博客(46)
- 资源 (33)
- 收藏
- 关注
原创 POJ 2085 treap O(nlogn) 与 贪心 O(n)算法
/* 问题是找出逆序数为m的最小n全排列 * 直接暴过去找出第i轮需要第k小数,k = m-(n-1)*(n-2)/2+1 ,当然如果m比较小就k=1了 * 然后用treap找第k小数就可以了。。 * O(nlogn) * 听说有O(n)的规律。。其实我做这题主要为了找规律。。。结果就这么被我水了过去。。 * 好吧继续找规律 */#include #include #inclu
2012-03-19 15:34:38
1015
原创 POJ 3734 推公式
/*不做任何限制的组合数是4^n,减去出现奇数个绿色或红色球的情况。思路是从n个球中跳出k个球(k>=1 && k <=n)去染绿色和红色,剩下的球的情况自然是2^(n-k),问题转化为求k个球染两种颜色的组合数,且必有一种球染奇数。、下面公式给出取k个球染红绿且非法的情况2(C(k,1)+C(k,3)+C(k,5)...)。。。*C(n,k)*2^(n-k) 当k为奇数,此式刚好是2
2012-03-18 09:54:12
1200
原创 poj 2155 二维树状数组
//现在知道的树状数组有两种写法,一个适用擦边查点,一种适用擦点查边//擦点查边的写法比较普通,arr[i] 存的就是i管辖范围内的sum//擦边查点反过来写,此时,插入t到[a,b]相当于插入-t到[0,a-1] 插入t到[0,b] //插入时,arr[i]表示管辖范围内的影响值,当不是全部,实际上查询要不断+lowbit加到暴//二维的也只是插入一个大矩形,恢复三个小矩形的过程#in
2012-03-05 13:19:18
553
原创 poj 2155 树套树
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include
2012-03-05 10:41:09
833
原创 sicily 1404 第一道 状态DP
#include #include #include #include using namespace std;#define check_i(i, node) ((1<<i) & node) //node第i位是不是有值,含第0位#define MX 0x7f7f7f7fint n, w[11][11];int dp[2<<10][11];int main(){
2012-03-04 00:07:51
543
原创 poj 2352 treap
//15000个坐标,对于每个坐标,其左下方向(含平 垂)坐标的个数就是它的level数//输出各个level坐标个数//之前做过线段树。。现在暴个treap#include #include #include #include #include #include using namespace std;#define MX 15010int size, root;s
2012-02-29 16:44:20
1174
1
原创 poj 1442 treap
//顺序插入数字,动态查询第i大的数,每次查询i递增//直接暴treap#include #include #include #include #include using namespace std;#define MX 30010int size, root;struct Node{ int l, r, key, rand_fix; int coun
2012-02-29 16:41:35
2263
原创 Dancing Links 精确覆盖问题的快速dfs
引.精确覆盖问题:给定一个矩阵0-1矩阵,如:101001010判断或输出一些行,这些行的在同一列上有且仅有一个1,如上面的第1和第3行就符合条件。这个问题是NPC问题,必须用搜索。但是解决这么一个问题有什么用呢?一。实际问题转化为精确覆盖问题解决 这里以数独为例。数独的游戏
2012-02-28 19:09:21
2995
转载 GCC __attribute__
原帖:http://blog.chinaunix.net/u2/69947/showart_1102422.htmlgcc manual: http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Function-Attributes.html摘要:在学习linux内核代码及一些开源软件的源码,经常可以看
2011-11-19 14:23:03
707
原创 sicily 1108 Online Selection DP
//dp//题意://n组数字,对第i组数字回答 1或0 答案与ai一样就加一分, 回答1跳到第 I1 组 回答0同理//要求给定回答的次数 k、得分m,输出过程中最多选择多少次0//初始从第0组开始回答//dp[p][l][so] 下一组数组是p,当前已选择l次,得
2011-08-17 11:53:11
949
原创 POJ 3368 RMQ - ST
//找序列 [a,b]之间出现频率最多的数,输出频率//因为是有序序列所以,可以转化成RMQ,w[i] = num[i]累计出现次数//然后找 [a,b]之间最大的w[i]就可以了//考虑开头的情况,用st[i]存第一个num[i]的位置,ed[st[i]]存最后一个位置
2011-08-16 16:45:58
703
原创 HDU 2222 Keywords Search AC自动机 可做模板
#include #include #include using namespace std;#define NUM 26#define ST 'a'#define QMAX 500001struct Node{ Node *fail; Node *nxt
2011-08-03 14:15:16
549
原创 HDU 2896 病毒入侵 AC自动机
#include #include #include using namespace std;#define NUM 128#define ST 0#define QMAX 500001struct Node{ Node *fail; Node *nxt[
2011-08-03 14:14:01
587
原创 sicily 1370 How many 0's? 递推 规律
//找规律 算m到n有数字中有几个0,包括m n//先设数组 dp[i]表示 i长度,第一个固定且非0的所有数字的0的个数//基于dp从,dp和可以直接算 0到1000000 ,不包括100000//剩下的数字由高位向低位算,分0和非0去暴力就可以了#
2011-07-06 14:24:28
743
原创 sicily 1192 二分匹配
//求二分图最大独立集,点之间无边//先求最大匹配,剩下的点之间不可能有边,再加上匹配数(每对匹配只取一个人)即可//如果剩下的点中,男的与匹配点中女的有边,就取该匹配的男点//不可能出现不在匹配中的男女两点同时与同一匹配边有边,因为这样会导致增广#include #include #include #include #include using namespace std;
2011-07-03 10:25:44
620
原创 sicily 1898 && 2608 Tree
//给一颗树,节点有白有黑,白节点可以与黑节点交换位置,算出让黑节点连通的最小交换次数//转换问题变成找连通分支块 使得包含黑节点最多即可//树形dp 对node存储一个f[][2]//f[i][1]表示node 子树下(包括自己),包含i个节点的连通分支的最大黑节点数//f[i][0]不包含自己...//答案就是 n-max( f[kk][1],f[kk][0] ) kk是整个图黑节点数
2011-05-23 13:59:00
648
原创 poj 2750 线段树 Potted Flower
<br />//被我种得很复杂的线段树。。//找环最大和区间。。不能包涵整个环(扑街的条件啊)//想法其实很简单存储左起最大值,右起最大值#include <iostream>#include <cstdio>using namespace std;#define _mx 100001struct Seg{ int l, r, mxl, mxr, mx; //mxl mxr 左起右起最大值 mx 最大值 int _mxl, _mxr; //左起右起
2011-04-12 18:02:00
715
原创 sicily 1422 Table Tennis 大水
<br />//又一道水题呀 矩形 球在上面45度反弹 从A出发最先到达哪个端点#include <iostream>#include <cstdio>using namespace std;int gcd( int a,int b ){ return b?gcd(b,a%b):a;}int main(){ int a, b; while( scanf("%d%d",&a,&b) != EOF ) { int c = gcd( a, b );
2011-03-21 17:13:00
1017
原创 1114 Food Cubes 3D BFS
<br />//3D水广搜 搜有几个被立方体围起来的空白部分//直接搜空白部分 遇到边界表示空白部分不是hole就可以了//在机子上跑样例10s,那个汗呀,硬头皮交上去。。0.33s//我汗,我机子破了#include <iostream>#include <queue>#include <cstdio>#include <cstring>using namespace std;bool visited[101][101][101];int t, n, x,
2011-03-21 16:27:00
1030
原创 sicily 1822 dp
<br />//dp 圈 决斗 找可能win的人#include <iostream>#include <cstdio>#include <cstring>using namespace std;int t, n;int win[41][41];int dp[100][100];int get( int k,int n2 ){ return ( k>=n2 )? (k-n2):k;}int main(){ cin>>t; while(
2011-03-18 12:10:00
1000
原创 poj 1141 dp
<br />//输出最优括号匹配 dp#include <iostream>#include <string>using namespace std;string &operator+(string a,string b){ a.append(b); return a;}string dp[101][101];string brackets;int main(){ string maxstr = ""; int maxl = 250; f
2011-03-15 12:44:00
517
原创 sicily 1149 等价表达式
<br />//水题,不过又是邪恶的int改long long刷了几个WA//题目求等价表达式,式子中未知量只有 a 可以用数代替a 水过去//栈转序处理比较传统#include <iostream>#include <string>#include <cmath>using namespace std;long long check = 23, result_t,final;long long num[50],op[50];//powlong long po
2011-03-01 23:33:00
1609
2
原创 GWT 实现文件上传和下载
上星期老师叫我学写一个fileupload 和 download ,琢磨了很久~~ 代码网上很多,关键跑出来有效果 是很纠结人的。。整理一下吧。upload:(推荐一本书 《Google Web Toolkit 开发实战》 第九章有详细的说明 )首先下载两个包 commons-fileupload-?.jar和commons-io-?.jar 将他们配置到你的项目中先把它们放在 "项目名/war/WEB-INF/lib" 中,之后直接在 properties 中加入到项目中(没配置过可以去网上查eclip
2011-02-28 16:41:00
7809
1
原创 sicily 1140 国王的遗产
//小号40个WA..目今还不知道旧代码WA哪了。。//有向树dfs枚举断边(模拟砍不大于m/2节点的树枝)#include #include #include using namespace std;const int mx = 70000;int n,k,m;int root;int v[mx],nxt[mx],head[mx];bool w[mx];int mm = 1,mnn;int res,uuu,www;void add_edge( int
2010-12-29 20:23:00
3429
原创 sicily 1135 飞越原野
<br />//广搜较难/*题意 m*n矩阵,每个点有可能是湖泊,或者陆地,计算从(0,0)到(m,n)最小步数 超人可以飞,但是不能停在湖泊上,超人的能量能飞D步(从1到3算两步) *///WA了很多次,一开始处理成只能在湖泊上飞。。傻X得//做法是典型BFS,虽然状态数高达10000*100(100存超人能量消耗),实际上广搜可以保证路径递增//所以可以通过存储已搜的最小能量消耗剪枝//wengsht#include <iostream>#include <
2010-12-21 23:21:00
1889
原创 sicily 2011 Nine Digits
<br />//新手赛广搜。。哎,当时头大只出了三道题,这道其实不难的。。//想想自己以为模板是超级水题的,结果到场上竟然不敢下手。。泪流满面//这题和魔板做法是一模一样,只不过搜索是预处理,先把所有//状态都搜完,之后const输出而已//四个数字转换,2*2块逆时针//wengsht#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;
2010-12-20 21:46:00
1510
原创 sicily 1148 dp
<br />//本来想水水题的,没想到被它水了很久很久。。//给独木桥上石头的分布,青蛙每次只能跳[s,t],求过桥踩到最少石头数//数据太大压缩做dp就可以过//wengsht#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int l,s,t,m,k;int st[111];int reduce[111]; //各石头
2010-12-19 00:06:00
1478
原创 sicily 1004
<br />//十分恶心的浮点运算,极度恶心的16个WA。。。//输入一大堆线段,输出可以合并成几条//排个序就OK,但是很容易在精度那边WA/*先保证x1<x2 斜率不存在的时候保证y1<y2 排序思路: 保证能划一起的线段一定邻居,不难但是精度要注意呀 *///之后遍历一次合并就可以了//浮点数判断相等只要距离在某个很小的数就true了//还有就是浮点数取正要用fabs(),WA在这里很久很久。。//wengsht#include <iostream>#in
2010-12-16 21:29:00
1723
原创 sicily 1003 水题
<br />//简单的模拟..//wengsht#include <iostream>#include <cstdio>#include <queue>using namespace std;int t,n,c[10],card;int no_count;queue<int> q[11];int main(){ //freopen("1.txt","r",stdin); scanf("%d",&t); for( int k = 1;k <= t;k++
2010-12-16 00:00:00
2355
2
原创 sicily 1750 分组背包
<br />//水题//分组背包,比背包01多了一个条件:一些宝物不能同时共存#include <iostream>#include <cstdio>#include <cstring>using namespace std;int t,p,n,q;int s[101],d[101],e[101],m[101];int dp[1001];int main(){ //freopen("1.txt","r",stdin); scanf("%d",&t)
2010-12-12 14:25:00
810
原创 sicily 1136 山海经
<br />//听过大牛线段树讲座。。感觉新手赛要多用线段树//这题线段树RMQ。。一开始真以为是普通RMQ,水了点代码交上去果断TLE//下来看discuss找到建树方法,但是想不出find方法。。放了3天后才重新拿起//find一个区间的时候可以建一条它的线段,处理好左右孩子的有效量转移就可以了/*线段记录: left,right 左右端点 xl mxl 从左端到xl有最大和mxl xr mxr 类似 a b
2010-12-09 19:37:00
1311
原创 sicily 1321 dijkstra
<br />//优先队列+dijkstra//很久没写图生疏了//输入处理麻烦一点,有权棋盘两点间最短路,没个棋格都有一个权值#include<iostream>#include<cstring>#include<queue>#include<cstdio>#include<vector>#define INF 9999999999using namespace std;int sa[] = { -1,1,0,0 };int sb[] = { 0,0,-1
2010-12-04 18:50:00
853
原创 sicily 1214 信号分析
<br />//找出从1到L的二进制回文数个数//a2n = an a4n+1 = 2*a2n-an a4n+3 = 3*a2n+1 - 2*an//难点在于看出公式是回文式//模拟下OK#include <iostream>using namespace std;int s[34];int f( int L ){ int result = 0; while( L ) { result++; L /= 2; } return re
2010-12-04 01:18:00
1702
2
原创 sicily 1142 迭代深搜
<br />//迭代深搜,继续百度之//第一次裸深搜,只不过听了同学说最多2*n加了个小剪枝 时间超过10s//第二次广搜+字典树存状态,神勇到达0.8s但是 内存超过32m...//如此如此。。//最后百度之才知道有种迭代深搜,就是逐层增加搜索次数,这样实现结果从小到大状态搜索//有点像BFS+DFS。。//题意,给过最多26个数字,输出最小排序翻转次数,煎饼堆排序#include <iostream>#include <cstdio>#include <algor
2010-12-03 22:06:00
2392
原创 sicily 1686
<br />//一整天被卡在这道题中。。//经过5次小改函数,3次大改刷了重写。。//TLE 4次 WA 七八次//一开始一位是水题用自己种过的树水。。4次TLE后//重新看看那篇大牛写的文章。。原来处理一段数据需要用标记。。果断重写//之后更纠结,因为把本来标记线段节点当线段边界用,果断WA4次//之后还水,各种数据一直给力,各种WA。。//好吧。。我算是服了,重写。。//Accept出来,都很伤心。。。被以为是水题的题卡了前后5 6小时,//学到了。。。对一段操作
2010-11-25 20:19:00
574
原创 sicily 1684
<br />//找匹配,要求保证最大权有最小值//一开始开挂 优先队列+无限增广 直接水 3.04s过,发现status都1s内的。。那么水//修改保留每次增边已得匹配边 直接0.1s过~~~#include <iostream>#include <queue>#include <cstring>#include <cstdio>#define INF (1<<29)using namespace std;int n,v,u,d;int _in[501];
2010-11-23 00:30:00
539
原创 sicily 1889
<br />//超级简单的水BFS,开小号刷WA。。最后静心检查原来是 n*m棋盘不是n*n。。//找两点最短路,相邻两点有相同标记的耗时0,否则耗时1//没什么特别的,最小优先队列直接水#include <iostream>#include <queue>#include <cstdio>#include <cstring>#include <vector>using namespace std;int n,m,x1,y1,x2,y2;char s[51
2010-11-22 10:20:00
547
原创 sicily 1876 && 1949 不相交集+线段树
<br />//不相交集+线段树//输入 s[1..n]//输入 si,ei s[si..ei]之间最小值与最大值无向连通 //一开始以为直接 si ei连起。。悲剧//找段最小值最大值用线段树 貌似比较慢//不相交集用树#include <iostream>#include <cstdio>#define mx 100001#define __mx(a,b) (a>b)?a:b#define __mn(a,b) (a>b)?b:ausing namespace
2010-11-19 21:23:00
537
原创 sicily 1089 欧拉函数递推
<br />//f[n] = f[n-1] + fai[n] //欧拉函数 质因子个数/n 包括本身//fai[n] = n * (1 - 1/a)*.... a为质因子#include <iostream>#include <cstring>#include <cmath>#define mx 1000010using namespace std;int prime[mx];bool isprime[mx];long long f[1000010]; //lo
2010-11-17 10:10:00
806
3
原创 sicily 1802 线段树
<br />//第二个线段树 //原本想编个 [a+1=b]的树,空间2*Mx 交上去各种RE,将Mx改大各种WA//没办法,改做[a=b]的树,只改了一两个地方。。用小号竟然神奇AC了 = = rp//查下代码发现自己处理的时候 只处理 a+1 = b的地方(本来就这么设计的)//然后初始化的时候把所有节点值置为-1,rp由此诞生#include <iostream>#include <cstring>#include <cstdio>#define Mx 100100
2010-11-16 20:34:00
667
Ubuntu入门教程
2011-11-03
java好书 thinking in java sun认证11本
2011-04-27
windows程序设计 包含第五版中英文两本pdf
2011-04-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人