HDU
文章平均质量分 71
流年冲淡时光
这个作者很懒,什么都没留下…
展开
-
BC#62C题求二叉树不同节点数的子树的个数
这次只做了俩道题,而且A题WA了2发(然后突然发现仅仅是数组开小了,hash表要开到2000),B题WA了四发(考虑清楚各种特判就行了),室友和我一起做的,他以前是搞acm的,但好久不搞了,虽然比赛的时候也只做出俩题,但是排名在我前面,而且比赛后还做出了第三题没有看题解,这难道就是智商压制么,汗颜啊。C题其实只要从二叉树最后面往前递归,把数组加入set,即可实现判重,注意每层的节点数目原创 2015-11-01 19:57:14 · 723 阅读 · 0 评论 -
HDU5475线段树定点更新
这题就是一个线段树的定点更新,把线段树节点初始值设为一,然后输入为一时逐个按顺序添加更新,输入为2时按照输入的y定点更新就行了,然后向上维护积值。#include#include#include#include#include#define LL long longusing namespace std;#define lson l, mid, root<<1#define原创 2015-09-26 18:54:25 · 1037 阅读 · 0 评论 -
HDU5479一串括号转化为没有非空字串是匹配的
这题,呵呵,做的太急了,别人上面的样例中明明给了)(是不匹配的,然而没有看见,硬是算成全部转化为)或者(,怪自己。#include#include#include#include#include#include#include#include#include#include#include#include#define LL long longusing namesp原创 2015-09-26 21:23:32 · 473 阅读 · 0 评论 -
HDU5478取模恒等式
这题刚开始自己推公式,推了好久并没有推出来,最后队友A的,据说是直接让n等于1,然后用快速幂去求a得幂,然后直接用c去减这个值就是b,然后再用50个不同的n值去验证,如果等式均成立,即使一对符合的值,个人不喜欢做这些感觉逻辑不是很严密的题,但是事实就是这样,往往有些题逻辑不会很严密的让你感觉绝对对,因为由于学术有限,很多东西我们是很难验证的,所以有时做题也需要猜想。贴上队友代码原创 2015-09-26 21:00:29 · 885 阅读 · 0 评论 -
HDU5430欧拉函数求小于等于n的数中与n互质的数的数目
思路;欧拉函数即为第一个思路,至于欧拉函数的证明,弱渣渣表示不会,反正欧拉函数是求比n小的数中与n互质的数的数目。这题直接百度欧拉函数,复制粘贴上就过了。#include#include#include#include#include#include#include#include#includeusing namespace std;int eular(原创 2015-09-07 20:06:36 · 552 阅读 · 0 评论 -
HDU529最小割和单源最短路
没搞过图论,看了一天的标程也没完全搞明白,懂那么一点,抄袭了一遍标程,交上去结果CE,呵呵,然后交了一发标程还是CE,呵呵,回头有空再演究下,贴一发CE的代码:#include #include #include #include #include #include #include #include #include #include using namespac翻译 2015-07-24 19:48:39 · 416 阅读 · 0 评论 -
HDU5299拓扑排序和博弈
#include#include#include#include#include#include#includeusing namespace std;typedef double db;typedef long long LL;#define pb push_backconst db EPS = 1e-8;const int MAXN = 50015 ;db sqr翻译 2015-07-25 09:21:34 · 402 阅读 · 0 评论 -
HDU5298立体几何
#includeusing namespace std;struct P{ __int64 x,y,z;};struct Plane { __int64 a,b,c,d;};Plane pls[110];struct B{ __int64 x,y,z,r;};B bs[20];int m,n;inline int fp(const Plane& pl,const翻译 2015-07-25 09:17:44 · 590 阅读 · 0 评论 -
HDU5297莫比乌斯函数,容斥原理从1到n中数字中去掉形如a^r的数字
#include#include#include#include#includeusing namespace std;const __int64 mx=2000000200000000000LL;vector data[63];bool prime[63]={false,false,true,true,false,true,false,true,false,false,false翻译 2015-07-25 09:18:17 · 485 阅读 · 0 评论 -
HDU5296从一棵树上取出若干不连通的点
#include#include#include#include#include#include#include#include#include#include#include#define cl(a,b) memset(a,b,sizeof(a))#define max(x,y) ((x)>(y)?(x):(y))#define min(x,y) ((x)<(y)?(x翻译 2015-07-25 09:13:59 · 470 阅读 · 0 评论 -
HDU5295给出俩条线段和中点给出长度求点坐标
#include #include #include #include #include using namespace std;const double eps = 1e-6;int sgn(double x){if(fabs(x) return x > 0 ? 1 : -1;}struct P{double x , y;P(d翻译 2015-07-25 09:09:41 · 795 阅读 · 0 评论 -
HDU5292魔方满足什么条件能够还原
http://blog.sina.com.cn/s/blog_15139f1a10102vnx5.html题解:#include #include #include #include #include using namespace std;int a[] = {-1,1,1,-1,1,-1,0,0,1,-1,-1,1,0,0,-1,1,-1,1,1,-1,0,0,0,0};i翻译 2015-07-25 08:56:57 · 587 阅读 · 0 评论 -
HDU5291DPn堆糖果取出相等数目的糖果
#include#include#include#include#include#include#includeusing namespace std;#define mod 1000000007typedef long long lld;int s[2010];lld a[400010];lld dp[2][400010];void odd(i翻译 2015-07-25 08:47:49 · 900 阅读 · 0 评论 -
HDU5480象棋盘上有很多車,求一个矩形里面的棋子能否全部被車吃
呵呵,此次明明前两题很简单,然而以俩题全跪告终,第二题也是太急了,自以为后台数据不会全是大数据,就不会超时,就懒的简化时间了,然后就去做第三题,想了好久并没有做出来,然而前俩题全挂了,以后还是按照保底分来吧,身为渣渣不能想太多,这道题就是我的代码求个前缀和就行了。#include#include#include#include#include#include#include原创 2015-09-26 21:38:13 · 559 阅读 · 0 评论 -
hdu5491求二进制比一个数大的数
求d的最小增量,注意为0的特判,以及1的个数不能改变的情况,然后其他情况找到最小的位0的位置变成1,然后根据s1的大小去改变后面的1就行,具体的看代码:#include#include#include#include#include#include#include#include#include#include#include#include#define LL l原创 2015-09-27 17:23:44 · 949 阅读 · 2 评论 -
HDU5501贪心加DP零一背包
这题比赛的时候有想到是DP题,但是DP有研究的少就没有去往那里想,想用其他办法做,然而并不能,写了一发暴搜,果断T,各种加剪枝,T了四发,并没有过,还是DP。题解写的很详细了,我就不多说了。题解:这道题考察的是贪心思想和动态规划。首先我们考虑,假如我们已经确定了要做哪些题目,按什么顺序做这些题目最好。假设已经确定了要做其中的mm道题,某一个方案中做题的顺序是原创 2015-10-11 20:22:02 · 596 阅读 · 0 评论 -
HDU5459字符串斐波那契之递推
这题起初以为是一个找规律题,然后就各种打表找规律,然而最后发现并不能找到什么规律,其实是一个递推题目,主要就是看你能不能想到怎么取递推:题目所求所有C之间的距离,又因为相加的性质,两边的单独处理是不变的,每次拼接之后多出来的只是两边各一个的情况,有了点分治的味道。而左右两边的情况则不妨将这段距离差分成x,y两部分分开计算。对于左串来说,每一个C都要和右串所有的C进行一次配对,所计算的距原创 2015-09-21 19:37:13 · 977 阅读 · 0 评论 -
hdu5497删除一个序列的连续m个数使得逆序对数最少
题解:g_igi表示在ii前面比a_iai大的数的个数, f_ifi表示在ii后面比a_iai小的数的个数, 这两个都可以用树状数组轻松求出来. 那么对于一个长度LL的连续子序列, 删掉它之后逆序对减少的个数就是这段区间中g_igi的和 + 这段区间f_ifi的和 - 这段区间的逆序对个数. 求区间逆序对个数只要用一个树状数组维护就好了,原创 2015-10-04 21:28:06 · 841 阅读 · 2 评论 -
HDU5496求整数序列的子串的并集和,map的简单使用
脑子笨想了好久才想懂这题是怎么回事,首先自己比赛的时候受上一场的BC的影响,感觉和上一场的C题类似,想都没想就直接开撸了,然后后来发现自己理解错题意了,这里就是按照题解说的来做的。考虑每个数字对最终答案的贡献. 对于每个数, 我们只算它出现在连续相同元素的第一个时的贡献, 这样会使计算简便很多. 假设这个数是a[i]a[i], 那么i后面的随便选有2^{n-i}2n−i种.原创 2015-10-04 18:58:53 · 790 阅读 · 0 评论 -
HDU5495求俩个1~n的数列按照相同的规则重排后的LCS
这题智商低,想了很久没有想到怎么做,其实想通了很简单,由于俩个数列都是1~n的排列,所以在每个位置的a[i]和b[i]建一条边,然后通过样例可以很明显看出来,建边之后会形成n多个环,而每个环视相互独立的,对于长度大于1的每个环都可以以牺牲一个值得代价取得最长公共子串。总有那么些巧妙地题是我这种智商低的想不到的。#include#include#include#include原创 2015-10-04 03:22:07 · 838 阅读 · 2 评论 -
HDU5481求数轴的并集的长度
首先考虑一个问题,就是关于覆盖的问题:若某个区间没有被其它区间覆盖,则该区间在子集中出现的总次数为:2^(n-1)次(总子集数-去掉该区间的子集总数)若某个区间被覆盖了1次,即有2个区间重叠,那么该区间在子集中出现总次数为:2^(n-1)+2^(n-2)次(第1个区间在子集中出现的次数+第2个区间在子集中出现且第1个区间不出现的总次数)…………可以得到原创 2015-10-01 09:01:24 · 721 阅读 · 0 评论 -
HDU5482给大小为k的字符集,求长度为n且有m个非空字串的串数目,构造
这题,起初看题解,以为要求贝尔数,后来看大神的代码看了很久很久才发现,并不是求什么贝尔数,什么斯特林数,就是一个构造题,记住一句话,名字只是一个代号。然后大神的代码,由于自己太弱,也看了很久很久才看懂,解释下各个变量的意思,sum数组:字符串长度为n且有s个不同字符构成的子集数目为t的串有多少。a数组是你要构造的长度为n的串,每一位都是一个数字,可能相同可能不同,取决于下面的最后面原创 2015-10-01 19:57:45 · 868 阅读 · 0 评论 -
HDU5483求一个图中的最小生成树不能去掉的边的数目
没研究过图论,暂时看不太懂,留着慢慢看吧。题解:首先使用Prim算法求出这个图的最小生成树,对于每条非树边都对于着树上的一条链。如果有一条非树边的权值和对应链上的某条树边相等,就可以交换这两条边使得树边不一定在最小生成树上。所以我们需要对每条树边,看所有覆盖他的非树边的权值有没有和本身相等的,因为非树边的权值不会小于树边,所以只需看覆盖该树边的非树边的最小权值。这个原创 2015-10-02 12:55:27 · 802 阅读 · 0 评论 -
HDU5444排序二叉树的建立与查找
网上找的板子,改了下就过了,就T了一发,后来发现数组开小了,这我就郁闷了,数组开小了不应该是RE吗,怎么变成T了。#include #include #include using namespace std;typedef struct BiTNode{ int value; struct BiTNode *lchild,*rchild;}*BiTree;原创 2015-09-13 14:20:51 · 478 阅读 · 0 评论 -
HDU5429大数模板
这题直接套大数模板就行了,我硬是要写一发double试试,结果果断WA了n多发,最后还没过。也许是我修为太浅,不能找到double的正确AC姿势。而且发现一般这种题基本上都是考大数的,用double基本上过不了,除了一些特殊的题目。#include#include#include#include#include#include#include#include#include原创 2015-09-07 19:42:25 · 336 阅读 · 0 评论 -
HDU5438拓扑排序删点加DFS
类似拓扑排序:去掉无向图度数为一的点,并把和它相连的点的度数j原创 2015-09-13 14:17:08 · 831 阅读 · 0 评论 -
HDU5428质因数分解变形式
这题当时一定是脑抽了,已经想到了是质因数分解之后的最小俩个质因数的相乘,竟然还写错,int以内的质数有很多,看来我是想多了。其实最简单的方法就是把每个数质因数分解之后加入vector中排个序即可,然后直接直到vector的个数,很简单。另外注意这题要用LL。#include#include#include#include#include#include#include原创 2015-09-07 18:26:21 · 574 阅读 · 0 评论 -
HDU5290树形DP一颗树扔炸弹几次能炸完
多校这些神题像我这种渣渣理解起来也是很难的,先贴下代码有能力的时候再去理解吧#include#include#include#include#define INF 100000000#define N 100010#define U 200010#define M 105using namespace std;int dp,p[U],pre[U],n,tt[U],a[N],i翻译 2015-07-25 08:45:59 · 1054 阅读 · 0 评论 -
HDU5351大数模板加斐波那契
#include #include #include #include #include #include #include #include #include #include #include #include #include #define LL long long#define lson lo, mi, rt << 1#define rson mi + 1,翻译 2015-08-04 20:54:30 · 532 阅读 · 0 评论 -
HDU4920矩阵乘法优化之转置
首先说一下关于CPU cache对程序性能的转载 2014-10-04 21:45:19 · 590 阅读 · 0 评论 -
模拟之双队列HDU4884
#include#include#include using namespace std;const int N=1010;const int lim=24*60;int T,n,t,k,m;int cnt[N],last[N];void print(int time){if(time>=lim) time%=lim;printf("%02d:%02d\转载 2014-10-04 21:43:29 · 488 阅读 · 0 评论 -
hash表的应用HDU4886
#include#includeconst int N=2100005;int t,mi[10];bool hash[N];char str[N];void bui(int len){int n=strlen(str);int pre=0,s=0;for(int i=0;i{s=s*8+str[i]-'A';if(i-pre==len){转载 2014-10-04 21:41:11 · 481 阅读 · 0 评论 -
HDU4902巧妙分析避开线段树的使用
#include#include#include#includeusing namespace std;const int ms=1e5+5;struct unit{int t,l,r,x;}a[ms];int vis[ms],ege[ms];int gcd(int a,int b){return b?gcd(b,a%b):a;}int转载 2014-10-04 21:40:13 · 392 阅读 · 0 评论 -
multiset的应用HDU4864
#include#include#include#include#includeusing namespace std;typedef __int64 INT;const int maxn=100000+5;struct node{int x,y;}task[maxn];multiset mt[105];bool cmp(node a,node转载 2014-08-06 15:09:55 · 380 阅读 · 0 评论 -
HDU4801DP,异或运算,与运算,hash的应用
这题用了两次DP,先从前往后求一次异或的,再从后往前求一次与运算的。分别是1:求异或的时候,定义二维数组huo[1000][1024],前者指第几位,后者是哈希的思想,若huo[x][y]=2则表示最右边的数为第x位时,异或值为y的出现了两次,需要再定义一个hash数组,来保存前面出现的所有情况,再找有多少位的时候,用hash数组中出现的所有的值与当前的第x位的数字进行异或。2:求转载 2014-10-04 21:40:53 · 761 阅读 · 0 评论 -
HDU1141
水题一个,但是题意不好理解,看的题解bi翻译 2014-11-15 12:44:01 · 420 阅读 · 0 评论 -
HDU1128
大水题一个,但刚开始我用cout输出RE,后来改成printf就AC了,不知道为什么:翻译 2014-11-14 20:34:24 · 377 阅读 · 0 评论 -
HDU1124
探究精神不够啊,看了半天没思路,就不看了,看到题解才发现是一道简单的shuziyou翻译 2014-11-14 20:30:51 · 498 阅读 · 0 评论 -
HDU1129
大水题一个,但刚开始一直RE,houlai翻译 2014-11-15 11:16:15 · 609 阅读 · 0 评论 -
HDU1073
刚开始使用容器不久,发现容器翻译 2014-11-07 19:32:41 · 493 阅读 · 0 评论