![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
acm
文章平均质量分 87
YOYCod
君子不器,成己达人
展开
-
简单最小生成树
J - 最小生成树(3)Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit StatusDescription省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路原创 2014-08-20 15:20:27 · 446 阅读 · 0 评论 -
c++ 中string方便
InputThere are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case:There is a line of poem S (1 S) S will only contains alp转载 2014-09-08 11:05:31 · 400 阅读 · 0 评论 -
字典树
http://poj.org/problem?id=1056原创 2014-10-20 08:08:35 · 451 阅读 · 0 评论 -
poj~3273(二分法)
poj3273第一个做的二分法,以前一直以为二分法只能用在查找上,没想到二分那么神奇,还可以这样用。该题的意思是:给你n个数,让你分成m分,要求分得各组的花费之和应该尽可能地小,然后输出花费最大的那组。解题思路是,不断的二分这n组分成任意分的最大值,具体的还是看代码吧,详细在注释里。#include #define MAX 100005int n,m;int c原创 2014-12-04 08:45:52 · 483 阅读 · 0 评论 -
O(n)查找第k小(大)的数
通过快排的思想可以实现在O(n)的时间复杂度下实现:查找数组第k小的数,在排好序的数组中,就相当于查找第k个数,基于快排的思想,我们只需要判断所找的那个标量是否是第k个数即可。原创 2016-05-12 10:56:24 · 1120 阅读 · 0 评论 -
hdu4287(字典树)
题目链接字典树不会的同学:点这里题意: 手机上有如下映射2 -> a,b,c...9-> w x y z给你n个数字 和 m个单词 ,问每个数字对应的映射能组成多少种单词.依次输出.一开始做的时候脑子进水了 ,把字母存入字典树里,结果就要考虑数字对应的字母情况.比如 23对应 ad ae af bd be bf cd ce cf.这样内存不够.原创 2015-09-03 13:26:22 · 404 阅读 · 0 评论 -
hdu~4282(数学题)
题目链接数学题,随便分析一下就能做了.首先 X^Z + Y^Z + XYZ = K K因为z>1 ,所以当z=2时,式子转化为 x^2 z=2时, x^3所以 当K>=3的时候这已经是个暴力水题了,只需要特判K==2:#include #include #define ll long lon原创 2015-09-03 18:29:54 · 566 阅读 · 0 评论 -
线段相交模板
struct PT{ double x,y;//点的坐标}s[15][2];//线段的2个端点,MAX表示线段条数的上限double Min(double a,double b){ return a<b?a:b;}double Max(double a,double b){ return a>b?a:b;}double Dir(PT p1,PT p2,PT转载 2015-05-24 16:43:43 · 513 阅读 · 0 评论 -
java 大数
import java.util.*;import java.math.*;public class test{ public static void main(String[] args){ Scanner input=new Scanner(System.in); System.out.println("woqu!"); BigInteger a=input.nextBi转载 2015-07-30 09:23:41 · 461 阅读 · 0 评论 -
kmp
题目链接<span style="font-size:18px;">/*kmp 1711 http://acm.hdu.edu.cn/showproblem.php?pid=1711*//*kmp算法详解 http://v.youku.com/v_show/id_XMzUxMjAwNzI=.html*/#include <stdio.h>int...原创 2014-08-26 21:50:24 · 361 阅读 · 0 评论 -
快排qsort/sort
/*1:对整形数组排序*/#includeint a[];cmp (const void *a,const void *b){return *(int*)a-*(int*)b; //升序, a,b换位为降序。}qsort(a,n,sizeof(a[0]),cmp); // qsort(a,数组长度,sizeof(a[0]),cmp原创 2014-08-21 09:59:36 · 555 阅读 · 0 评论 -
第二类Stirling数
S(p,k)的一个组合学解释是: 将p个物体划分成k个非空的不可辨别的(可以理解为盒子没有编号)集合的方法数。也可以解释为: p个有区别的球放到k个相同的盒子中,要求无一空盒,其不同的方案数用S(p,k)表示S(p,k)的递推公式是:S(p,k) = k*S(p-1,k) + S(p-1,k-1) ,1边界条件:S(1,1) = 1 ,原创 2015-04-15 18:57:51 · 888 阅读 · 0 评论 -
最长公共子序列
求解:引进一个二维数组c[][],用c[i][j]记录X[i]与Y[j] 的LCS 的长度,b[i][j]记录c[i][j]是通过哪一个子问题的值求得的,以决定搜索的方向。我们是自底向上进行递推计算,那么在计算c[i,j]之前,c[i-1][j-1],c[i-1][j]与c[i][j-1]均已计算出来。此时我们根据X[i] = Y[j]还是X[i] != Y[j],就可以计算出转载 2014-08-21 10:02:57 · 1075 阅读 · 0 评论 -
hdu~3650(气球着色)
题目链接看这道题之前,我们先来看到气球着色问题.气球着色题目大意:有n(10^5)个气球,m(10^5)次着色操作(对区间内的气球着色),后面跟着ai biq(10)次询问(询问某个气球着色次数). 最笨的思路是开一个sign[]数组,每次对区间内的sign[a~b]++;这样的时间复杂度为O(n*m)近10^10,直接原创 2015-09-03 19:13:47 · 717 阅读 · 0 评论 -
1671字典树
http://acm.hdu.edu.cn/showproblem.php?pid=1671原创 2014-08-29 20:49:01 · 425 阅读 · 0 评论 -
hdu~3410(单调队列)
单调队列就是队列中的元素是单调递增或递减的。比如把 5 2 3 1 4 入队:减: 增:5 55 2 2 5 3 2 35 3 1 15 4 1 4这个还是好理解的,但是,我们得会用单调队列这一特性去解决题目,抽象出题目中有类似的操作。Passing the Message题意:给你n个数原创 2015-04-21 11:07:14 · 472 阅读 · 0 评论 -
hdu~3530(单调队列)
单调队列就是队列中的元素是单调递增或递减的。比如把 5 2 3 1 4 入队:减:、、、、、、、、、、、增:5 、、、、、、、、、、、、55 2 、、、、、、、、、、、2 5 3 、、、、、、、、、、、2 35 3 1、、、、、、、、 、、15 4 、、、、、、、、、、、1 4这个还是好理解的,但是,我们得会用单调队列这一特性去解决题目,抽象出题目中有类似的操作原创 2015-04-21 17:29:44 · 546 阅读 · 0 评论 -
hdu~3706(单调队列)
单调队列就是队列中的元素是单调递增或递减的。比如把 5 2 3 1 4 入队:减:、、、、、、、、、、、增:5 、、、、、、、、、、、、55 2 、、、、、、、、、、、2 5 3 、、、、、、、、、、、2 35 3 1、、、、、、、、 、、15 4 、、、、、、、、、、、1 4这个还是好理解的,但是,我们得会用单调队列这一特性去解决题目,抽象出题目中有类似的操作原创 2015-04-21 21:14:21 · 614 阅读 · 0 评论 -
poj~2823(单调队列入门)
如果当初看单调队列先从这题开始做的话,应该会快点理解吧。题意就是求区间最值,这是单调队列最简单的应用。Sliding Window题意:给你n个数和区间长度k,求区间遍历到第i个数时的最小和最大值,所以是n-k+1个值。由于n的范围是10^6,普通嵌套for肯定超时,这里就用到了单调队列。单调队列只需要遍历一遍,虽然中间有出队入队的操作具体的看代码和注释吧:原创 2015-04-23 19:34:25 · 423 阅读 · 0 评论 -
威佐夫博奕
取石子游戏有两堆石子,双方轮流取走一些石子,合法的取法有如下两种:1、在一堆石子中取走任意多颗;2、在两堆石子中取走相同多的任意颗;约定取走最后一颗石子的人为赢家,求必胜策略。满足下列公式的为必败情况:k:第k中必败情况。百度的这张图助于理解:至于为什么有这个黄建分割数( (1 + sqrt(5))/2 ),请点击这里m(k) = k * (1 +原创 2015-04-15 20:38:01 · 389 阅读 · 0 评论 -
树状数组-HDU1166
题意为:T原创 2014-11-01 17:32:04 · 401 阅读 · 0 评论 -
hdu~2217(简单dp)
visit题意:在x轴上,出发点在0的位置,给你一些其他点的位置,求在规定时间内能遍历最多的点的个数。其实个人觉得不会dp的人也能做,说是dp也算不上。以0为起点,负半轴为左边。1.先开两个数组l[],r[]存左右两边各点到0的距离。2.再开两个数组lm[],rm[]存以上述各点为拐点能遍历的最多点的个数。具体的还是看代码好理解:#include #inclu原创 2015-04-16 10:26:19 · 575 阅读 · 0 评论 -
hdu~1422(简单dp)
重温世界杯用ans[i]存 生活费和话费之差类似求最大区间和注意路线是一个环。#include #define MAX 100000int ans[2*MAX+5];int dp[2*MAX+5];int main(){ int n; while(scanf("%d",&n)!=EOF) { int x,y; f原创 2015-04-14 17:34:54 · 643 阅读 · 0 评论 -
hdu~1242(bfs)
Rescue一开始看上去认为是个bfs水题,然后发现有点坑。最后总结是:一道有点坑的水题。a:天使x:守卫r:天使的friend# :墙. :路题意:天使关在有守卫的牢中,他的朋友们(Angel's friends)去救他,意味着有多个r。从a开始,走到最近的朋友结束。刚开始的时候没注意是多个friends,普通的队列做bfs只能得到步数最少的解法,原创 2015-04-14 16:31:21 · 395 阅读 · 0 评论 -
hdu~1003(简单dp)
Max Sum求最大字段的和。用dp[i]存的是前i个数中,所选连续数的最优解(即和最大)dp[i]最大的数的位置为终止位置从尾部向前遍历,最前面的非负数为开始位置例如:3 -4 2 -1 3 对应的dp为 3 -1 2 1 5, 5所在位置为终止位置,2 所在位置为开始位置#include #define MAX 100000int原创 2015-04-14 17:21:47 · 510 阅读 · 0 评论 -
hdu~4133(dfs)
StrangeStandard求反素数反素数:给一个整数x,对任意1~x中,x的约数个数最多,这个x就是反素数。题意:求不大于n的最大的反素数,。因为数据量 2 x 10^9,打表什么的想都不要想,所以,这这一道搜索题。1.一个反素数的质因子必然是从2开始连续的质数.2.num=2^x1+3^x2+5^x3+…… 必然有x1>=x2>=x3……原创 2014-12-19 14:53:14 · 435 阅读 · 0 评论 -
hdu题目分类
分类二:基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、117转载 2014-11-08 08:26:21 · 634 阅读 · 0 评论 -
最短路径之 一个人的旅行
一个人的旅行Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 19403 Accepted Submission(s): 6787Problem Description虽然草儿是个路痴(就是在杭电待了一年原创 2014-08-21 09:31:13 · 610 阅读 · 0 评论 -
简单并查集
A - 并查集(1)Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionThere are so many different religions in the world today that it is原创 2014-08-20 15:11:48 · 467 阅读 · 0 评论 -
poj~1915(bfs)
Knight Moves题意:求起点到终点最少走几步.上双向广搜代码:#include #include #include using namespace std;int n,sx,sy,ex,ey;int dirx[]={-2,-2,-1,-1,1,1,2,2}; //题意 ,8个方向int diry[]={1,-1,2,-2,2,-2,1,-1};typed原创 2015-07-15 09:36:05 · 429 阅读 · 0 评论 -
hdu~4920(坑)
题目链接题意就是给你矩阵 A B 求 AXB,注意值%3;正常的方法是加入结果为C[][],c[i][j]= a[i][]一行 与b[][j]一列的乘积之和,然而按列取的话会超时(不是一般的坑):#include int a[805][805],b[805][805],c[805][805];int main(){ int n; while(scanf("%原创 2015-09-11 09:28:05 · 517 阅读 · 0 评论 -
快排、堆排、归并排 的理解
快速排序快速排序是冒泡排序的进阶版,平均时间复杂度为O ( nlogn ),算法思路如下:1.选定一个值作为标量,把 比该值小的数放左边,比该值大的数放右边。2.分别对左右两边的数再次进行1中的操作一直递归,直到只剩下一个数为止。 比如: 7,1,5,8,9,2,4,3假定每次选择第一个数为标量 :下面模拟第一组序列得到的过程:s:标量l、r:左右指针原创 2016-05-07 09:40:22 · 1807 阅读 · 0 评论 -
库函数next_permutation
next_permutation原创 2014-10-20 09:56:37 · 438 阅读 · 0 评论 -
整数拆分
F - 钱币兑换问题Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit StatusDescription在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。 Input原创 2014-08-26 11:13:29 · 573 阅读 · 0 评论 -
字典序全排列
#include #include #define MAX 1000int a[MAX];void fun(int a[],int m,int n){int i,j;if(m==n+1){for(i=1;iprintf("%d ",a[i]);putchar('\n');}else{for(i=1;i{int k=原创 2014-08-20 19:21:28 · 616 阅读 · 0 评论 -
C++ Primer 第五版 部分课后题答案
当时刚学C++的时候买了这本书,一开始前面看的一知半解,索性就先缓缓,等学完学校的C++课程(中途自己也写了不少c++的代码),一段时间之后又拿起这本书去看,感觉还是挺有滋味的,这本书对我印象中的C++做了很大的扩展,个人认为这本书不太适合刚学C++就去看,而是写了一定的代码,对C++有一个大体的了解之后再去看会很有味道。在看书的过程中自己也写了上面的课后练习题,现在整理一下,也跟大家分享一下,下原创 2016-06-02 20:50:03 · 5050 阅读 · 2 评论 -
简单图论之最短路径(两种算法)
A - 最短路径(1)Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit StatusDescription某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方原创 2014-08-20 15:28:15 · 2190 阅读 · 0 评论 -
搜索题解
qtech 2015 集训 第二周结题报告A:传送门1B:传送门2C:传送门3D:传送门4E:传送门5原创 2015-08-08 10:49:05 · 568 阅读 · 0 评论 -
hdu~4707(vector)
题目连接题意:给你一没有回路的连通图,标记为0~n-1,相邻边的权值为1,找出距离 点0 大于m的点的个数.输入n m , n-1条边.(理解了题意+vector 这道题就很水了)据说这道题的题目很水,直接用num[y]=num[x]+1(输入一条边 X Y)都能过,我也是醉了.然而这些都是歪门邪道,让我们来看看正确的解法:首先N如果用floyd最短路原创 2015-09-04 19:55:58 · 546 阅读 · 0 评论 -
快速幂
神奇的快速幂快速幂顾名思义,就是快速算某个数的多少次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。例如 计算result=a^11普通的方法: result=a*a*a..*a*a(11个a相乘) ,计算了11次。快速幂的方法: 11的二进制是101111 = 2³×1 + 2²×0 + 2¹×1原创 2015-09-02 17:37:14 · 490 阅读 · 0 评论