自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

The life is like a dfs which can not be backtracked

  • 博客(283)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 基于Jpcap的网络抓包+分析软件

这是我们网络编程与协议分析的课设,由于最近一直在用JAVA写项目,后面就快要写到界面了,所以干脆直接学习用JAVA来写这次的课设,算是一举两得了。课设的要求是获取局域网内的所有数据包,并且分析TCP,UDP,ICMP各个字段,和一些应用层协议(HTTP,DNS等)。要实现在JAVA下抓包,需要利用Jpcap这个包。它实现了JAVA到winpcap的一个中间接口,所以实际上它

2015-03-24 23:38:18 5229 1

原创 15年(上)周赛2(2015-03-15) Problem A Aizu 0121

To 学弟学妹们,经过仔细阅读,首先理解了题目是要我们求给定一个2*4的带号码的方格,每次可以交换 0和相邻的数,问给定起始状态,最少需要多少步交换可以达到目标状态 (不要问我为什么日语这么屌)0 1 2 34 5 6 7典型的八数码问题,这里用到bfs求出所有解,说一下通常解法。从起点状态开始,上下左右扩展所有可能情况,若遇到最终状态,则输出。怎样判断一个状态之前已经扩展

2015-03-24 14:59:02 882

原创 hdu 4063 Aircraft 计算几何+最短路

