- 博客(29)
- 收藏
- 关注
原创 第一天
完成了用户表(sys_user)及相关表的设计。sys_user:( id int, password varchar, name varchar, sex int, phone varchar, address varchar, type int, email varchar, dormitory int, number int, profession
2017-02-26 22:54:17
241
转载 解决Andriod软键盘出现把原来的布局给顶上去的方法(转)
原文:解决Andriod软键盘出现把原来的布局给顶上去的方法(转)链接:http://blog.sina.com.cn/s/blog_9564cb6e0101g2eb.html决方法,在mainfest.xml中,对那个Activity加:Android:windowSoftInputMode="adjustPan|stateHidden">
2016-09-01 12:04:40
202
原创 acdream 1007 a+b 快速幂取模
给出k和n个ai,计算∑ai^k mod 10000000007的值。#include <iostream>#include <cstdio>#define MOD 10000000007#define ll long long//模乘法,本质就是用位运算和加法实现除法//可以防止做乘法时越界ll mul(ll a,ll b){ ll ans = 0; while(b)
2016-08-20 01:46:33
457
原创 POJ 2288 Islands and Bridges 状态压缩DP
题意:给出n个岛和它们之间联通的m条路径,给出权值的计算方法,求权值最大哈密顿回路的权值和数量。 n<=13. 权值的计算方法为: 1.经过的所有点的权值之和; 2.经过的连续的两个点的权值的乘积; 3.能够组成三角形的三个点的权值的乘积。 根据岛是否走过最多有(1<<13)种状态。 dp[s][i][j] = max{ dp[s][i][j] , dp[s’][j][k] + tmp
2015-11-09 16:02:13
278
原创 ZOj 3471 Most Powerful 状态压缩DP
题意:N个具有能量的原子之间可以互相碰撞,碰撞之后会有一个原子消失并且放出一定的能量。给出原子i和原子j碰撞后原子j消失时释放的能量,求能够获得的能量之和最大为多少。 N<=10. 用0表示存在,1表示消失,则共有1<#include <iostream>#include <cmath>#include <algorithm>#include <cstring>using namespa
2015-11-07 14:46:05
276
原创 病毒侵袭(ac自动机模板)
#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;const int sigma_size = 128;const int maxnode = 500005;int cnt[550],n,m,st;struct Trie{ int ch[maxno
2015-09-25 17:44:58
285
原创 hdu2222
ac自动机入门,基础模板 先看的白书,没看懂。 再找的大牛模板,虽然慢了点,好歹看懂了。#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;const int sigma_size = 28;const int maxnode = 500005;struc
2015-09-25 17:43:58
260
原创 有向图的强连通分量的tarjan算法总结
tarjan算法运用深度优先搜索求得有向图的强连通分量。主要原因是同一个强连通分量中的所有节点必定在深度优先搜索树的一棵子树中。只要找到这样的子树即可。tarjan算法通过一个栈来实现这个算法。 dfn[]:记录深搜第一次搜到的时间 low[]:记录可以到达的第一次搜到时间最早的节点的dfn[]值。 每次将与当前结点相连的点v入栈(如果v不在栈中), 且更新low[u]=min(low[u]
2015-08-19 14:52:25
370
原创 UVa11624 Fire!
在刘汝佳的白书上看到这个题,广搜。需要预处理出火能到达格子的时间,然后用J到达的时间去比较,如果J比火早到,则J可以走。代码借鉴了很多。。。。#include #include #include #include #include #include #define maxN 1005#define inf 99999999using namespace std;str
2015-08-06 11:07:06
455
原创 最小费用最大流:HDU3488
需要将每个点都拆成两个点,然后根据输入的边建立二分图,再建立超源点和超汇点,再y用最小费用最大流就搞定。只要存在完美匹配就可以保证所有的点都在环上,本题其实就是求二分图的最小权匹配。还有一个KM算法可以更好地解决这类问题,抽时间去学学。#include #include #include #include #define maxN 205#define maxM 30005#d
2015-08-03 20:30:11
360
原创 最小费用最大流;HDU1533
//第一次写费用流,有些地方还是不太懂,但是思路很简单。//建立伴随网络后,每次用spfa找最短路然后增广就好了#include <iostream>#include <cstdio>#include <cstring>#include <queue>#include <cmath>#define maxN 300#define maxM 10005#define INF 0xff
2015-08-03 10:45:14
334
转载 欧拉函数
定义: 对于正整数n,φ(n)是小于或等于n的正整数中,与n互质的数的数目; 例如: φ(8) = 4, 因为1,3,5,7均和8互质。性质: 1. 若p是质数,φ(p)= p-1. 2. 若n是质数p的k次幂,φ(n)= (p-1)p^(k-1) 因为
2015-08-01 15:50:03
264
转载 线段树学习
转载自胡浩大牛网站http://www.notonlysuccess.com/index.php/segment-tree-complete/【完全版】线段树很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时觉得挺自豪的,还去pku打广告,但是现在我自己都不太好意思去看那篇文章了,觉得当时的代码风格实在是太丑了,很多线段树的初学者可能就是看着这篇文章
2015-07-30 11:47:16
283
转载 位运算
摘自百度百科含义Pascal语言C语言Java按位与a and ba & ba & b按位或a or ba | ba | b按位异或a xor ba ^ ba ^ b按位取反not a~a~a
2015-07-30 11:41:04
204
原创 POJ1459
在一个电网里,有n个结点,其中有np个发电站,nc个消费者,每个发电站能够产生p[u]的电,不会消耗电;每个消费者可以消耗c[u]的电,不会产生电;给出部分结点之间的供电线路的容量,求这个电网最多消耗多少电. 建立一个源点,一个汇点.将所有电站与源点相连,弧容量为p[u];所有消费者与汇点相连,弧容量为c[u],求最大流.include include include include includ
2015-05-27 21:06:45
401
原创 网络流学习:最大流Dinic算法总结
Dinic算法即连续最短增广路算法. 思路很清晰,代码很简单. 每次用BFS建立层次网络,如果汇点不在层次网络中,则退出算法; 得到层次网络后,利用DFS进行增广.while(BFS()) ans+=DFS(1,inf);BFS的过程中用level数组存各点的层次,相当于将层次网络储存了.bool BFS(){ queue<int> q; memset(level,
2015-05-22 15:04:47
349
原创 网络流学习:(最大流)POJ1149
题意:养猪场有M个猪圈,每个猪圈可以容纳的猪的数量没有限制.养猪场的工人没有钥匙,但是要买猪的客户有若干个猪圈的钥匙.当一个客户来买猪的时候他会把所有可以打开的猪圈打开,客户离开后工人可以将猪圈里剩余的猪分配到任意猪圈.工人预先知道客户的需求和所拥有的钥匙.问养猪场一天最多可以卖出多少头猪. 网络流的题目建图果然恶心…. 建图:建立一个源点和一个汇点,如果一个客户i首先打开一个猪圈,将i与源点相
2015-05-21 21:30:29
780
原创 网络流学习(三)POJ2112
写过一篇二,被吃了,不想在写了. POJ2112,用Floyd+二分+最大流.我的最大流算法用的是Dinic算法,但是不知道为什么写出来就TLE了,..,..,.. 后来发现被书上的代码误导了,书上把层次网络都全部求出来了,其实是没必要的,只要用一个数组对每个点的层次标记就好了. 附上Dinic算法的思路: Dinic算法的思路也是分阶段地在层次网络中增广.它与最短增广路算法的不同之处是最短
2015-05-21 20:18:48
601
原创 网络流学习(一)基本概念
容量网络:设G(V,E),是一个有向网络,在V中指定了一个顶点,称为源点(记为Vs),以及另一个顶点,称为汇点(记为Vt);对于每一条弧属于E,对应有一个权值c(u,v)>0,称为弧的容量.通常吧这样的有向网络G称为容量网络.弧的流量:通过容量网络G中每条弧,上的实际流量(简称流量),记为f(u,v);网络流:所有弧上流量的集合f={f(u,v)},称为该容量网络的一个网络流.可行流:
2015-05-18 19:20:34
1134
原创 POJ2250
最长公共子序列,用map对输入的字符串进行处理之后就只是一个LCS了.最后通过递归求出路径就搞定了.#include #include #include #include #include #define MAXN 105using namespace std;int a[MAXN],b[MAXN];int tem[MAXN];int dp[MAXN][MAXN];int
2015-05-14 20:58:54
534
原创 POJ1753
这个题最好用BFS写,快.但是BFS被我写残了,最后看了题解,用DFS把这个题AC了.在用DFS好理解,用BFS需要二进制压缩,我还不是很明白,具体有关这个题的可以去这两个看看 http://blog.csdn.net/hackbuteer1/article/details/7392245 http://blog.csdn.net/lyy289065406/article/details/664
2015-05-13 20:56:17
428
原创 POj1458
最长公共子序列,我居然没看出来.以前遇到过,只是都交给队友啦,卡了一上午……….. dp[i][j]表示s1串从1到i,与s2串从1到j,这段里面的最长公共子序列为多少.\ dp[i][j]= dp[i-1][j-1] + 1, s1[i] == s2[j]; max { dp[i-1][j] , dp[i][j-1] } , s1[i]
2015-05-08 15:15:44
251
原创 POJ1953
对于一种不能出现连续的1的0-1串,长度为n时,有多少种可能的情况. 记录长度为i的时候,以1结尾的符合要求的串的数量num[i], 则dp[i]=num[i-1]+(dp[i-1]-num[i-1])*2; num[i]=dp[i-1]-num[i-1];#include <iostream>#include <cstring>using namespace std;int dp
2015-05-07 21:13:18
687
原创 POJ2081
水,按题意打表就好了,注意vis[]数组要开大点 就好了.#include <iostream>#include <cmath>#include <cstring>#define MAXN 500005#define LL long longusing namespace std;LL sq[MAXN];LL vis[MAXN*10];void init(){ LL i;
2015-05-07 20:26:12
406
原创 POj1915
BFS裸题,用数组把8个方向存起来,然后直接BFS吧.(第一次写BFS,居然这么顺…)#include <iostream>#include <cstdio>#include <cstring>#include <queue>#define MAXN 305using namespace std;struct node{ int x,y,step;};int n;int dis[8]
2015-05-07 19:44:25
378
原创 csu_1601
并查集. 先将需要去除的边一次性去掉,再一条一条加进来.#include <iostream>#include <cstring>#include <cstdio>using namespace std;#define MAXN 100005*2#define inf 1000000int head[MAXN],parent[MAXN],ad;struct node{ int
2015-05-06 21:03:35
277
原创 csu_1600
爆搜,但是不会…… dfs(num[],n)表示在一个长度为n的数组里任选两个数分别做加减乘除操作,当n等于1的时候判断num[0]是否为24.#include <iostream>#include <cmath>#include <cstring>using namespace std;double num[10];bool dfs(double num[],int n){ if
2015-05-06 21:01:40
236
原创 POJ1579
水题,没看到半点dp的影子.强行算是DP的话,公式已经给出来了,直接写就行了.#include <iostream>#include <cstring>#include <cstdio>using namespace std;int dp[25][25][25];int main(){ int i,j,k; memset(dp,0,sizeof(dp)); for(i
2015-05-05 20:12:30
342
原创 POJ1014 多重背包
今天开始DP了,第一道多重背包,模板题,还是想了很久,太弱了…….. 题意:一行给出6个数,表示从1到6,6个不同权值的个数.求能否将所有权值不分割的分成权值相等的两份. 首先总权值为奇数的肯定不符合要求,接下来就是一个多重背包了. 多重背包的二进制拆分我的理解大概是; 首先将一个数按二进制拆分之后可以用拆分后的数相加得到小于或等于这个数的任意一个数.拆分之后得到许多小堆,接下来就只需要以堆
2015-05-04 21:04:06
380
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人