自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 【矩阵快速幂相乘求Fibonacci 数列】PKU-3070-Fibonacci

赤裸裸的模板题,具体思路就看代码吧!题目#include#include#includeusing namespace std;#define mod 10000struct matrix{ __int64 a[2][2]; void init() { for(int i=0;i<2;i++) {

2012-03-31 23:56:55 888

原创 【tarjan求双连通分量】PKU-3177&3352

PKU上几乎一模一样的两道题,都是用tarjan来求双连通分量,唯一不同的就是3177会有重边的情况,而3352不会有,所以在加了判断重边之后的代码在两题提交都能过。题目:31773323大神题解:点击打开链接#include#include#include#includeusing namespace std;#define N 5005vector

2012-03-31 02:13:18 618

原创 【tarjan求割边】PKU-3694-Network

先给出一个图,然后一次增加一些边,问在每条边增加后桥的数目是多少……因为是刚刚接触有关割的知识不久,所以都是模范人家的代码的,而且网上都是最朴素的代码,加上自己的水,所以时限5000ms的题跑出了3000+ms,真是悲剧啊!题目#include#include#include#includeusing namespace std;#define N 100005vector

2012-03-31 00:27:05 811

原创 【tarjan算法求割点】PKU-1523-SPF

其实题目的数据不够规范,因为它的点可能不连续,而且数据里面一定有根节点1,这个在题目里体现不了!题目#include#include#include#include#includeusing namespace std;#define N 1005vector vec[N];int step,low[N],dfn[N],blg[N];void add(int x,int

2012-03-30 13:23:10 832

原创 【综合图论】PKU-2942-Knights of the Round Table

综合性很强的一道图论题,用到了补图,双连通分量,二分图等几个知识点,这里有某位大牛的神解题报告点击打开链接。题目#include#include#include#include#includeusing namespace std;#define N 1005vector vec[N],lin[N];stack sta;int n,step,cnt,ans,low[N

2012-03-29 19:58:03 475

原创 【计算几何】Codeforces Round #113 (Div. 2)-B. Polygons

其实是很裸的一道几何题,题目要求的就是判断一个小的多边形是否完全且严格(两个多边形不能有交点)包含在另一个凸多边形里面。而解决的方法有很多,我这里用到的就是判断一个点是否完全且严格包含在一个多边形内,判断的时候用到了二分和叉积。题目#include#include#includeusing namespace std;#define N 100005struct node{

2012-03-28 21:14:53 908 1

原创 【树形dp】PKU-3345-Bribing FIPA

dp[i][j]表示在以i为根的树选j个国家的最少费用,具体思维看代码……题目#include#include#include#include#include#include#include#includeusing namespace std;#define FRE freopen("a.txt","r",stdin);#define inf 999999999

2012-03-26 20:54:31 784

原创 【树形dp】PKU-3107-Godfather

题目要求找到这样的一个点,当删除这个点后使得形成的深林的最大的子树的节点最小。而且这些点可能有多个,请一一输出。其实这道题就是1655的翻版,不过在这道题中不能用stl中的vector,因为会超时,所以要用邻接表来存储。题目#include#include#include#include#include#include#include#includeusing name

2012-03-23 14:43:32 426

原创 【树形dp】PKU-2486-Apple Tree

在原来很裸的树形dp上加了些限制条件,不过知道状态转移还是很好做的,但状态转移不好想啊,都是看了人家的结题报告后才知道的!题目#include#include#include#include#include#include#include#includeusing namespace std;#define FRE freopen("a.txt","r",stdin)

2012-03-23 01:00:09 542

原创 【Havel-Hakimi定理】PKU-1659-Frogs' Neighborhood

