自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Algobird

蒟蒻。

  • 博客(121)
  • 收藏
  • 关注

原创 四则表达式计算(stl stack, 不带注释)

#include #include #include using namespace std;stack opStack;stack numStack;char exp[205], postExp[205];void trans(char* exp, char* postExp) { char ch; int i = 1, j = 0; ch = exp

2017-03-02 22:48:54 476

原创 C# 所谓的跨类跨线程访问控件

没有系统地学过C#,所以一直以为C#只是拖拖拽拽,后来发现在程序实现过程中需要注意好多,标题说跨类的做法我不是很赞同,一种好的方法应该是把其他类的方法封装起来然后在winFrm里面调用,而不应该让其他的类涉及到任何和窗体程序相关函数。这个是面向对象程序设计中比较重要的一点。但是有的时候,如果设计没做好,就可能真的会遇到要有点跨类调用的情况。就像前几天写了一个基于TCP的C/S自由收发消息的

2015-12-25 22:32:24 1357

原创 HDU4217 Data Structure(线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4217  题目大意:给n和k,以及k个数(序列ki),表示一个1到n的序列,进行k次操作,每次取出序列中第ki小的数,问经过k次操作后,取出的数的和为多少?线段树,segTree维护的是rt节点下区间里有多少个数,每次删除时把包含第ki小的数的区间大小都减1。结果用long long

2015-12-05 22:29:51 628

原创 HDU 5444 Elven Postman(重建二叉树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5444用先序和中序建立二叉树,同时记录父亲节点和方向。然后递归输出解就可以了,用hash记录每个节点的地址,之后不需要再查找。主要是复习一下二叉树重建。#include #include #include #include #include #inclu

2015-09-22 17:46:53 765

原创 排序模板(自用)

/*** Copyright (C) QPSOFT.COM All rights reserved.*/#ifndef SORT_H#define SORT_Hclass Sort {private: int* arr; int arrLen;private: /** 快排随机选取枢轴 */ int SelectPivotRandom(int lo

2015-09-22 17:30:26 524

原创 hdu 3926 Hand in Hand(并查集)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3926题意:给两个图,问是不是(同构)长得一样。然后限制条件是,这两个图虽然不一定是联通的,其子图一定是环或者链。首先如果点或边数目不同,一定不同构,接下来用并查集构造图就可以了,然后对图中的所有点进行排序,按照子图的规模进行排序,如果规模相同,那么环优先或者链优先。合并的时

2015-09-22 17:21:06 561

原创 HDU 5459 Jesus Is Here(斐波那契递推 取模)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5459比赛的时候把每个c的位置的到下一个c位置的距离算出来,想着怎么去求和,结果卡死在上面了。然后后来就一直在想出题者和cff的关系了。。。赛后仔细琢磨了一下,觉得这种题就应该从递推的角度去分析,1A.首先定义dp[i]表示整数i对应的答案,那么就会有dp[i] = dp[i-2] + dp

2015-09-19 21:08:34 1604

原创 整数划分系列问题(动态规划)

今天上算法分析与设计课时,提到整数划分问题,但是因为之前没有很好地理解这一系列的问题。当被老师问到你们做算法的应该会这个问题吧,我当时也不太记得,但是只能硬头皮试着去写了下,用的是brute force,老师果断说我的方法跑不出正确的解,但是课堂上我也没有去解释了。课后自己验证了一下,没有问题,但是看了一下更好的动态规划的解法,顺便把几种整数划分的类型都理解清楚。原题:一个整数划分为多

2015-09-15 17:45:42 1018

原创 POJ 2528 Mayor's posters(线段树成段更新+离散化)

题目链接: http://poj.org/problem?id=2528题目大意,就是在一个区间贴海报,问最后可见(一点点也算)的海报有几种。线段树处理区间更新的做法是对的,每给定一个区间,然后成段更新,更新值为i,i为第i张海报,然后用一个vis数组标记出现的,就可以统计有多少个不同的海报了。但是这题的区间比较大,直接处理会超时,于是学习了离散化的处理方法,其实不用想太多,就是把区间

2015-08-23 13:30:45 684

原创 POJ 3468 A Simple Problem with Integers(线段树成段更新+lazy标记)

题目链接:http://poj.org/problem?id=3468成段更新,和这题差不多

2015-08-22 17:12:11 478

原创 hdu 1698 Just a Hook(线段树成段更新+延迟标记).

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698题意:n个价值为1的棍子,按照输入把区间[x,y]的棍子变成z.问经过q操作后,总价值是多少。线段树成段更新的裸题,学习了lazy的用法。区间更新时先更新到他的下一层左右节点,再往下就等到用到左右节点的时候再往下更新,用一个lazy数组配合pushDown实现。注意:l

2015-08-22 16:10:46 499

原创 hdu 2795 Billboard(线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795题目大意:有一块宽w,高h的通知板,现在要在 上面贴通知,通知为宽wi,高1,通知要尽量靠上在靠上的前提下靠左,问每张通知贴在那一行。用线段树存取区间所能贴的海报的最大宽度。然后查询,如果左区间的海报可以贴下,就搜索左边,不行就搜索右边。然后找到位置贴上海报,更新区间。

2015-08-22 13:56:01 458

原创 hdu 1394 Minimum Inversion Number(线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394题目大意:求数组的逆序数和,然后把第一个元素放最后,求一个新的逆序数和,重复操作,问最小的逆序数是多少。数组大小为n,元素为0-n-1的数,且不重复。题目说了是a permutation of the n integers from 0 to n-1. 。分成两步:先求原数

2015-08-22 11:28:17 431

原创 hdu 1754 I Hate It(最简单的线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754没有任何变型,所以直接贴代码。#include#include#include#include#include#include using namespace std;const int maxn = 200005;const int oo = 0xfffffff;#

2015-08-22 10:20:21 487

原创 hdu 1166 敌兵布阵(线段树、树状数组)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166做的第一题线段树的题(也不全对,之前照模板写了一道st),但是考虑到线段树更新更灵活,而且一般情况下logN不会超时,所以老实打好基本功吧。WA了一次,因为update的时候,用原数组加减给定的值去更新,但是正确的应该是segTree[rt] += val,索性参考网上的把原始数组

2015-08-22 10:18:13 495

原创 POJ 2348 Euclid's Game (博弈找规律 )

题目链接:http://poj.org/problem?id=2348题目大意:给两个数,选手轮流对这两个数操作,操作的方式把大的数减去小的数的k倍,k可以是1,得到新的两个数。谁先得到一个0,谁就获胜。首先可以明确的是,大数小于小数的两倍,那么选手只能直接把大的数减去小的数。否则选手的操作有多种。如果是第一种情况,那么比赛的结果就可以由下一个状态确定了。即如果(a

2015-08-21 15:38:01 685

原创 POJ Flip Game(BFS + 位运算)

题目链接:http://poj.org/problem?id=1753一个翻转会带动四周,求至少要几次才能全白或者全黑,不能输出Impossible。总共也就1 #include#include#include#include#include#include using namespace std;char mp[5][5];bool vis[1

2015-08-21 15:20:48 347

原创 POJ 3480 John(尼姆变型,取光者输)

题目链接:http://poj.org/problem?id=3480题目大意:尼姆游戏,规则改为取光的人输,注意这个不是原来尼姆游戏的逆命题。所以直接异或是不对的。看了大神的博弈知识汇总这一块的知识,也是基本一只半解了。http://www.wutianqi.com/?p=1081看完我的说法如果还不能理解,那么可以好好读读原博客。首先明确总的有S态和T态两个状态,S态的异或不为

2015-08-21 10:48:29 478

原创 POJ 2068 Nim(博弈+dp)

题目链接:http://poj.org/problem?id=2068两个队伍,每队n人, 一堆石子s个,两队轮流拿,n个数,奇数位是1队,偶数位是2队,数值表示这名选手最多可以拿多少个。然后选手按照顺序交替取石子,求是否必胜。题目本身不难,关键能不能想到dp[i][j]去表示轮到第i个人拿的时候,有j个石子。参考了一下大神的博客,才知道这题是dp,看到dp数组就自己可以打了,看来做博

2015-08-21 09:35:46 501

原创 POJ 1704 Georgia and Bob(nim变型)

题目链接:http://poj.org/problem?id=1704题目大意:就是一行格子上面编号从1到n,给定编号的格子上放石头,玩家可以把石头向左移动任意步,但不能跳过阻挡的石头,最后不能移动的人输。突破口:当石头两两挨着时,游戏就成定局。因为一旦前一个人移动了石头,后一个人一定可以移动靠后的石头同样距离保持紧挨。所以问题转换为谁先达到两两紧挨。可以把每两个石头的距离当作是一

2015-08-20 21:37:57 362

原创 POJ 2960 S-Nim(SG+记忆化搜索)

题目链接:http://poj.org/problem?id=2960题目大意:在尼姆游戏的基础上,把能够取的石头个数限定了。用SG函数实现,每个计算出的sg值都等价于原尼姆游戏中的一堆的石子数。某一堆的石子数取走一定数量k后可以得到一个新石子堆对应的sg值,也就是原石堆的所有分支的其中一个。这时候后手可以根据实际情况处理。sg值是子分支中没有出现过的最小整数。比如 原sg

2015-08-20 21:25:12 440

原创 POJ 2484 A Funny Game(规律)

题目链接:http://poj.org/problem?id=2484题目大意:一个圈的n个珠子,可以一次取走一个或者两个连续的。先取完者获胜。注意:有三个连续了,取走中间的,那么剩下两个算不连续的。解:nn>2的时候,对于任意一个环,先手取完后,后者总能够取走一定某个位置的一个或者两个珠子,使得它变成两个完全相同的串。也就是后者总能够创造出成对匹配的串,这样后者必赢。

2015-08-20 10:33:03 291

原创 POJ 1067 取石子游戏 (威佐夫博弈)

题目链接:http://poj.org/problem?id=1067看解析看得也很辛苦,当时做之前是先知道了有这个博弈的,所以偷懒了。不过知其然还要知其所以然吧。http://poj.org/showmessage?message_id=48161 写的挺详细的,看不看得懂就要靠天赋了。。。#include#include#include#include#incl

2015-08-20 10:20:44 362

原创 POJ 2425 A Chess Game(SG函数的有向图博弈游戏)

题目链接:http://poj.org/problem?id=2425题目大意:就是nim游戏的有向图形式,输入一个n,接下来n行表示0-n-1为起点的有向边,每行的第一个数表示与起点相连的终点编号。接下来就要在有向图的顶点上方棋子。之后有一系列的询问,询问以m开头,便是有m个棋子,之后是棋子所在的顶点编号。两人轮流沿着有向边移动棋子,最终不能移动棋子的输。m为0结束询问。这题可以

2015-08-20 10:00:22 1217

原创 HDU 2594 Simpsons’ Hidden Talents(KMP求前缀后缀子串匹配)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594题目大意:给定s1,s2,问s1的前缀子串和s2后缀子串的最大匹配时多少。先拼在一起,然后求next,但是next求得的值的最大匹配串可能超过s1或者s2,所以要不断嵌套next数组来达到最大的但是又不超过s1和s2的子串。#include#include#include#inc

2015-08-19 21:03:35 523

原创 HDU 2087 剪花布条(KMP匹配裸题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2087这题。。。。不多说了。#include#include#include#include#includeusing namespace std;char a[1005], b[1005], Next[1005];void getNext(int len){ int i

2015-08-19 20:48:44 328

原创 HDU 1358 Period(KMP求前缀子串的循环次数)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1358题目大意:给定一个字符串s,然后对于所有的前缀子串,如果是一个周期循环的子串,那么就输出他的长度和循环了几次。解:如果长度为k的串是以t为周期循环的,那么之后存在一个i满足next[i]  * 2 > l,即超过一半的长度且next[i] = k。那么可以知道i串的循环周期是和n长度为k的

2015-08-19 20:43:00 382

原创 HDU 3336 Count the string(KMP+Next数组递推)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336题目大意:给定一个字符串,求所有前缀串在母串中匹配的数量,包含前缀串本身。注意一个坑点,虽然没有没坑。比如aaaaaa,前缀串aa的匹配数目为4个。包括aaaaaa, aaaaaa, aaaaaa, aaaaaa必须保证与前缀串匹配的串与之不交叉。先求KMP的next数组,

2015-08-19 20:15:32 332

原创 HDU 3746 Cyclic Nacklace(KMP最小循环子串)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746题目大意:给定一个字符串s,求在左边或右边至少添加几个字符,可以形成一个循环。解:首先明确在左边和右边添加是一样的,反过来就可以了。其次考虑几种情况:假定字符串长度都为n,1、s1…s2,对于任意相同长度的s1和s2两个子串,s1均不等于s2。即Next[len] = 0,需要

2015-08-19 15:59:15 332

原创 POJ 2505 A multiplication game(找规律博弈)

题目大意:给一个数N, 然后初始值给1,两个人轮流把这个数乘2-9的数,谁先达到这个数就必胜。问必胜方。解:网上的解释大部分都是通过枚举得到的结论,并没有详细的解释和充分的理由。http://poj.org/showmessage?message_id=41269这个poj讨论版的解释挺不错的,可以参考一下。

2015-08-18 11:47:59 349

原创 POJ 2975 Nim(nim博弈)

题目链接:http://poj.org/problem?id=2975题目大意:就是要求nim博弈游戏中,对于当前的局势,有几种方法可以得到必胜态。解:其实就是要得到所有值异或为0的情况。假设其中一堆有x个石子,取掉若干个后剩下k个,若a^b^……^s^k=0,那么k = a^b^……s,所以只需要取走x-k个(x>k)就可以了。可以通过a^b^……s^x^x得到a^b^……s。所以一

2015-08-18 10:58:37 329

原创 POJ 2234 Matches Game (nim博弈裸题)

题目链接:http://poj.org/problem?id=2234博弈论这一节的题目其实不太好写博客的,因为sg函数也不太会,只能做一些裸题,或者稍微变形的题目。但是nim博弈确实很神奇,拆分成二进制,然后只要能两两消去,那么后手肯定必胜。就是所谓的异或运算了,网上nim博弈很多,就不罗嗦了。#include#include#includeusing namespace std;

2015-08-18 10:38:17 390

原创 2015-我的蓝桥之旅

为期三天的蓝桥杯之旅已经结束了,现在回想起来感慨颇多,不仅仅只是停留在比赛的赛题层面上,还有这次去往北京行程中一些点滴小事,让我更全面地看待自己,同时也感谢学校给了我这么一次宝贵的机会。  这是我第一次去北京,虽然是夜里的火车,可是躺在睡铺上却怎么也睡不着,让我想到了两年前的高考前夕的夜,这样折腾到了半夜,虽然夜里还是醒来了几次,但是也算是睡了一觉。第二天早上就到了北京,春夏之际的北京也并

2015-08-18 10:27:43 469

原创 poj 2186 Popular Cows(targan算法)

题目链接:http://poj.org/problem?id=2186题目大意是有n只牛,如果a受到b的欢迎,b受到c的欢迎,那么a就会受到c的欢迎,即欢迎是传递的。那么问有几头牛是受到其他所有牛的欢迎。首先需要把相互受欢迎即强连通的牛缩成一个点,即当作一只牛,如果我们假定边的指向a->b表示a受到b的欢迎,那么满足条件的前提是入度为0的点一定只能有一个,如果有多个就说明每只牛都不

2015-06-25 18:59:54 412

原创 hdu 4324 Triangle LOVE (targan判连通)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4324这题也是比较裸的题,判断是否存在超过三个节点的强连通分量,由于题目说不存在两个节点的强连通分量。直接统计连通分量,如果总数小于初始的顶点数的话,就表示存在超过三个节点的强连通分量。代码:#include #include #include #inclu

2015-06-25 18:53:07 376

原创 hdu 1269 迷宫城堡(tarjan判连通)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269本题是判断连通分量个数是否为1,裸题。代码:#include #include #include #include using namespace std;const int maxn = 10005;const int maxm = 100005;int n, m;

2015-06-25 18:48:38 341

原创 POJ 1236 Network of Schools(Targan缩点)

题目链接:http://poj.org/problem?id=1236题目大意是,给定一个有向图,第一问是要从几个点出发才能保证所有的点都被访问到,第二问是需要加几条边才能保证从任意点出发,所有的点都能被访问到。先进行缩点,然后:第一问:所有入度为0的点。第二问:使一个DAG图变为强连通图需要加的边的条数为入度为0的点和出度为0的点中较大的,单纯考虑入度和出度是不对

2015-06-25 07:58:10 360

原创 poj 2762 Going from u to v or from v to u(targan缩点+拓扑排序)

题目链接:http://poj.org/problem?id=2762给定顶点和边的关系,问是否对于任意的顶点x和y,总存在x到y的路径或y到x的路径,一开始看成和的关系,判断只有一个连通分量。如果是或的话,就是对于缩点后的图看看能不能找到一条路径贯穿所有的点,用拓扑排序更新出到达每个顶点最多能有几个顶点。然后如果顶点个数=强连通分量数,那么就是符合题意的。附上测试数据和代码:

2015-06-25 07:03:21 332

原创 poj 3249 Test for Job (拓扑排序)

题目链接:http://poj.org/problem?id=3249给出每个点的价值以及有向边,然后求所有路径中,价值和最大的路径,问最大价值为多少。路径要求从入度为0的点出发,出度为0的点停止,价值可能为负值。直接用拓扑排序,并不断向后累加每个点在价值,最后找出度为0的点的价值就可以了。#include #include #include using n

2015-06-23 20:33:30 382

原创 POJ 2718 Smallest Difference(DFS或者贪心)

题目链接:http://poj.org/problem?id=2718就是求给n个数字,n小于10,然后问组成两个数差值最小是多少,可以用dfs,但是做的时候想到贪心,但是偶数的情况我没有想到特别好的贪心方法。奇数个:排序,如果第一个为0,和第二个交换,然后取前n/2+1个组成数,后n/2个逆序组成数,相减就可以了。偶数个:两个的时候特判,然后取差值最小的两个且都不为0的数,大

2015-06-23 20:21:47 803

空空如也

空空如也

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

TA关注的人

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