HDU
文章平均质量分 77
ACM_devil
这个作者很懒,什么都没留下…
展开
-
2013长春网络赛
Stone表示看错题了,一直在纠结第一个样例。就是普通的巴什博弈。每次取的必须满足1 所出的数字>=N的时候就输了。好吧:#include #include #include #include #include #include #include #include #include #include #include #include #in原创 2013-09-28 18:40:57 · 900 阅读 · 0 评论 -
HDU3746-KMP循环节
题目:题目链接 题意:给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数。 例子:abcabc 已经循环2次,添加数为0abcac 没有循环2次,添加字符abcac。数目为5.abcabcab 已经循环过2次,但第三次不完整,需要添加数为1 next函数求法: void getnext(const char *s){ int i原创 2013-08-31 15:28:44 · 734 阅读 · 0 评论 -
HDU4101-很好的BFS题目(虽然结果是判断输赢)
题目:题目链接 题意:题目的意思就是说两个人轮流玩游戏,给你一张地图,这个地图中间有一点-1代表宝藏,Ali and Baba轮流走路,如果某一个人能够直接走到宝藏的话,那么他就赢了。地图上其它的点0代表空地,数字代表当前地点的石子,当某一人拿石子的时候,他只能拿走一颗。问你谁最后能拿到宝藏; 分析:宝藏位于-1的位置,那么如果Ali一开始的时候就可以通过外围的某原创 2013-08-29 14:48:29 · 918 阅读 · 0 评论 -
HDU4217-线段树
题目:题目链接 题意:题目意思就是给你1--N的数,然后在给出K个数,每次取出地Ki小的数字,取完之后把这个数字去掉,问最后取出的这K个数字的总和是多少? 分析:以前没有接触线段树之类的,碰到的话肯定会直接暴力写,必T无疑,接触线段树,那么这种题目还是得用线段树来写。对线段树不熟,这道题目就是一个模版题吧: #include #include #include #原创 2013-08-29 15:54:07 · 666 阅读 · 0 评论 -
HDU4206-巧妙推理
题目:题目链接 题意:对于直角三角形三边:x^2-y^2=z^2;题目中给出z^2,要求出最小的一组整数x和y。分析:1:将等式变形(x-y)(x+y)=z^2;2:令A=x-y,B=x+y,T=z^2;于是A*B=T; x=(B+A)/2,y=(B-A)/2; 3:A和B是 T 的两个约数,只要A和B同时为奇数或者同时为偶数(B-A是偶数),就能保证x,y是整原创 2013-08-29 11:03:12 · 832 阅读 · 0 评论 -
HDU4111-2011成都
题目: 题目链接 题目意思:题目转换为熟悉的石子游戏就是,这里有m堆石子,每次可以把任意两堆合并,或者从某一堆中拿走一个,是不能操作谁就输了。 由于总数不变,最终总是要一个个拿完。那么有机会获胜的一方,肯定是先要把所有的合在一起,那么最终就拼奇偶数了。所以双方都要合并。而且如果没有某堆只有一个的话,对方是阻挡不住的,没有取完,便被合并了。所以就要考虑某堆只有一个原创 2013-08-27 15:18:27 · 989 阅读 · 0 评论 -
HDU1536-nim
题目:题目链接 就是SG的本质,mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。 #include #include #include #include #include #include #include #include原创 2013-08-27 16:13:25 · 752 阅读 · 0 评论 -
HDU1404-sg
题目:题目链接 题意:一串由0~9组成的数字,可以进行两个操作:1、把其中一个数变为比它小的数;2、把其中一个数字0及其右边的所以数字删除。 两人轮流进行操作,最后把所以数字删除的人获胜,问前者胜还是后者胜。字符串长度为1-6,前者胜输出Yes,否则输出No. 分析:1是必败点那么所有被操作成1的数都是必胜点,以此类推由必败点按找游戏的规则反方向推出所有的必胜点原创 2013-08-27 14:47:57 · 916 阅读 · 0 评论 -
HDU4313-2012多校二-最小生成树,集合划分
题目:题目链接 该题就是考的是如何花最小的代价使得一棵树划分开且不含后同类节点。我们将边按从大到小的顺序排好序,然后就是看是否这条边能够使得两个同类的节点连在一起,如果能够的话,那么这条边就是我们要选择的划分边。首先将特征值保留起来,并通过并查集扩充给标记点。 #include #include #include #include #include #includ原创 2013-08-26 22:27:00 · 728 阅读 · 0 评论 -
HDU4323-2012多校三-编辑距离
题目:题目链接题意:下面给出的m个串中有多少个能在规定的步数之内变成输入的字符串 分析: 典型的编辑距离问题。编辑距离:我们设dp[i][j]的意义为y取前i个字母和x取前j个字母的最少操作次数那么可以得到dp[0][i] = i和dp[i][0]=i,因为某一字符串为空的,要得到另一个i长度字符串,必须经过i次插入操作。而dp[1][1],有3种操作:1.原创 2013-08-27 10:00:33 · 859 阅读 · 0 评论 -
HDU4006-优先队列
题目:题目链接 题意:题目意思很明白,就是当输入命令为Q时,输出此时的第K大数: 分析:一看到这道题目的时候感觉应该和树状数组有关系,闹心的是树状数组不熟悉,就想着怎么动态的变化第K大数,试了一下数组模拟,不行,看大牛解释,又见证了STL的强大,直接使用优先队列存储数字,这样就可以直接排序了,保持队列的数量为K就行,强大神奇的STL: #include #incl原创 2013-08-27 11:30:56 · 955 阅读 · 5 评论 -
HDU1711-KMP
题目:题目链接 题意:就是给你两个数组,然后让你在A串中找到B串,输出第一个匹配的位置 ,如果多个匹配就输出最小的那个,没有的话就输出-1 KMP模版题....... #include #include #include #include #include #include #include #include #include #include #原创 2013-08-31 14:45:38 · 722 阅读 · 0 评论 -
HDU4585-map/(map+set)
题目:题目链接 题意:每个和尚有个ID和战斗值,刚开始只有一个老和尚,id为1,战斗值为1000000000 ; 有n个新和尚,他可以与战斗值最接近的老和尚战斗,战斗完,新和尚变老和尚.输出每个新和尚和老和尚战斗的id: 分析:就是二分查找距离战斗力相差最近的那个,先使用set来做,如下: 代码: #include #include #include #inc原创 2013-09-04 11:24:16 · 965 阅读 · 0 评论 -
HDU4739
题目:题目链接 题意:找正方形的个数有多少? 分析:枚举对角线坐标就可以了,爆搞一下 代码: #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-09-16 21:58:24 · 702 阅读 · 0 评论 -
HDU4740-模拟
题目:题目链接 题意:就是驴子和老虎在一个森林中跑,要是他们相遇了就输出相遇坐标,否则输出-1.跑动的原则是不跑出森林并且不跑自己跑过的路 分析:刚刚开始用一直搜索找出驴子和老虎各自走的路径,结果华丽丽的爆栈了,如下: #include #include #include #include #include #include #include #include原创 2013-09-16 21:32:37 · 709 阅读 · 0 评论 -
2013 ACM/ICPC Asia Regional Chengdu Online//HDU4730/HDU4731/HDU4734/HDU4737
1003:We Love MOE Girls 签到题: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2013-09-14 20:19:24 · 746 阅读 · 0 评论 -
HDU1509-priority_queue
题目:题目链接 题意:就是按照题目给出的优先级把信息在PUT命令下存入队列,在GET命令下输出优先级最高的信息; 分析:优先级队列,使用node型+运算符重载,这样就可以按照自己的意愿来排序队列中的信息了: 代码:#include #include #include #include #include #include #include #include原创 2013-09-04 16:02:14 · 1252 阅读 · 0 评论 -
HDU1263-map
题目:题目链接 题意:题目的意思就是按照又产地到水果的次序,统计每一个产地不同水果的销售情况。用map的映射很强大,二维的map使用: #include #include #include #include #include #include #include #include #include #include #include #include #i原创 2013-09-03 20:34:11 · 841 阅读 · 0 评论 -
HDU1896-priority_queue
题目:题目链接 题意:路上有很多石头,当你遇到奇数序列的石头就把他向前仍,偶数的不动他,如果两个石头一起,先考虑可以仍的比较近的石头仍也就是比较大的石头,这样一直下去,直到前面所有的石头都不可以仍了为止 分析:考虑用优先队列,如果是第奇数个石头,就修改其位置,入队列,否则,出对列;重载运算符 代码: #include #include #include #in原创 2013-09-03 21:03:04 · 807 阅读 · 0 评论 -
HDU2072-map
题目:题目链接 题意:就是给你一个字符串,判断这个字符串中拥有的不同的单词的个数是多少个? 分析:每次拿出一个单词后映射到map的int中,最后输出size就可以了,强大 代码: #include #include #include #include #include #include #include #include #include #inc原创 2013-09-03 21:26:16 · 658 阅读 · 0 评论 -
HDU1897-multiset+map
题目:题目链接题意:题目就是说现在有N瓶酒,每瓶酒都有自己的度数(可能相同),现在来了q个人,每个人要求各自需要的度数的酒,如果没有这种度数的酒的话,就给顾客大于顾客要求度数的最小的度数(略绕口),但是这个提升的空间不能炒超过y.如果都不能的话输出-1.否则输出卖给每一位顾客的酒的度数:分析:刚开始没有考虑相同的度数的酒,一直在用set做,WA了几次。看到之后使用m原创 2013-09-04 15:30:31 · 841 阅读 · 0 评论 -
HDU1412-set
题目:题目链接 题意:题目就是给你两个集合求两个集合的和,要符合集合的特性,无重复,并且要按照排序后的顺序输出 分析:这里使用STL的set,set具有自动排序和去重的功能,可以很方便的直接把两个集合当中的数字插进去,最后直接输出就可以了: 代码: #include #include #include #include #include #includ原创 2013-09-04 10:39:32 · 931 阅读 · 1 评论 -
HDU4022-map+multiset--The 36th ACM/ICPC Asia Regional Shanghai Site —— Online Contest
题目:题目链接题意:给你n个敌人的坐标,再给你m个炸弹和爆炸方向,每个炸弹可以炸横排或竖排的敌人,问你每个炸弹能炸死多少个人。分析:对于每个x坐标和y坐标分别1对多的保存这个坐标的敌人的数目,直接使用map和multiset好方便:代码:#include #include #include #include #include #includ原创 2013-09-04 13:30:33 · 975 阅读 · 0 评论 -
HDU4705-杭电多校第十场1010
题目:题目链接 题意:求三颗不同子树上点的组合的个数 对于树上的三个点,假设A-B-C,那么对于AC,我们就可以枚举B: #pragma comment(linker, "/STACK:16777216")#include #include #include #include #include #include #include #include #inc原创 2013-08-23 09:32:34 · 858 阅读 · 0 评论 -
HDU4678博弈-多校八1003
题目:题目链接 题意:题目意思就是两人玩扫雷,按照变换的规则。如果点着空地那么周围不包含数字的空地都会被触发。这样:把点开空地时会打开的一大片区域看成一块,题目中说到,在一盘游戏中,一个格子不可能被翻开两次,说明任意两块空地不会包含相同的格子。那么就可以看成一个组合游戏。当空地旁边没连任何数字的时候,sg = 1(直接转移到0)。如果有一个数字,点空地可以转移到0,点数字可以转原创 2013-08-23 16:48:07 · 853 阅读 · 0 评论 -
HDU 4635 多校四-1004
题目:题目链接这道题目的意思就是说给你一幅图,然后你可以往这个图里面添加边。要求就是你插入边之后不能产生重复边和环,并且不能形成强联通图。问你最多可以添加多少条边?分析:我们可以这样判断,就是说我们添加完所有能加入的边之后,我们可以把这时候形成的图分成两部分,比如x,y;这是一定可以有只有从x到y的边,木有Y到x的。同时x,y均为完全图。假设两者中各有点数a,b.则有a原创 2013-08-02 15:29:36 · 1039 阅读 · 4 评论 -
HDU 4642 多校四-1011
题目:题目链接这是一道博弈题,刚开始的时候一直在想SG,一直不知道肿么写。天.后来发现,就只判断最后一个点就OK了。因为我们可以发现,假设刚开始右下角的是1,那么Alice把其反为0.Bob总会把这个反为1,这样Alice又可以翻这个硬币。就这样最后肯定是Alice赢。对应的,如果一开始右下角的是0,如果全是0,那么Bob直接胜利。否则Alice的任何一个操作都会把右下角的硬币反过来。这样Bo原创 2013-08-01 21:08:26 · 1085 阅读 · 0 评论 -
HDOJ1850尼姆博弈(输出取法)
这道题和上一个差不多,就是尼姆博弈的应用,属于基础的尼姆博弈,除了判断是否是胜利外,还要输出胜态下第一步的可走的步数,即需要和原来的值相异或题目:小游戏:桌子上有M堆扑克牌;每堆牌的数量分别为Ni(i=1…M);两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌;桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。现在我们不想研究到底先手为胜还是为负,我只想问大家:原创 2013-07-11 16:49:34 · 1320 阅读 · 0 评论 -
HDOJ2176取(m堆)石子游戏尼姆博弈 -输出取法
尼姆博弈基本思想: 两人从n堆物品中取任意个,先取完者胜。 即将n堆物品的数量异或,得到的值如果为0,则先手败,反之先手胜。 如果要求先手在胜的条件下,得到奇异局势的方法数,则判断异或的值与每一堆原值异或后(结果应该表示该堆没有参加异或时的异或值)与原值比较大小,如果小于,则方法数加一。且对应的方法后,该堆的数目应变为异或的原创 2013-07-11 16:23:31 · 1397 阅读 · 0 评论 -
HDOJ1564Play a game(找规律博弈)
原题--题目链接题目大意:题目意思是输出里面的两个人玩走方格的游戏,谁走了最后一步就赢了这道题一开始木有思路,后来想了一下搜索,就大概试了一下,代码如下:#include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-07-10 12:03:51 · 1054 阅读 · 0 评论 -
HDOJ1079Calendar Game (找规律博弈)
其实这道题从找规律这方面来考虑的话还是比较容易一点的题目大意是: 两个家伙在区域赛前夕闲的无聊,然后玩一种无限纠结的游戏,随即给定一个日期,每次只能移动day OR month而且如果下一个月没有当前day的话 , 你就不能移动month,比如1月31日,你只能移动day 使其到2月1日,而不能移动月让其到达2月31日嗯,现在Adam需要你来找一个必胜策略原创 2013-07-10 11:14:19 · 1137 阅读 · 0 评论 -
HDU4630(杭电2013多校第三场1010)
No Pain No GameProblem DescriptionLife is a game,and you lose it,so you suicide.But you can not kill yourself before you solve this problem:Given you a sequence of number a1, a2, ..., an.The转载 2013-07-30 22:31:19 · 1235 阅读 · 2 评论 -
HDOJ1527 [威佐夫博弈]【典型】
下面的是一道典型的威佐夫博弈(套模版的)附加:威佐夫博弈简介和解决:威佐夫博奕(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况下。我们用(ak,bk)(ak ≤ bk ,k=0,1,2,…,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势原创 2013-07-11 20:15:37 · 1109 阅读 · 0 评论 -
HDOJ2188(基本的巴什博弈,套用公式即可)
简单介绍一下巴什博弈定义和的公式的原理:(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。 显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自原创 2013-07-11 17:15:16 · 3496 阅读 · 0 评论 -
HDU 4632 多校四-1001(DP的应用)
题目:题目链接题目的意思就是给你一个字符串,让你找出其中的不同回文子序列的个数有多少。这道题刚刚拿到手想到上一场多校的1008了,结果那样跑的话就只是第四个样例都卡了好久才出来。所以这样肯定不行,自己一直想到的是枚举,不懂算法。后来看到的是指可以采用区间DP。简单的来说就是用dp[i][j]表示i,j区间内的回文子序列的个数,我们判断的时候,如果发现sp[i]==sp[j],那么回原创 2013-08-01 19:49:38 · 1286 阅读 · 0 评论 -
HDU1028
题目:题目链接这道题目的意思是给你一个数字N,然后让你求出可以通过加法运算得到N的方法有多少种,其中,加式中的因子不能超过N。 如6的整数划分为 6 5 + 1 4 + 2 3 + 3 4 + 1 + 1 3 + 2 + 1 2 + 2 + 2 3 + 1 + 1 + 1原创 2013-08-02 20:16:11 · 856 阅读 · 0 评论 -
2013杭电多校第五场
1006 Magic Pen 6原创 2013-08-23 15:31:42 · 838 阅读 · 0 评论 -
HDU4699-杭电多校第十场1004
题目:题目链接 题意: 就是给你五个操作,分别实现这些操作: 主要的就是对于Q操作,我们需要输出对应的前K的数字中和最大的那个和,sum(i) = a1+a2+....ai; 对于当前光标位置,我们使用两个栈A和B来存储光标前面的数据,用B来存储光标后面的数据。这样就很容易能够实现前四个操作。对于Q操作,我们需要用一个数组来维护,对应的求第I个位置的MAX值,最原创 2013-08-23 13:06:03 · 1131 阅读 · 0 评论 -
HDU4696-杭电多校第十场1001
题目:题目链接 题意:给你N和T。再给你T(N)和C(N),并且C(N)里面只有1和2,问你能否通过C(N)组出下面提出来的数字: 唉.当时一直没看懂题目意思,后来听他们一讲,真的是大水题啊:拿到一个数字,如果这个数字是法由C(N)求和组出,再者,如果C(N)里面有1存在的话,那么就可以组成任何大于0的数字。如果没有1的话,我们就需要判断当前给出的数字的奇偶性了,没有1但是原创 2013-08-23 10:02:36 · 833 阅读 · 0 评论 -
HDU4704-杭电多校第十场1009签到
题目:题目链接题意: 最后的实质就是求2的n-1次方 费马小定理: 2^N == 2^(N%1e9+6) % 1e9+7; 直接套公式: 签到: #include #include #include #include #include #include #include #include #include #原创 2013-08-22 21:48:36 · 857 阅读 · 0 评论