1,Havel-Hakimi定理主要用来判定一个给定的序列是否是可图的。2,首先介绍一下度序列:若把图 G 所有顶点的度数排成一个序列 S,则称 S 为图 G 的度序列。3,一个非负整数组成的有限序列如果是某个无向图的序列,则称该序列是可图的。4,判定过程:(1)对当前数列排序,使其呈递减,(2)从S【2】开始对其后S【1】个数字-1,(3)一直循环直到当前序列出现负数(即不是可图的情

2012-03-22 09:36:59 689

原创 【搜索+强剪枝】UVA-11882 - Biggest Number

处理得很巧妙的DFS+BFS……题目#include#include#includeusing namespace std;#define FRE freopen("a.txt","r",stdin);struct node{ int x,y;}queue[1000];int n,m;int Max,flag,tatal;char map[20][20];

2012-03-20 23:41:58 1927

原创 【树状数组】PKU-2057-The Lost House

这里有挺完整的题解:http://blog.csdn.net/find_my_dream/article/details/4864657题目#include#include#include#include#include#include#include#includeusing namespace std;#define FRE freopen("in.txt","r

2012-03-16 12:45:22 480

原创 【记忆化搜索+图论】HDU-2833-WuKong

具体题解题目#includeusing namespace std;template T Max(T x,T y){return x>y?x:y;}template T Min(T x,T y){return x<y?x:y;}#define N 305#define inf 999999999int n,dis1[N],dis2[N],dp[N][N],map[N][N]

2012-03-15 20:26:29 746

原创 【dfs+分治】VK Cup 2012 Round 1-C. Abracadabra

这道题的思路真是太神奇了,在参考某大牛的代码后恍然大悟,对其思维无限膜拜啊……用了分治法,具体思路看代码……题目#includeusing namespace std;template T Max(T x,T y){return x>y?x:y;}template T Min(T x,T y){return x<y?x:y;}int dfs(int l1,int r1,int

2012-03-15 14:09:09 573

原创 【深搜+模拟】VK Cup 2012 Round 1-E. Polycarpus the Safecracker

CF上的题考的就是思维啊,而这道题就是要用到十分巧妙的处理……题意:给定一个素数作为一个正方阵的第一行,而下面几行都要补一个素数进去形成一个对称矩阵,即当前矩阵与转置后的矩阵相等。如:239                         9001        307                         0002        977

2012-03-15 01:25:01 1301

原创 【树状数组】PKU-2152-Fire

一道处理的很巧妙的树状数组……都是参考大牛的代码的……题目大牛题解#include#includeusing namespace std;template T Max(T x,T y){return x>y?x:y;}template T Min(T x,T y){return x<y?x:y;}#define N 1005#define inf 999999999

2012-03-14 20:01:23 495

原创 【KMP】ZOJ-3587-Marlon's String

KMP的巧妙应用……题目#include#include#includeusing namespace std;#define N 100005int next[N];long long f[2][N];void getnext(char str[]){ int i,j,len; len=strlen(str); i=0,j=-1; next[0]=-1; w

2012-03-14 00:48:11 636

原创 【双连通分量(tarjan)+树形dp】HDU-2242-考研路茫茫——空调教室

重拾tarjan第一题,不过这题还要用到树形dp……所以是一道很好的综合简单题……题目#include#include#include#includeusing namespace std;template T Max(T x,T y){return x>y?x:y;}template T Min(T x,T y){return x<y?x:y;}#define N 10

2012-03-13 18:23:21 2331

原创 VK Cup 2012 Qualification Round 2部分题解(C,D,E)

CF上的一场资格赛,有二十四小时的时间给我们做,所以为了晋级,我和队友合力弄掉了四题,而最后的E题其实也不难,后来也过了……因为A,B相对较水,所以以下只讲后三题……contestC题:比赛时一致认为暴力不行,比赛后发现很多都是暴力过的……因此,比赛时用到了树状数组……其实是队友做出的,无限YM……不过树状数组真是个好东西啊……#include#include#include

2012-03-13 01:15:10 10917

原创 【树形dp】ZOJ-3326-Tree of Tree

这道题和昨晚在CF上做的一道题很像,都是树形dp。刚开始时,我写了个很烂的代码水过了,时间复杂度为O(n^3).不过一看觉得不对了,人家的都是0ms的,于是去网上找题解优化,时间就降为O(n^2)了,终究还是自己太水了……题目优化前,300ms:#include#include#include#includeusing namespace std;template T M

2012-03-12 21:07:04 579

原创 【dp+dfs】VK Cup 2012 Round 1-D. Distance in Tree

dp+dfs好题,状态转移写得很赞……dp[i][j中的i表示以第几个点为中心,j长度,综合起来表示以i为中心长度为j的边的总数……题目#include#includeusing namespace std;int k;__int64 ans,dp[50005][505];vector v[50005];void dfs(int x,int y){ int i,j,z;

2012-03-12 17:47:05 631

原创 【模拟】ZOJ-3590 -3+1

今天浙大校赛最水的一道题,纯模拟……具体见代码……题目#include#includeusing namespace std;template T Max(T x,T y){return x>y?x:y;}template T Min(T x,T y){return x<y?x:y;}int main(){ long long i,l,n,d,x,a[3];

2012-03-11 20:09:33 956

原创 【IDA*+位运算】PKU-1084-Square Destroyer

估价函数设计为这样:一开始把答案置零,从小正方形开始判断,如果有这个正方形就把答案增加1.,然后删掉这四条边。这样得到的值还是比较准的。然后加上一个非常重要的判定:只要找到一个正方形,就在当前的dfs中枚举组成这个正方形的几根火柴,而不要管其他的火柴棒。理由很简单——这几根火柴棒总得删掉一根。这样做的目的能够剪掉一大票删法相同但是删除顺序不同的“方案”……题目#includeus

2012-03-10 01:24:37 675

原创 【搜索+强剪枝】PKU-1167-The Buses

在黑书上的很好的一道搜索题,开始时基本没什么思路,代码也是按照大牛题解这里敲出来的……题目#includeusing namespace std;int bg,ed,Min,temp,sum[60],use[60],first[60];bool yes(int s,int d){ int i; for(i=s;i<60;i+=d) if(sum[i]<=use[i])r

2012-03-09 00:52:46 637

原创 【IDA*(迭代加深)】PKU-2286||HUD-1667-The Rotation Game

第一次写迭代加深,发觉这货很神气的说……虽然代码都是模仿人家的,不过自己加了一个判断条件,时间立刻减少一半……某大牛对于IDA*的解析:所谓迭代加深,就是在深度无上限的情况下,先预估一个深度(尽量小)进行搜索,如果没有找到解,再逐步放大深度搜索。这种方法虽然会导致重复的遍历 某些结点,但是由于搜索的复杂度是呈指数级别增加的,所以对于下一层搜索,前面的工作可以忽略不计,因而不会导致时间上的亏空。

2012-03-08 21:00:34 554

原创 【记忆化搜索】PKU-2044-Weather Forecast

经过这题,我发现原来用vector做参数是会超时的,难怪没人这样用来啦……题目#include#includeusing namespace std;struct T{ int a[4];};int n,p[370][20],b[5]={1,4,13,16};vector v1[15],v2[15];bool hash[10][370][7][7][7][7];in

2012-03-08 14:11:27 552

原创 【最小表示法】HDU-4162-Shape Number

可以说是最用小表示法求循环串的最小字典序的模板题,所以就直接套用模板了……题目#include#includeusing namespace std;char a[300005],b[300005];int minl(char str[],int len){ int i=0,j=1,k=0,t; while(i<len&&j<len&&k<len) {

2012-03-08 02:48:24 859

原创 【DP】-Codeforces Round #110 (Div. 1)-C. Cipher

个人觉得很神奇的一道DP……题目要求求出给出字符串经过题目要求的变换可以得到多少各不同的字符串。可以证明的是,这些字符串加起来的和都一样,所以dp[i][j]的i表示的是字符串的长度,j表示的是字符串所有字母加起来的和,状态转移方程为dp[i+1][j+k]+=dp[i][j](1题目#include#includeusing namespace std;#define mo

2012-03-02 01:18:48 527

四边形不等式

利用四边形不等式来进行优化的讲解及主要代码!

2012-06-30

空空如也

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

TA关注的人

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