自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(136)
  • 收藏
  • 关注

原创 hdu 5807 Keep In Touch

思路:普通的状态转移复杂度是n^6,这里学习了别人的做法,分段dp, dp[i][j][k][0]代表下一步走idp[i][j][k][1]代表下一步走jdp[i][j][k][2]代表下一步走k状态转移部分如下 if (f[i][j][k][0]) for (int u = 1; u < i; ++u) if (e[u][i])

2016-08-07 10:58:53 418

原创 hdu 5687 百度之星2016 C

思路:前缀树的使用之前似乎很少写过前缀树,练习下借鉴一篇博客上的代码,but他的代码是错的啊。。。。 坑了我好久, 坑就是删除的时候要先查询出该前缀有多少串可以匹配,设该值为num,删除过程中中间经过的点要减去这一num,最后一个点V置0,并且next数组全部赋值为-1#include #include #include using namespace std;stru

2016-05-19 22:50:23 782

原创 uva 11181

思路:条件概率公式+枚举主要公式: p(a|b)=P(ab)/p(b)#include #include #include #include #include using namespace std;vector q;double dp[200],p[200],ans;int main(){ //freopen("in.txt","r",stdin);

2016-05-19 16:36:17 514

原创 coj 1597

Description薛XX的低IQ是个令人头疼的问题,他的队友深受其害。幸运的是,薛XX非常有钱,所以他买了一些可以提高他的后代的IQ的药。这种药有三个属性,A,B和P。当薛XX使用这种药的时候,他的基因会发生变化,所以他的儿子的IQ也会跟着变化。假设薛XX的父亲的IQ为X,薛XX自己的IQ为Y,那么薛XX的儿子的IQ为(A*X+B*Y) mod P。薛XX的孙子的IQ依次类推。

2016-05-15 01:17:12 512

原创 ACM小组的队列 coj 1225

DescriptionACM小组每次出去活动都要排队,但是大家总是不想按照任何规则来排好这个队伍(大概是因为每个人都比较有个性,例如Gestapolur),所以每次队 伍都是乱的,不过Samsara今天突然想要计算一下队伍中按身高升序排列的最长子队列,而且还想知道最长的子队列的个数。所谓子队列,就是在队列 A_1...A_i...A_n中的一个队列A_p[1]...A_p[2]..A_

2016-05-10 00:24:52 602

原创 poj 2234 Matches Game

思路:这里摘自一篇博客的一部分 这里是博客链接取火柴的游戏题目1:今有若干堆火柴,两人依次从中拿取,规定每次只能从一堆中取若干根, 可将一堆全取走,但不可不取,最后取完者为胜,求必胜的方法。 题目2:今有若干堆火柴,两人依次从中拿取,规定每次只能从一堆中取若干根, 可将一堆全取走,但不可不取,最后取完者为负,求必胜的方法。嘿嘿,这个游戏我早就见识过了。小时候用珠算玩

2016-01-18 20:27:14 419

原创 zoj 3057Beans Game

思路:dp[i][j][k]=0代表必败态,为1时必胜,由博弈论的知识可知有必败态操作一次得到的状态一定是必胜态,然后我们倒着推出所有的必胜态就可以了,注意题目的内存限制比较严格,因此数组用bool型 。这是我的第一道博弈论的题目,还有许多东西不清晰,这里放一个讲解的比较详细的链接博弈论题目小结,里面还有有一些资料或博客的链接,都很不错。#include #include #inclu

2016-01-18 16:59:09 538

原创 coj1261: 水仙花数

思路:先打个表将所有的水仙花数求出来,然后每输入两个数从头开始查就可以了#include #include #include #include using namespace std;int a[100000];int tmp[10000];int main(){ int num = 0; for(int i=1;i<10;i++) for(int j=0;j<10;j

2016-01-14 02:33:07 484

原创 coj1254: 开机

思路:从第二台机器开始排序,每次都先开启时间最长的,并及时更新最大值#include #include #include #include int a[100000];using namespace std;int main(){ //freopen("in.txt","r",stdin); int n ; while(scanf("%d",&n)!=EOF) { f

2016-01-14 02:16:23 347

原创 coj 1259: 跳跳

思路:题目意思比较明确,思路是采用优先队列每次取出次数最小的点进行bfs,这里要注意一个坑,(因为这个wa了n发。。。)遇到2~9的点时,要立即入队所有值相同的点,而不是先把这个点入队等过一段时间排到这个点时再把相同值的点入队,这里举一个简单的例子S0033E000这里第一次入队(0,1)位置的0和(1,0)位置的3,如果不将另一个3入队,出队先出0的话,这时另一个3就会被访问,但

2016-01-14 02:14:06 415

原创 coj1098: Happy watering

思路:采用贪心的策略,每次都选择最矮的书浇水,高度差为0时或k次浇水后结束,每次更新最短距离#include #include #include #include #include using namespace std;struct note{ int h,d; bool operator < (const struct note &tmp)const {

2016-01-13 16:04:14 340

原创 csuoj 1559 外卖的撕‘哔’大战

