自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ONE MORE TRY

把该做的做好就好了!

  • 博客(46)
  • 问答 (2)
  • 收藏
  • 关注

原创 hdoj2571【DP基础】

题意:中文题/ 思路:DP的思想要理解,就是从上一个最优状态使被传到的状态也是最优状态。因为很久没有打DP,所以连简单地这样的都wa了6次;(QAQ废话不多说)。 题目要求是从(x,y)到(x,y+1)/(x+1,y)/(x,y*k),那么很明显dp[i][j]=max(前面的状态+dp[i][j]),但是你以为就这样而已么? 1.边界问题,在两个边界上,对于(列)j=1那一列,dp[i][j

2016-05-31 21:24:10 591 2

原创 hdoj2952【DFS联通块】

我觉得还是这种不带回溯的直接搜到底的好玩啊!!!但是要注意边界,记得以前四周要空出来的一道题目,被坑了很久,还是wa到比赛结束!!!这道还是基础题#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <iostream>using namespace std;#define L

2016-05-31 12:45:17 1025

原创 POJ2488【DFS】

阿西吧,搞清楚谁是行,谁是列啊!!!#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <iostream>using namespace std;#define LL __int64#define N 50int d[8][2]={{-2,-1},{-2,1},{-1,

2016-05-30 19:51:59 370

原创 基础BFS+DFS poj3083

//满基础的一道题 //最短路径肯定是BFS。 //然后靠右,靠左,就DFS啦 //根据前一个状态推出下一个状态,举靠左的例子,如果一开始是上的话,那么他的接下来依次就是 左,上 , 右 , 下 //如果我们用数组存一下 左,上 , 右 , 下, //而且你会发现他原来的状态是d,下一个状态就是=((d-1+4)%4+i)%4,其实你比划一下,就会知道左的话就是下开始变,上的话就是左开

2016-05-29 13:08:48 480

原创 hdoj1097

好久没有遇到过这样的题,似乎记得以前完全就是靠规律啊什么的。。。。 然后刚刚看到,这不就是快速幂取膜就好了嘛…#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <iostream>using namespace std;#define LL __int64#define

2016-05-28 16:50:25 499

原创 hdoj4180

题意: 使(a/b-c/d)最小,然后让你求c/d. 我们能说最小the error |A/B - C/D| 然后C,D的范围是 0 < C < D < B。 其实就是:求接近(A/B)分数的最大分数 思路: 因为是神队友搞得exgcd专题,所以往这方面想想。 我们先把那个减式通分得:(AD-BC)/BD;求这个最小若A,B有最大公约数不是1,则化简就是答案。 若最大公约数为1,那

2016-05-28 09:31:23 384

原创 poj1312dfs基础

就是很简单的DFS…因为数据偏小,上去就是干了#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <iostream>using namespace std;#define LL __int64#define mod 9973#define N 100010char ss

2016-05-27 20:58:13 488

原创 hdoj1495简单BFS

#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>#include <iostream>using namespace std;#define LL __int64#define mod 9973#define N 100010int n,m,s;bool vis[102][110][1

2016-05-27 19:12:55 424

原创 hdoj5563(简单几何)

笑死我了,居然一遍就过了。 题意:给你5个点,让你判断能否组成一个五角星; 思路: 利用对称性,应该有很多种方法。弱打的很麻烦。但是那个两点式公式去判断另外一个点是否在一条直线上的那个判断,还是蛮喜欢的 double dd=(double)(xx[i]-onex)/(twox-onex)-(double)(yy[i]-oney)/(twoy-oney); 然后根据题目要求,去使用dd#in

2016-05-27 14:42:09 462

原创 Codeforces Round #354 (Div. 2)

想来想去,还是暴露自己真是菜如狗吧。 A,B都是模拟,Awa是题目看错。 Bwa是根本不想去想想,然后随便写,当然是wa。A题: 题意:给你n个元素,允许交换任意两个元素的位置,但是只有一次,然后让你求1和N的distance。 思路 直接暴力一发直接切啊….(我是理解成了给的是位置…为什么不给位置呢,这样就难那么一点点啊…呸,一样水)code:#include<cstdio>#incl

2016-05-26 22:22:45 374

原创 poj3278

poj3278 手写队列high一high,跑的飞起;#include<cstdio>#include<queue>#include<iostream>#include<string.h>#include<algorithm>using namespace std;typedef long long LL;#define INF 9999999const double pi=3.1

2016-05-25 22:11:00 403

原创 hdoj1827

图的强连通,缩点,求个入度为0的点的数量,和入度为0的点集里面最小的花费和。 //很死板的题,模板题的一样的… #include<cstdio>#include<queue>#include<iostream>#include<string.h>#include<algorithm>using namespace std;typedef long long LL;#define IN

2016-05-25 15:28:56 373

原创 hdoj1106

果然。。。这种一条字符串的处理,还是不熟练,居然wa了四次…….预处理预处理!!!!;然后中间对条件的确定,标记的改变+预处理,不够严谨啊!!!#include<cstdio>#include<queue>#include<iostream>#include<string.h>#include<algorithm>using namespace std;typedef long long

2016-05-24 18:35:56 460

原创 hdoj1394

题意还告诉我们是0-n-1之间的数,那么我们每次把一个数放到后面去,求一下比他大的,还有比他小的;比如:1 3 6 9 0 8 5 7 4 2    逆序数num:22    3 6 9 0 8 5 7 4 2 1  逆序数不就是=num-A(比1小的数)+B(比1小的数); A,B也不难算,因为数本身就是0-n-1的范围,所以比他小的数A=他自己,然后B=n-他自己-1;    #incl

2016-05-24 13:48:20 418

原创 hdoj1272【并查集】

因为是第二遍,所以题目也没怎么看,然后一开始的思路就是如果每次输入两个点的时候判断是不是同一个集合,如果同一个就是No,然后就wa了,想想也是,然后瞄了一下题解,还要判连通…真是蠢死了…多个集合都想不到,然后搞好以后还是wa…这次是在想不通了…然后偷瞄了代码…草泥马只有“0,0”的时候是Yes,哎,就是漏洞百出的思路,这还是得多练啊。。。#include<cstdio>#include<queue

2016-05-23 19:40:36 440

原创 hdoj5698

果然以前不想搞的东西,今天他妈全来了,我要爆炸,除了说操。。。。真是欲哭无泪啊。。。。。//这道题目卡在逆元了。。。。//利用逆元计算1/(n!(m-n)!) //对于正整数a,m如果有ax≡1(modm),那么把这个同余方程中x的最小正整数解叫做a模m的逆元。problem1: //这道题为什么要有乘法逆元呢?模运算与基本四则运算有些相似,但是除法例外。其规则如下: 若a≡b (% p),则

2016-05-22 23:12:50 607

原创 老天待我不薄,又来这么一题POJ1753

还是位运算+BFS系列题;现在这种真是无比喜欢,今天搞了一上午这题。。。因为状态的改变写错了…T.T#include<cstdio>#include<queue>#include<iostream>#include<string.h>#include<algorithm>using namespace std;int head,tail;bool vis[1<<17];int ste

2016-05-21 12:42:11 476

原创 HDOJ4857【拓扑排序】

首先 CLJ ORZ 这道题做了两次,第一次瞎搞。。。 第二次,好吧,骄傲地说水过。。。 题意:不说了; 思路: 题目默认是小的在前面,那么就是反向建图,每次排序拿大的出来;第一次做的时候,我记得我的思路是:还是正向建图,然后每次拿小的出来,天真啊,年轻啊,一个例子:1->3->4和5->2,很明显最终的排序,应该是1,5,2,3,4,其实一开始我还看过题解不理解为什么会这样,我还是理解成

2016-05-20 17:16:57 522

原创 二分匹配ZOJ3646

//题意:类比线代里:把矩阵中的U看作【1】,是否满足一个满秩矩阵 //利用二分匹配就是 //每一行都有相对应的列; #include<iostream>#include<string.h>#include<set>#include<queue>#include<sstream>using namespace std;#define N 220char s[N][N];int m

2016-05-20 14:09:23 531

原创 poj3185//BFS随便切...

//poj 3185 2 //利用bit,通过位运算切换状态 ,然后BFS一下,轻易水过。 3 //说完好像很简单。。。是的,简单是简单,弱第一次以这种位运算姿势过题,太劲。膜思路 ORZ... 4 5 #include<iostream> 6 #include<string.h> 7 #include<set> 8 #include<queue> 9 #include<sstre

2016-05-20 13:19:19 436

原创 poj2239 poj1274【二分匹配】

题意: 就是尽可能的选多的课思路: 把课程和上课的时间看作二分图 跑一跑二分匹配就好了#include<iostream>#include<cstdio>#include<string.h>#include<algorithm>using namespace std;#define INF 0x3f3f3f3f#define N 350int cos[10][20];

2016-05-19 16:59:35 505

原创 每天一水poj1502【最短路】

#include<iostream> #include<cstdio> #include<string.h> #include<algorithm> using namespace std; #define INF 0x3f3f3f3f #define N 110 int ma[N][N]; int n; int dis[N];

2016-05-19 14:21:32 408

原创 POJ1466/HDOJ1068 谈谈二分匹配的时间复杂度

题意: n个学生编号是0-n-1,然后给出他们这些人和一些人的关系。 要你找出最大的人数,要求这些人之间没关系。 咳咳,题目中没说性别的关系TVT 思路: 很明显是一个匹配算法,但是我们得搞出一个二分图; 将每个点拆成两个点,一个当作是男的点,一个当作是女的点,匹配一遍,由于关系是相互的,这样就造成了边的重复。也就是边集是刚才的二倍,从而导致了最大匹配变成了二倍。 所以我们要算的 最大

2016-05-18 15:04:52 633

原创 纯拓扑排序一搞poj2367

/* author: keyboarder time : 2016-05-18 12:21:26 */ #include<cstdio>#include<string.h>#include<iostream>#define N 110int pre[N];int ma[N][N];bool vis[N];int n;void tuopu(){ int cnt=0;

2016-05-18 12:26:25 575

原创 poj1477(水)

犯了一个错误,贡献了一次CE; G++里面没有头文件,用scanf会CE;然而C++就可以。两大cow解释: 最好不要c 的输入和c++的一起用 (特别是关同步的时候)然而好像他们也不是很了解。。貌似c++编译器因为scanf和printf使用比较频繁所以可以省略头文件这个以后在了解吧,以后都要加头文件就对了#include<iostream> #include<algorithm>usi

2016-05-17 14:04:35 442

原创 用动态链表high-poj 1528

//2333333 题目超级水,但是!刚学了链表拿来high一high也不错啊。 #include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <algorithm>#include <queue>#include <math.h>#include <queue>#includ

2016-05-17 13:08:24 397

原创 POJ2446【建图建图】

题意: 给你一个n*n的矩阵,然后再给你几个坑,然后问你能否被1*2的长方形给覆盖;-弱知道了是二分匹配的做法,但是弱还是不会转化,又是在建图上GG了分析: 从国际象棋的那个黑白色理解,这是一张二分图(好像非常有道理)建图:由于是1*2的纸片覆盖,那么这个区域的两个点的(i+j)必然是一个奇数和一个偶数。 先搞好点,我们分别给奇数、偶数点 依次从1开始标号,相邻的就是有一条边; 这波建

2016-05-16 23:17:43 504

原创 一个盗版的优化输入——“外挂”

int in() { char ch; int a = 0; while((ch = getchar()) == ' ' || ch == '\n'); a += ch - '0'; while((ch = getchar()) != ' ' && ch != '\n') { a *= 10;

2016-05-16 22:45:45 496

原创 hdoj1150(最小点覆盖)

题意: 两台机器,A台机器有N种模式,B台机器有M种不同的模式,初始模式都是0 以及K个需要运行的任务(i,x,y),在A台机器是x模式,在B台机器是y模式。 请合理为每个任务安排一台机器并合理安排顺序, 每个任务要有对应A B机器的模式中至少要有一种来运行 每次切换都会付出代价1,使得代价最小, - -求出这个最小值。思路: 这很明显是有张二分图。 点:A模式,B模式;

2016-05-16 22:28:14 650

原创 HDU 2063 过山车+poj 1469

//这是一个非常简单的匹配。其实满感觉这种算法讲道理是可以想到。 //但是我们这种弱就只能先学了匈牙利算法,然后随便嗨这种题目了。没事结果都一样。//这就是匹配算法的DFS形式,有一个BFS形式的,说是适用于稀疏二分图,但是时间复杂度还是(n*m)。。。 //也不是很懂DFS和BFS版有什么差,但是真的有差别,那就上HK算法了,时间复杂度(sqrt(n)*m); #include <iostre

2016-05-16 18:21:10 467

原创 国产spfa瞎几把嗨

//在各种不利的因素下,我居然就这么水过了这题最短路,然而还wa了一次,因为路是双向的。。。 //这题姿势很多啊,但自从会了国产spfa就是最短路能搞的就是spfa,优点太多了!!! //也是瞎几把打,还是在Dev C++上打完编译,执行,然后过了,困得要死。。。 回寝室睡觉;#include<cstdio>#include<iostream>#include<string.h>#i

2016-05-16 16:29:56 583

转载 开挂的map

转自:http://blog.csdn.net/sunshinewave/article/details/8067862#include<iostream>#include<map>#include<algorithm>using namespace std;int main(){ map<int,string>mapstudent; mapstudent.insert(pa

2016-05-15 19:19:51 459

原创 POJ1236【图的强连通(缩点)】

题意: 1.初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。 2.至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。 思路: 我们先把图中的强连通分量缩点 经过缩点后,就可以把强连通分量看成一个个独立的点,这张图可以模拟一下,有离散的点,有一些连起来的点,咳咳,但绝对不是连通的! 题目的问题1那不就是在新

2016-05-15 10:59:34 453

原创 hdu2767(图的强连通)

//题意:问需要添加几条边使得这张图成为每个点都等价(强连通图)我们先把图中的强连通分量缩点 可能他本身就是满足条件,那么直接输出0 经过缩点后,就可以把强连通分量看成一个个独立的点,在这张图上搞一个强连通图,我们可以根据强连通的性质,也就是每个点都要有被指向边和出去的边,那么也就是求一下每个点(强连通分量)的入度和出度,把出度==0的点个数加起来,把入度==0的点个数加起来,比一比谁大,输出谁

2016-05-15 10:40:25 674

原创 POJ 2186【Tarjan算法(模板_缩点)】

//在一张有向无环图G,图G会包含很多环(环里面的点是等价的),//当然可以把环缩成一个点(利用tarjan缩点),//形成一棵树,题目要求是求除他以外的点都指向他,也就是只有一个叶子。//因为一旦有两个,那么两个叶子没有联系,也就不满足除他以外所有点指向了。//那么我们只要在缩点之后的图中,找出出度为0的点,然后输出它里面的点就可以了。#include<iostream>#include

2016-05-15 10:13:25 2247

原创 HK算法模板+小优化(跑的快一点点)

HUST 2604#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring>#include <queue>#include <cmath>using namespace std;const int N = 300010;const int MAXM = 300010;const int INF =

2016-05-13 22:51:02 1126

原创 string类的常用的几个小东西find,substr

头文件:#include<iostream>#include<string>定义:string ss;#include<iostream>#include<string>int main(){ string ss; while(1) { getline(cin,ss); cout<<ss<<endl; int a;

2016-05-13 14:43:41 799

原创 HDU 1230饭前开胃菜

题意不讲了。。 没思路,上去就是干。。。。 两个所谓要加的数直接存到数组,开一个标记的数组,然后直接加,乱搞一波,就好了。 细心一点。#include<iostream>#include<cstdio>#include<math.h>#include<stdlib.h>#include<vector>#include<string.h>#include<algorithm>usi

2016-05-13 13:00:15 392

原创 啊哈哈哈哈,路径路径

POJ - 2250 一步一步谨谨慎慎得就过了。#include<iostream>#include<cstdio>#include<math.h>#include<stdlib.h>#include<vector>#include<string.h>#include<algorithm>using namespace std;typedef long long LL;#defi

2016-05-12 23:03:22 530

原创 ZOJ1004 DFS基础

这道题一看就觉得是DFS,但是,不对,还有栈,这就有点难办了。 DFS+栈一波新姿势。 在DFS里面用栈的思想。 DFS主要就是搜下去, 然后前一个状态标记,搜完以后,还是要保持前一个状态。 然后就把栈往上面一套就好了。 进栈出栈用数组分别标记一下就好了。 一个是出栈,也就是要被进栈的字符串的长度sum#include<iostream>#include<cstdio>#inclu

2016-05-10 23:03:25 890

空空如也

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

TA关注的人

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