随笔分类 -  hdu

摘要:作者:jostree转载请注明出处http://www.cnblogs.com/jostree/p/4102743.html题目链接:hdu 4778 Gems Fight! 博弈+状态dp+搜索不难发现,无论Alice和Bob以何种方式投掷包裹,他们得到的Magic Stones个数的和$Sum$... 阅读全文
posted @ 2014-11-17 00:37 jostree 阅读(473) 评论(0) 推荐(0)
摘要:作者:jostree转载请注明出处http://www.cnblogs.com/jostree/p/4092939.html题目链接:hdu 5025 Saving Tang Monk 状态压缩dp+广搜使用dp[x][y][key][s]来记录孙悟空的坐标(x,y)、当前获取到的钥匙key和打死的... 阅读全文
posted @ 2014-11-12 17:57 jostree 阅读(431) 评论(0) 推荐(0)
摘要:作者:jostree转载请注明出处http://www.cnblogs.com/jostree/p/4092176.html题目链接:hdu 5094 Maze 状态压缩dp+广搜使用广度优先搜索,dp[key][x][y]表示在拥有钥匙key并在坐标(x,y)时需要的最少的步数,key的二进制的第... 阅读全文
posted @ 2014-11-12 14:18 jostree 阅读(454) 评论(0) 推荐(0)
摘要:作者:jostree转载请注明出处http://www.cnblogs.com/jostree/p/4080264.html题目链接:hdu 4850 Wow! Such String! 欧拉回路长度为4的由26个字母组成的字符串一共有$4^{26}$种,从aaaa开始,在加上结尾的aaa那么该字符... 阅读全文
posted @ 2014-11-07 00:00 jostree 阅读(474) 评论(0) 推荐(0)
摘要:题目链接:hdu 2824 The Euler function计算欧拉函数,欧拉函数$\phi(x)$等于不超过$x$且与$x$互质的整数的个数。这里有两种求解方法:方法一:显然欧拉函数有如下三个性质:1、$\phi(x=p) = p-1$,当$x$是质数时,$k\in[1,p-1]$的$p-1$... 阅读全文
posted @ 2014-10-06 16:53 jostree 阅读(154) 评论(0) 推荐(0)
摘要:原题链接:hdu 1576 A/B同样是用扩展的欧几里得算法。A = 9973k+n = xB,从而转化为:xB-9973k=n求解x即可。具体扩展欧几里得算法请参考:hdu 2669 Romantic代码如下: 1 #include 2 #include 3 #include 4 #incl... 阅读全文
posted @ 2014-10-06 14:35 jostree 阅读(261) 评论(0) 推荐(0)
摘要:原题链接:hdu 2669 Romantic使用扩展的欧几里得算法。对于初始的两个整数$x_1,y_1$,我们一定可以计算出$ax_1+by_1 = gcd(a,b)$,递推下一步,我们可以得到公式:\begin{equation} ax_1+by_1 = gcd(a,b) = gcd(b,a\%b... 阅读全文
posted @ 2014-10-06 11:43 jostree 阅读(357) 评论(0) 推荐(0)
摘要:题目链接:hdu 4267 A Simple Problem with Integers类似于题目:hdu 1556 Color the ball的技巧实现树状数组的段更新点查询。由于该题对于段的更新并不是连续的,从而可以构造多个树状数组。因为$k \in [1,10] $,从而可以把更新划分为如下... 阅读全文
posted @ 2014-10-02 22:58 jostree 阅读(170) 评论(0) 推荐(0)
摘要:题目链接:hdu 1394 Minimum Inversion Number该题是求最小逆序对的扩展。可以使用树状数组来实现。对于$n$个数的序列$A$,其第$i$个数($i\in [0,n)$)的逆序数$r_i$可以表示为它的角标$i$减去在它之前且不大于它的数的个数。例如对序列A = {1,3,... 阅读全文
posted @ 2014-10-02 22:44 jostree 阅读(166) 评论(0) 推荐(0)
摘要:首先对每行进行排序,并对与前两行有$A = a_1 \leq a_2 \leq \cdots \leq a_k$和$B = b_1 \leq b_2 \leq \cdots \leq b_k$。首先把所有的$b_i , i\in [1,k]$与$a_1$进行求和,并加入优先队列中。其中最小的必然是$... 阅读全文
posted @ 2014-10-01 22:19 jostree 阅读(155) 评论(0) 推荐(0)
摘要:题目链接:hdu 1754 I Hate It线段树模板题。该题是对点进行更新,对区间进行查询,在初始化时为了方便把n扩充为了2的整数次幂。并且注意线段树应该开辟4倍于n的数组来存储。注意对于输入字符'Q','U',一定不能用char c;scanf("%c",&c);来接收,这样会接收到上次输入的... 阅读全文
posted @ 2014-10-01 22:07 jostree 阅读(184) 评论(0) 推荐(0)
摘要:题目链接:hdu 1556 Color the ball可以使用线段树来做,但是使用树状数组会更加简洁,对于第i个点被涂的次数$s$,为$s=\sum_{k=1}^{i}x_k$,因此对于区间$[a,b]$的涂色,对于下标$a$增加1,对于下标$b+1$减少1,这样就可以保证对于$i\in [a,b... 阅读全文
posted @ 2014-10-01 22:00 jostree 阅读(203) 评论(0) 推荐(0)
摘要:题目链接:hdu 1166 敌兵布阵标准的树状数组模板题,需要注意的是树状数组的初始节点的编号为1。 1 #define MAX_N 1000007 2 #include 3 #include 4 #include 5 #include 6 using namespace std... 阅读全文
posted @ 2014-10-01 21:47 jostree 阅读(168) 评论(0) 推荐(0)
摘要:dp,用dp[i][j],表示和为i的前j个维度的种类。其中arr[i],表示第i维的最大值。则\begin{equation}dp[i][j] = \sum_{0 \leq k \leq \min(i,arr[i])} dp[i-k][j-1] \end{equation}最后取和为sum/2的种... 阅读全文
posted @ 2014-09-29 23:32 jostree 阅读(227) 评论(0) 推荐(0)
摘要:贪心算法。需要计算分别以每个字母结尾的且每个字母出现的次数不超过k的字符串,我们设定一个初始位置s,然后用游标i从头到尾遍历字符串,使用map记录期间各个字母出现的次数,如果以s开头i结尾的字符串满足要求,则把结果增加i-s+1。否则的话向前移动s,不断维护map,直到s指向的字母与i相同,从而满足... 阅读全文
posted @ 2014-09-29 13:33 jostree 阅读(325) 评论(0) 推荐(0)
摘要:先把各个数字又大到小排列,如果没有前导零并且为奇数,则直接输出。如果有前导零,则输出-1。此外,如果尾数为偶数,则从后向前找到第一个奇数,并把其后面的数一次向前移动,并把该奇数放到尾部。值得注意的是当输入为960时,通过这种方法会得到具有前导零的数字。因此最后需要判断进行移动后,首位是否为零。代码如... 阅读全文
posted @ 2014-09-29 13:26 jostree 阅读(202) 评论(0) 推荐(0)
摘要:为了a异或b的和最大,只需另b在不大于n的情况下按位取反即可。这里有两个输出小技巧可以参考:1.在用printf输出__int64时,在windows下使用格式"%I64d",在linux下使用"%lld",在hdu中应使用"%I64d",如果拿不准就是用cout好了。2.在遇到每个数之间有空格,最... 阅读全文
posted @ 2014-09-27 10:56 jostree 阅读(343) 评论(0) 推荐(0)
摘要:首先把具有相同颜色的点缩成一个点,即数据离散化。然后使用dp[i]表示涂满前i个点的最小代价。对于第i+1个点,有两种情况:1)自己单独涂,即dp[i+1] = dp[i] + 12)从第k个节点之后(不包括k)到第i+1个节点一次涂完,且一起涂的节点共有num种颜色,即dp[i+1] = dp[k... 阅读全文
posted @ 2014-09-26 23:37 jostree 阅读(159) 评论(0) 推荐(0)