易知最短路一定是以圆心或者两圆交点作为中间点到达的。所以把这些点拿出来建图跑最短路就够了。现在的问题就是,给定两个点,能否连边 add(a,b,dist(a,b))题目要求,ab线段必须完全在圆上,所以可以求出ab线段和所有圆的所有交点,对于任意相邻两个交点,它们必处于同一个圆内,否则不可达。点的编号用map就够了(一开始我以为double有精度问题无法map,用两个longlong保存然

2014-10-16 16:21:03 1151

原创 poj 1198 hdu 1401 搜索+剪枝 Solitaire

写到一半才发现可以用双向搜索4层来写,但已经不愿意改了,干脆暴搜+剪枝水过去算了。想到一个很水的剪枝,h函数为  当前点到终点4个点的最短距离加起来除以2,因为最多一步走2格,然后在HDU上T了,又发现再搜索过程中,这个估价函数应该是递减的(贪心),再加上这个剪枝就过了。#include#include#include#include#include#include#i

2014-10-04 22:56:56 934

原创 UVA 11212 IDA*

移动一块连续的区间使得数列递增。问最少次数。直接IDA*暴搜,不过我没有想到A*函数,所以就随手写了个连续递增块数作为估价函数,WA了,然后除以2,还是WA,除以3,WA,除以4.。。过了= =#include#include#include#include#include#includeusing namespace std;#define stop system("pau

2014-10-04 18:13:06 1087

原创 FZU 1686 神龙的难题 重复覆盖

转换成0,1模型就好了,注意数据范围#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;const int MaxM = 500;con

2014-10-02 21:51:06 967

原创 ZOJ 3209 Treasure Map DLX

用最少的矩阵覆盖n*m的地图,注意矩阵不能互相覆盖。这里显然是一个精确覆盖,但由于矩阵拼接过程中,有公共的边,这里需要的技巧就是把矩阵的左边和下面截去一个单位。#include #include #include #include #include #include #include #include #include #include #include using

2014-10-02 21:49:34 843

原创 hdu 4406 费用流

这题问题就是当前时刻到底选择哪门课程,易知选择是和分数有关的,并且是一个变化的权值,所以可以用拆点的方式,把从基础分到100分都拆成点,但若这样拆点的话,跑费用流时就必须保证顺序,这样就麻烦了。。观察公式,发现同一门课,分数越高,权值是越低的,所以这是一个单调的,这样的话就可以对每一个分数建一条边,费用流会一条一条的跑。注意将课程放在X集#include#include#include

2014-10-02 14:43:55 827

原创 hdu 4407 Sum 容斥+离线

求X-Y之间和p互质的数的和,典型的容斥问题,求和用等差数列求和,注意首项末项是多少。首先记录下不修改的答案,离线处理,存下询问,输出的时候,遇到一个操作1,就遍历前面的操作,把修改加上去,注意要判重,只保留最后一次修改。#include #include #include #include #include #includeusing namespace std;typed

2014-09-30 00:06:29 905

原创 UVA 10735 混合图的欧拉回路+输出路径

#include#include#include#include#include#include#include#include#include#include#define eps 1e-12#define INF 0x7fffffff#define maxn 22222using namespace std;int n,m;int en;int st,ed

2014-09-26 19:56:28 786

原创 ZOJ 3814 Sawtooth Puzzle 状态压缩搜索

由于一个框框只有4种状态,总状态数只有4^9,bfs可解。麻烦的地方就在于模拟。我的状态的存法是,将初始状态看做000000000,若顺时针旋转一次就+1, 3+1=0。bfs的过程中,需要套一个dfs计算旋转当前框框会影响到哪些框。有个地方要注意,就是目标状态其实不止一种,因为有些框框旋转之后不变,我们必须把所有可能的目标状态都计算出来,样例的中间那个框框就是这种情况。#in

2014-09-07 18:58:43 1586

原创 hdu 4763 Theme Section KMP

题意:找到一个最长的子串,使得原串的前缀和后缀都和这个子串相同,且3者无交叉。对原串求一次next,我们发现若顺着next[n]走下去,得到的前缀一定和原后缀匹配,这样就满足了前后相等。然后只要暴力查找中间是否出现了这个前后缀就够了。理论复杂度n^2,但是实际不会出现那种情况。#include#include#includeusing namespace std;#defi

2014-08-28 10:17:31 696

原创 poj 3694 Network 双连通分量

#include#include#include#include#include#includeusing namespace std;#pragma comment(linker, "/STACK:102400000,102400000")#define maxn 100005#define maxm 2000005struct node{ int to,vis,n

2014-08-27 22:01:34 528

原创 poj 3690 Constellations 矩阵的hash

给定一个n*m矩阵和t个p*q的矩阵,求这t个矩阵有多少个是n*m的子矩阵。矩阵都是01矩阵,只有'0' '*'矩阵的hash,先将每行q列hash,得到一个新矩阵,然后再每列p行hash 【注意行列hash时候取的magic数不能一样,不然很容易冲突,会WA,最好取2个素数】这样原矩阵的每个子矩阵都由一个数字代替了,之后用map判断就够了。注意:不能事先将原矩阵的所有子矩阵h

2014-08-27 19:16:45 1063

原创 ZOJ - 3794 Greedy Driver 最短路

首先正向跑一遍1为起点的最短路,注意松弛过程如果走到加油站则dis=0,并且路上任意时刻dis都不能大于C,判断dis[n]是否然后反向建图再跑一次N为起点的最短路,这样可以求到每个点到n点的最短路。对于每一个可以交易的城市,C-dis1[i]-dis2[i]就是多出来可以卖掉的油。#include#include#include#include#include#includ

2014-08-21 09:36:12 779

原创 HDU 3966 树链剖分

同上,区间更新,单点查询。#include#include#include#include#include#include#include#include#include#include#define eps 1e-12#define INF 0x7fffffff#define maxn 100010using namespace std;#pragma

2014-08-20 15:32:49 779 1

原创 HYSBZ - 1036 树的统计Count 树链剖分 求和+最大值

好水0.0#include#include#include#include#include#include#include#include#include#include#define eps 1e-12#define INF 0x7fffffff#define maxn 31111using namespace std;char str[maxn];str

2014-08-20 14:17:37 858

原创 SPOJ - QTREE 375 Query on a tree 树链剖分+线段树

操作1:修改第k条边权。操作2:询问两点间最大边权。树链剖分,然后线段树维护最大值#include#include#include#include#include#include#include#include#include#include#define eps 1e-12#define INF 0x7fffffff#define maxn 11111

2014-08-20 13:42:08 795

原创 hdu 4966 最小树形图

将每门课等级拆成0,1,2,3...a[i]个点,对每个等级大于0的点向它第一级连边,权值为0【意思是,若修了level k,则level(0~k)都当做修了】将输入的边建边,权值为money[i]。建立根节点,向每个level 0的点连边,权值为0【因为初始level 0的都修了】由于题目要求每门课都必须达到最大level,也就是对应图中根节点能到达所有点,问题就变成了求无向图的最小

2014-08-19 20:34:48 1101 2

原创 POJ 1379 模拟退火算法

求规定平面上一点到已知点的最小距离最大的点。模拟退火的流程是,随机构造几组解作为初始解空间,每次对当前解空间进行随机扩展,若发现更优解则替换。进行的次数由参数人为控制,而随机扩展的幅度也是随着次数逐渐减小的。#include#include#include#include#include#include#include#include#include#include

2014-08-15 20:05:56 900

原创 uva 10780 Again Prime? No Time. 质因子乱搞

求最大的k   使得 m^k 能被n!整除m^k就是让m的每个质因子个数增加了k倍,只要求得n!的质因子能让m增加多少倍就够了。当然这里要取增加倍数最少的。木桶装水的量取决于最短的木板。预处理2-n每个数的质因子情况,由于n有10000,前10000个素数有1000+个,所以维护前缀和不划算。case只有500 所以干脆每次都算一遍。#include#include#inc

2014-08-13 16:13:09 711

原创 poj 2429 Pollard_rho大数分解

先对lcm/gcd进行分解,问题转变为从因子中选出一些数相乘,剩下的数也相乘,要求和最小。这里可以直接搜索,注意一个问题,由于相同因子不能分配给两边(会改变gcd)所以可以将相同因子合并,这样的话,搜索的层数也变的很少了。#include#include#include#include#include#include#includeusing namespace std;t

2014-08-09 20:29:33 839

原创 SPOJ 839 Optimal Marks 最小割 经典 按位建图

胡伯涛论文中的一题,经典建模,由于二进制每一位异或不会相互影响,所以我们把问题转换模型,按位处理。即已知一些点的标号0/1(还有些可以自己任意改),和一些边,边权定义为两端点标号的异或,要求边权和最小的标号方案。我们联想到最小割求的是从源到汇容量最小的边权和。建图:标号为1的和源点相连,容量INF,标号为0的和汇点相连,容量INF,这些边是不能割掉的(这些点标号已经明确)原图相

2014-08-03 14:28:43 1271

原创 hdu 4898 LCP+贪心思维

题意:将一个字符串切成k块,使得字典序最大的那块最小。ORZ  WJMZBMR,几行题解读了一天才懂。快速比较两个子串的大小可以利用LCP(最长公共前缀),比较公共前缀的下一个字符的大小就够了。利用这种思想,首先我们可以预处理所有子串的LCP(后缀数组+记录 O(2nlog(2n))+O(n*n),dp(O(4*n*n)))然后将这些子串利用LCP按照字典序排序,开始二分答案。

2014-08-02 13:02:16 1511

原创 hdu 4888 Redraw Beautiful Drawings 最大流

好难好难,将行列当成X和Y,源汇点连接各自的X,Y集,容量为行列的和,相当于从源点流向每一行,然后分配流量给每一列,最后流入汇点,这样执意要判断最后是否满流,就知道有没有解,而解就是每一行流向每一列多少流量。关键在于怎么判断多解的情况。我想不到啊T_T题解说,找到一个长度大于2的环。想了一想,也就是找到还有剩余流量的环,如果找到了,我就可以把其中一条边的流量转移,因为是一个环,所以它又

2014-07-30 10:58:15 899

原创 poj 1815 Friendship 最小割输出最小方案

这题卡了好久啊,最小割模型很容易想,拆点就行。就像poj的Thieves一样每个点 a拆成 a->a',容量为1。其他相连的点 a'->b ,容量为INF源连接s',t连接汇问题在于输出最小的割集更好的方法我还不会,只能枚举。这里基于贪心的思想,从小到大删边,若删除i->i',会使得最小割变小,则输出i,并且i->i'这条边不要恢复若最小割不变,则恢复这条边

2014-07-28 10:15:09 1352

原创 hdu 3657 Game 最小割

首先经典的奇偶建立二分图(X,Y),对于相邻两点连边2*(X&Y),源->X连边,Y->汇连边,权值w为点权,求最小割。考虑一条路径 源->X->Y->汇若割边选取的是源->X,则表示选Y点不选X点, 答案为w(X+Y)-w(X)若割边选取的是Y->,则表示选X点不选Y点, 答案为w(X+Y)-w(Y)若割边选取的是X->Y,则表示选Y点且选X点, 答案为w(X+Y)-w( 2

2014-07-27 09:38:23 744 1

原创 POJ 3684 Priest John's Busiest Day 2-SAT+输出路径

强连通算法判断是否满足2-sat,然后反向建图,拓扑排序+染色。一种选择是从 起点开始,另一种是终点-持续时间那个点 开始。若2个婚礼的某2种时间线段相交,则有矛盾,建边。容易出错的地方就在于判断线段相交。若s1输出路径的做法可以参考论文2-SAT解法浅析#include #include#include#include#include#include#

2014-07-23 15:48:36 778

原创 HDU 4862 Jump 费用流

建图:将所有点拆成两个点

2014-07-22 20:01:33 730

原创 HDU 4859 海岸线 最小割

强烈建议阅读一下最小割模型在信息学竞赛中的应用其中2.2.2的Optimal Marks一题和此题建模非常相像。在原图外围虚拟一圈‘D’,我们要最大化的周长,就可以等价为最大化相邻的'D'和'.' 的总对数,也就是最大化相邻格子不同类型的总对数。按照论文中的建图方式,我们可以最小化相邻格子不同类型,反过来想,稍微改变一下建图,就可以最小化相邻格子相同类型建图:将地图奇偶建图

2014-07-22 11:35:29 1244

原创 二分图相关题

由于每行最多放一个,每列最多放一个(不能放置的位置不影响攻击,就是因为没注意这句话,把这题当做行列覆盖模型做了好久0.0)所以把行列直接当做二分图X和Y集,可以放置的点的行列连边,求出的完备匹配就是第二个答案。至于第一个答案求关键点,就枚举删除一条边能否任然得到完备匹配,若不行,则是关键点。我的代码c++会WA,不知道为什么,求教啊。#include#include#inclu

2014-07-20 23:27:13 778 2

原创 poj 2369 Permutations 置换水题

找循环节求lcm就够了,若答案是12345应该输出1,被坑了下。#include#include#include#include#include#includeusing namespace std;#define INF 0x3FFFFFF#define MAXN 2222#define eps 1e-6int a[MAXN],p[MAXN],b[MAXN],vis[MA

2014-07-20 16:26:24 822

原创 poj Command Network 最小树形图

规定根节点,求一颗生成树使得权值最小,但由于是有向图,所以最小生成树算法失效。查资料后得知此类问题叫做最小树形图。解决最小树形图问题的朱刘算法,算法核心基于找 最小弧集->找环,消环的思想,来慢慢构造树形图。所有的灵魂都在这张图上。0.0#include#include#include#include#include#includeusing namespace

2014-07-20 15:39:43 677

原创 FZU - 1759 Super A^B mod C 降幂公式

知道降幂公式这题就很好办了 B>=Phi(c)的时候可以降幂然后快速幂计算,否则就直接快速幂计算。这里的大数对小数取模直接利用取模性质按位取就行了。//A^B %C=A^( B%phi(C)+phi(C) ) %C#include #include #include #include #include#includeusing namespace std;typedef _

2014-07-09 12:37:18 1617

原创 poj 3735 Training little cats 矩阵

假设n=3构造矩阵【1,0,0,0】对于g 1操作,构造矩阵(0行i列++)1 1 0 00 1 0 00 0 1 00 0 0 1对于e 1操作,构造矩阵 (i整列清空)1 0 0 00 0 0 00 0 1 00 0 0 1对于s 1 2操作,构造矩阵 (i,j整列交换)1 0 0 00 0 1 00 1 0 00 0

2014-07-09 10:19:51 622 1

原创 poj 3478 The Stable Marriage Problem 稳定婚姻问题

真有意思,题目给出n个男的和n个女的各自喜欢对方的程度,让你输出一个最佳搭配,使得他们所有人的婚姻都是稳定的。所谓不稳婚姻是说,比如说有两对夫妇M1,F1和M2,F2,M1的老婆是F1,但他更爱F2;而F2的老公虽说是M2.但她更爱M1,这样的婚姻就是不稳婚姻,M1和F2理应结合,他们现在各自的婚姻都是错误的。整个算法基于,男性轮流向女性求婚,每次求婚对象都是没有拒绝过自己且自己最喜欢

2014-07-08 14:56:02 1342

原创 poj 2356 Find a multiple 鸽巢原理的简单应用

题目要求任选几个自然数,使得他们的和是n的倍数。由鸽巢原理如果我们只选连续的数,一定能得到解。首先预处理前缀和模n下的sum,如果发现sum[i]==sum[j] 那么(sum[j]-sum[i])%n一定为0,直接输出i+1~j就够了。为什么一定会有解,因为sum从1~n有n个数,而模n下的数只有0~n-1,把n个数放入0~n-1个数里,怎么也会有重复,所以这种构造方法一定没问题。

2014-07-08 08:57:58 802

原创 poj 2154 Color 欧拉函数优化的ploya计数

枚举位移肯定超时,对于一个位移i,我们需要的是它的循环个数,也就是gcd(i,n),gcd(i,n)个数肯定不会很多,因为等价于n的约数的个数。所以我们枚举n的约数,对于一个约数k,也就是循环个数为n/k这样的个数有phi[k]种,证明网上有很多。所以答案就是 phi[k]*(pow(n,n/k)) (k是n的所有约数)由于约数会很大所以不能打表,只能单个算。再由于最后要除以n,如果做

2014-07-06 16:12:12 779

原创 hdu 1812 Count the Tetris polya计数

哈哈哈,简单polya,公式自己推导。不过这题需要用到大数,很久没写Java,调了好久。import java.math.*;import java.util.*;import java.io.*;public class Main{ public static void main(String args[]){ Scanner cin=new Scanner(Syst

2014-07-06 10:04:56 1266

原创 poj 2409 Let it Bead Polya计数

旋转可以分为n种置换,对应的不同等价类分别是gcd(n,i)个i=0时不动,有n个翻转分为奇偶讨论,奇数时有n种置换,每种有n/2+1个偶数时有n种置换,一半是n/2+1个,一半是n/2个#include #include #include #include#include#includeusing namespace std;typedef long long ll;

2014-07-05 20:59:44 747

Jpcap 64位

Jpcap 64位可用,只包括了.dll和.jar

2015-03-24

Dancing_Links

Dancing_Links在竞赛中的应用

2014-01-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除