思路:对优惠按满的钱进行排序,然后分别计算出每一次点外卖的钱,最后相加,详见代码#include #include #include #include using namespace std;struct note{ int x,y;};int cmp(note aa,note bb){ return aa.x<bb.x;}note a[100000],b[1

2016-01-13 15:28:18 921 1

原创 poj 2109

题意:给出两个数字n,p,求k使得k的n次方等于p。题目中p的值很大,容易想到的是二分求k,使用高精度,在看了别人的题解后,才知道这里可以用double型代替高精度,于是代码就变得十分简单#include #include #include using namespace std;int main(){ //freopen("in.txt","r",stdin); d

2016-01-13 13:39:57 308

原创 php杂技

1:win系统如何重启Apachewindows+r 运行输入services.msc,便可以找到Apache,然后右键重启2:如何找php.ini文件的路径在php文件写入保存,用浏览器查看,会看到详细的php配置信息,php.ini文件位置也在其中。

2015-11-30 14:59:07 335

原创 poj 2965 The Pilots Brothers' refrigerator

思路:和上一题poj1753非常类似,思路大致相同,所以我代码直接用的1753题的稍微改了下,输出看起来有点不自然,另外这里要打印路径,所以也不能选择bfs了(poj1753是可以用bfs的)需要注意的是,本题非常容易超时,之前因为翻转函数写的有点啰嗦就超时了,改简洁之后才907ms惊险飘过#include #include #include #include using

2015-10-22 23:43:29 293

原创 poj 1753

思路:根据分析每个格子只能翻转一次,翻转多次无意义,共16个格子,最多2^16次方个状态,可以枚举加dfs,具体见代码开始看题毫无头绪,然后就直接找题解了,这个以后要改啊。。。 感觉dfs的回溯返回自己理解的还是不够透彻,还是要多多思考这其中的关系#include #include #include #include using namespace std;char map[

2015-10-22 23:04:57 366

原创 csu 1303 Decimal

DecimalTime Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1103  Solved: 141[Submit][Status][Web Board]Description任意一个分数都是有理数,对于任意一个有限小数,我们都可以表示成一个无限循环小数的形式(在其末尾添加0),对于任意一个无限循环小数都可以转化成一个分数

2015-10-21 17:46:15 406

原创 Codeforces Round #326 (Div. 2) B

B. Duff in Lovetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputDuff is in love with lovely numbers! A positive integ

2015-10-20 22:48:31 430

转载 unique() 去重函数

转自点击打开链接unique()函数是一个去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个),还有一个容易忽视的特性是它并不真正把重复的元素删除。他是c++中的函数,所以头文件要加#include,具体用法如下:    int num[100];   unique(num,mun+n)返回的是num去重后的尾地址,之所以说比不真正把重复的元素删除

2015-09-23 23:06:17 370

原创 poj 2528 Mayor's posters

思路:线段树加离散化处理。(参考自kuangbin大牛)首先常规做法  以【8 10】【 3 4】【 7 10】为例,预处理线段树布尔值全为false,从后往前更新,先检查【7,10】区间内是否存在false,存在即返回true,然后此区间全部更新为true,然后依次【3,4】 【8,10】,注意到【8,10】区间内全部为false,返回false。根据体重的数据范围,,这样毫无疑问会MT,所

2015-09-23 23:00:57 325

原创 poj 3468 A Simple Problem with Integers

思路:线段树的初步进阶使用,主要思想是每一个节点中增加一个inc储存增加的量, 具体使用方法详见代码(参考自kuangbin大牛)#include #include #include #define MAXN 1000000using namespace std;typedef long long ll;struct note{ long long ll,rr;

2015-09-23 20:36:02 301

原创 poj 3264

思路:线段树求区间最大最小值#include #include #include #define MAXN 300000using namespace std;typedef long long ll;ll a[MAXN];struct note{ int rr,ll; long long mm,nn;}q[MAXN*3];void build(in

2015-09-23 17:49:51 357

原创 hdu 1166 敌兵布阵

基本的线段树题目,练一下代码,此外代码中包括两个查询函数,思路有几点不同之处#include #include #include #define MAXN 600000using namespace std;struct note{ int rr,ll; int s;}q[MAXN*3];int a[MAXN];void build(int i,int

2015-09-23 17:21:48 349

原创 hdu 1285

思路:基本的拓扑排序问题,掌握好拓扑排序的方法就行啦#include #include #include using namespace std;int map[1000][1000];int in[1000];int ans[1000];int n,m;void slove(){ int k=0; for(int t=0;t<n;t++) {

2015-09-18 19:26:17 298

原创 hdu 1800

思路:可看做求所有出现的数中次数最高的 次数,用hash的方法, 这里练一下模板#include #include #include #define MOD 1000007#define base 31#define N 1000009using namespace std;struct note{ int v,cnt,next;}_hash[N];int k;

2015-09-18 17:44:11 378

原创 hdu 1213

思路:并查集的基本应用#include #include #include using namespace std;int f[100008];int find(int x){ return x==f[x]?x:f[x]=find(f[x]);}int init(int n){ for(int i=0;i<=n;i++) f[i]=i;

2015-09-15 20:04:45 315

原创 uvalive 3644 X-Plosives

思路:简单的并查集应用,两个点有相同的祖先是组成环,会引起爆炸,不能放,num++。#include #include #include using namespace std;int f[100008];int find(int x){ return x==f[x]?x:f[x]=find(f[x]);}int init(){ for(int i=0;i<1

2015-09-15 19:42:51 362

原创 uva 11997

题意是比较容易理解的,直接枚举的话会有k的k次方,肯定超时,开始我想每次取最小的n个值,与接下来的n个数的分别相加,这样复杂度大概是n的3次方,然后TLE。。。。翻阅了下白书,书中将两行之间相加的过程进一步化简,先从小到大排序,分别取第一行的n个数,与第二行的第一个数相加,进入优先队列(小的在前),取队列中第一个值,并进队后面一个数(具体理解见代码),这样取出n个数,即使这两行合并的最小的

2015-09-15 19:18:42 492

原创 uva 11995 I Can Guess the Data Structure!

思路;分别模拟三种数据结构,观察输出是否对应#include #include #include #include #include using namespace std;int main(){ //freopen("in.txt","r",stdin); int n; while(scanf("%d",&n)!=EOF) {

2015-09-14 22:51:00 341

原创 UVA 11911

思路:将map与vector结合起来,存入每一个值的位置,相应的第几个也就是vector的下标+1#include #include #include #include using namespace std;int main(){ //freopen("in.txt","r",stdin); int n,m; while(scanf("%d%d",

2015-09-14 22:49:11 464

原创 uva 12821 Double Shortest Paths

DescriptionInputThere will be at most 200 test cases. Each case begins with two integers n, m (1<=n<=500, 1<=m<=2000), the number of caves and passages. Each of the following m lines

2015-09-11 22:45:09 463

原创 hdu 1056 HangOver

水题,注意要用double类型,float并不能过#include #include #include #include using namespace std;double a;int main(){ //freopen("in.txt","r",stdin); while(scanf("%lf",&a)!=EOF) { // printf("%lf\n",a);

2015-09-06 21:49:54 336

原创 hdu 1058

点击打开链接题意:只有2,3,5,7这几个质因子的数成为丑数,找出前5842个丑数题目较水,这里说一点需要注意的地方,计算所有丑数时的if语句是并列的,不能用else if  这种形式,目的是为了排除相同的情况,具体可用 2,3分别乘以3 , 2进行一下推理#include #include #include #include #define min4(a,b,c,d) mi

2015-09-06 21:14:30 305

原创 hdu 1532

基本的网络流问题,套个模板就ok了,这里给出两种算法,bfs和dfs#include #include #include #include using namespace std;const int N=1100;const int INF=0x3f3f3f3f;struct note{ int to; int cap; int rev;};vector v[

2015-09-05 21:56:12 291

原创 coj 1256 天朝的单行道

Description    在另一个平行宇宙中,有一个神奇的国度名叫天朝。天朝一共有N个城市(标号分别为1, 2, …, N),M条道路,为了方便交通管制,天朝的M条道路都是单行道。    不久前天朝大选,小Q当选了天朝的总统。小Q家住在城市1,但天朝的办公地点在城市N,于是为了便于工作,小Q决定举家从城市1搬迁到城市N去居住。然而小Q惊奇的发现,现在并不存在从城市1出发到城

2015-08-20 22:26:27 423

原创 poj 1724 ROADS

spfa算法的基本应用#include #include #include #include using namespace std;struct edge{ int rp,value,cost,next;}ee[40000];int first[40000];struct note{ int rp,len,cost; bool operator

2015-08-19 23:19:22 332

原创 poj 1201 Intervals

思路:运用spfa算法求差分约束问题差分约束相关知识点:这里设的d[i]代表【0,i)这个区间取值的个数,那么在 【a b】区间 中取出至少c个数可表示为 d[b+1]-d[a]>c,这就构成了一种边,另外我们易知  (其实开始我完全不知道。。。) 0=#include #include #include #include #define I

2015-08-19 23:17:37 328

原创 uva 11090 Going in Cycle!!

思路:二分平均值,运用spfa算法判负环#include #include #include #include #define INF 0x3f3f3f3fusing namespace std;double p=1e-8;int n,m;double l,r;int v[3000],u[3000],vis[3000],first[3000],nex[3000],nu

2015-08-19 23:01:49 351

原创 hdu 1874 畅通工程续

思路:spfa算法#include #include #include #include #include #define INF 0x3f3f3f3fusing namespace std;int v[4000],u[4000],d[4000],first[4000],nex[4000],w[4000];int vis[4000];int e;void add(int a

2015-08-19 22:59:08 333

原创 hdu 1875 畅通工程再续

思路:最小生成树,prime算法,这里为了计算方便,距离先存为int型,最后开方时转换为double,#include #include #include #include #define INF 0x3f3f3f;using namespace std;int n,m;//vector g[2000];int g[2000][2000];bool vis[2000];in

2015-08-19 22:57:40 344

空空如也

空空如也

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

TA关注的人

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