
hdu
文章平均质量分 74
Cai_Haiq
此人很懒,随便改了几个字
展开
-
HDU1007经典最近点对
输入点的个数n 接下来n行输入n个点 输出最近点对的距离一半 用分治法求最近点对,算法不多说了, code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostream>#include<string>#include <set>using namespace st原创 2018-04-27 08:58:03 · 375 阅读 · 0 评论 -
HDU3306(矩阵快速幂)
正在死磕矩阵类的题,这个题不是很难,想到构造关于A2nA_n^2的矩阵就没问题了。 公式给我们了,直接构造矩阵就好了 ⎡⎣⎢⎢⎢⎢A2nA2n−1AnAn−1Sn−1⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢x21x1y20002xy0y00000⎤⎦⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢A2n−1A2n−2An−1An−2Sn−2⎤⎦⎥⎥⎥⎥ \begin{bmatrix} A_n^2\\ A_{n-1原创 2017-10-10 21:10:01 · 351 阅读 · 0 评论 -
HDU5950(矩阵快速幂)
自从看了矩阵构造专题,再看这种题,腰也不酸了,腿也不疼了,分分钟推出公式,直接手撕代码A掉;f(n)=f(n−1)+2∗f(n−2)+n4f(n)=f(n−1)+2∗f(n−2)+n4f(n)=f(n-1)+2*f(n-2)+n^4 根据矩阵构造原则,构造一个三阶矩阵,然后发现n4n4n^4转化到(n+1)4(n+1)4(n+1)^4缺少四项。添加n3,n2,n,1n3,n2,n,1n^...原创 2017-10-10 20:08:14 · 558 阅读 · 0 评论 -
HDU2522(分数化小数,简单的模拟)
比较简单的直接模拟,只要重复出现相同的数,那么就一定找出循环来了。就像UVA202那样直接模拟找重复就好了。 code:#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int num[100010];void div(int n){ int l=1; num[1]=1;原创 2017-09-20 21:20:58 · 449 阅读 · 0 评论 -
HDU1717(小数化分数,思维数学题)
orz大佬,循环小数化分数 有限小数很简单,无限小数的化法是利用了无限小数循环的性质,把利用倍数关系去掉无穷部分。 以0.94(375)为例子。 现将他乘100,变为94.(375)。 然后在取他的100000倍,变为94375.(375) 这样两个数小数点后相同,相减后就变为整数了。 以x代表原数; 100000x-100x=94375.(375)-94.(375)=94281 9原创 2017-09-07 18:57:43 · 484 阅读 · 0 评论 -
HDU1792(公式)
继续整理公式: 若A,B为两个互质整数,那么A,B最大不能组合的数为A*B-A-B; 不能组合的数的个数为:(A−1)∗(B−1)2{{(A-1)*(B-1)} \over 2} Orz…大佬们牛 知道了公式水题。。。 code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#includ原创 2017-09-03 15:41:40 · 573 阅读 · 0 评论 -
HDU6214(最小割SAP模板题)
这个题就是求最小割边数目,太菜了,这个题交的时候没法看是wa还是TLE,结果连交三发,全都是红,我有些怀疑TLE,但是又不敢肯定,(MDZZ,200点,1000边稠密图还用dinic),当时也蒙了,我就盯着每秒刷新看了11页,看的眼睛都花了,终于找到tle。果断上SAP,终于是过了。MDZZ,这周智障的格外厉害。 关于最小割边的边数量,我们用E代表最大边数量。 每条边的流量记为w,我们存图时,存原创 2017-09-19 21:17:56 · 584 阅读 · 0 评论 -
HDU1671(字典树模板题)
用struct写的静态字典树,感觉就是链式前向星的思想,原来是这么搞的,恍然大悟。 这个题就是需要加个结尾标记,进行两次判断,第一次判断前面是否存在这个字符串的前缀,第二次判断这个字符串是否为之前出现过的字符串的前缀。 剩下的就是手撕代码了。但是,TT,一定别那么大方了,如同吃了香蕉加大枣。别开100万,别开100万,别开100万,重要的事情说三遍,50万刚刚好。我还不信邪的开了70万试试,刚刚原创 2017-09-26 21:30:31 · 423 阅读 · 0 评论 -
HDU6206Apple(Java可以过,但是我有一个大胆的想法)
比赛的时候我有些蠢了。。。 本来想这是个签到题,一看69发,0A。接着就怂了。然后我有个大胆的想法,(接下来说大胆的想法)当时把我激动坏了,(真的蠢)没有这个大胆的想法一看有Java 过了的早就想到用大数A了。结果写了好久才发现人家大数A了,才去写Java。。。 这个题的坑在于数据范围超过了double的精度,所以会有精度丢失,用Java大数就怕了。BigDecimal的精度足够。 Java原创 2017-09-18 21:39:43 · 1064 阅读 · 0 评论 -
HDU1251(静态维护字典树模板题)
字典树入门还是很简单了,30分钟就差不多可以手撕动态维护的板子了。但是这个题用动态维护字典树会MLE,几乎网上所有动态维护的都TLE了。可怕,就算释放也会(虽然只有一次建树,释不释放一个样子)。于是继续学习静态维护字典树。其实静态维护就是用数组模拟建树,答题思路类似链式前向星。 静态维护的时候还要注意数组开的大小,一开始大方100万数字,MLE。84000K,题目要求65535K 别太大方,50原创 2017-09-26 20:21:38 · 464 阅读 · 0 评论 -
HDU2685(gcd的定理)
马上区域赛网络赛了,整理了一些公式,本题是一个公式的模板题。 公式: gac(am−bm,an−bn)=agcd(m,n)−bgcd(m,n)gac(a^m-b^m,a^n-b^n)=a^{gcd(m,n)}-b^{gcd(m,n)} 公式变形: gcd(am−1,an−1)=agcd(m,n)−1gcd(a^m-1,a^n-1)=a^{gcd(m,n)}-1 直接套公式做就好了 cod原创 2017-08-30 21:20:03 · 512 阅读 · 0 评论 -
HDU5976(找规律+费马小定理求逆元)
这个题我一开始以为只是个简单的DP,接着竟然交了个超时,我也很绝望,后来发现不能用DP的思路去做,因为不能出现重复出现的数字。 然后就觉得是找规律的题目。辉哥找出来的规律,然后我说了一下自己的想法就上课去了。今天补上这个题。 code:#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>usi原创 2017-10-20 16:01:50 · 706 阅读 · 0 评论 -
HDU5979水题
水题 code:#include<cstdio>#include<cmath>#include<iostream>using namespace std;const double PI=acos(-1.00);int main(){ int n,d; while(scanf("%d%d",&n,&d)!=EOF) { double sum=0;原创 2017-10-20 16:03:06 · 435 阅读 · 0 评论 -
HDU1754(单点更新线段树)
手撕代码的问题基本解决,但是总是在做题时出现细节性失误,引以为戒,引以为戒。。。 另外,修改区间内的值而不是加减,必须更新到每一个点。 此处有别的问题可以加深一下 code:#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<algorithm>using namespace std;#原创 2018-04-26 19:37:41 · 384 阅读 · 3 评论 -
HDU1166(单点更新的线段树)
在看了大牛NotOnlySuccess的博文和shiqi_614的线段树总结之后,重新做人,决心搞定线段树。原创 2018-04-26 15:16:08 · 503 阅读 · 0 评论 -
HDU2795(灵活的线段树求区间最大值)
这个题一开始有点傻,用的求和的线段树,多了很多无用的查找步骤,然后超时,然后优化了好久才想起来用区间最大值可以避免很多无用查找层次,然后重写。 经过不断的改写,重写,初步掌握线段树的灵活飘逸的代码风格。 code:#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cmath>us原创 2018-04-30 19:38:12 · 364 阅读 · 0 评论 -
HDU6124(有趣的数学题)
为什么可以菜成这样,签到题都不会. 如果a≤b:a\le b:则a%b有(n+1)2a\%b有{(n+1)\over 2}种可能. 如果a≤ba\le b则有1种可能. 总共有(n+1)2+1{(n+1) \over 2}+1种可能. code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm原创 2017-08-16 10:13:28 · 986 阅读 · 0 评论 -
HDU6070(线段树)
多校联合的题,之前竟然没有补,今天补上。 这个题的区间具有不可重叠性。 用线段树存放的是一个起点固定的 (不同数字数加l*k); code:#include<cstdio>#include<cstring>#include<string>#include<iostream>#include<cmath>using namespace std;const int m原创 2017-10-26 15:43:47 · 354 阅读 · 0 评论 -
HDU1757(矩阵快速幂+简单的矩阵构造)
很简单的矩阵构造看似很麻烦,其实直接写就ok了。 ⎡⎣⎢⎢⎢⎢f(n)f(n−1)....f(n−9)⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢a100....0b0100c0010d0000e0000f0000g0000h0001i0000⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢f(n−1)f(n−2)....f(n−10)⎤⎦⎥⎥⎥⎥ \begin{bmatrix} f(n)\原创 2017-10-15 20:25:57 · 365 阅读 · 0 评论 -
HDU2063(二分图匹配模板题)
本来想自己写一个二分图匹配的详解,发现根本写不了,大佬真是太强了,讲的太清楚了,根本没有超越的可能 感谢大佬的博客教导 本体裸地二分图匹配,不多说了, code: 0ms的邻接表//数据不大的时候邻接表比链式前向星快#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostr原创 2017-08-23 20:43:05 · 369 阅读 · 0 评论 -
HDU5980(水题)
签到题 code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostream>#include<string>#include <set>#include<time.h>//a&3==a%4using namespace std ;#define ll long原创 2017-10-21 10:52:03 · 357 阅读 · 0 评论 -
HDU5974(数学题)
太天真了,以为10410^4直接跑暴力了,结果T到哭泣,12W的数据量,只能用公式求。 这个题要推出来gcd(x,y)=gcd(a,b)gcd(x,y)=gcd(a,b),然后转换成一元二次方程的韦达定理,接下来就是验证方程是否有整数解。 code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>原创 2017-10-21 09:23:47 · 563 阅读 · 0 评论 -
HDU1575(矩阵快速幂模板题)
简单的矩阵快速幂,输入矩阵直接套模板做就行了。 code#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostream>#include<string>#include <set>#include<time.h>//a&3==a%4using namespace std原创 2017-10-11 20:57:36 · 416 阅读 · 0 评论 -
HDU5874(这是什么鬼)
我真是菜哭了,这个题题意都纠结了老久。最后总算明白,这个题应该是问,当岛上有a个人时,让这a个人的敌友关系最坏,然后求这种情况下,需要最少的石子种类数,然后和b比较,如果比b大,输出F,否则,输出T。 也就是可以理解为,在(不同的敌友关系下需要的石子种类的最小值)的最大值。我一开始以为2*a是最大,后来发现不是这么简单。 看了大佬的博客,我们假设x个人互相敌对,然后有y个人与这x个人都是朋友,而原创 2017-08-30 19:36:59 · 630 阅读 · 0 评论 -
HDU3836(强联通分量+思维)
题意: 给你两个整数n,m,n代表一共有多少个集合,m代表一共有多少种关系 接下来m行,每行两个整数u,v。代表集合u比包含了集合v。现在问你需要至少在确定几个集合的关系就能证明n个集合全都相等。 是不是有些蒙了? 其实想明白了就很简单了。 集合u v相等的情形:u⊆v⊆uu\subseteq v\subseteq u. 不就是要求酸有的集合的大小关系连成一个环。题目就转换成了给你一个有原创 2017-08-29 20:58:46 · 465 阅读 · 0 评论 -
HDU6033(多校联合签到水题)
数学水题HDU原创 2017-07-26 09:08:19 · 1116 阅读 · 0 评论 -
HDU1164(因数分解水题)
好久之前想做的一个题,今天一看好水。我以前是得有多菜啊。 菜哭在角落。 题意: 给你一个数,要求输出x的所有质因子,并以相乘的形式给出。code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostream>#include<string>#include <set>原创 2017-08-17 10:30:13 · 394 阅读 · 0 评论 -
HDU6059(01字典树求异或最大值)
题意:求a中三个数ai,aj,ak,ai⊕aj<aj⊕ak(i<j<k)题意:求a中三个数a_i,a_j,a_k,a_i\oplus a_j<a_j\oplus a_k(i<j<k) 这里要动态维护字典树,每当输入一个数,就更新一下字典树。最后减去i>j的情况(这里最难懂),搞了好久,算是会了,手撕代码时问题百出,还是没有学到骨子里,留下以后在复习。 参看了两位大佬的博客: 大佬博客 小老博原创 2017-08-05 09:59:35 · 838 阅读 · 0 评论 -
HDU6127Hardchallenge(优美的暴力)
没想到竟然是暴力,再一次菜哭在角落。 题意:给你n个点(不包括原点),每个点都有价值,任意两个点两成的线段的价值是两点的乘积。现有一条过原点的直线。求这条直线穿过的所有嫌多的总价值。 以y轴开始顺时针遍历所有点,l代表直线左边的点的和,r代表直线右边的所有点的和。遍历过程中,如果l*r大于之前的乘积,就更新乘积。 code:#include<cstdio>#include<string.原创 2017-08-16 20:25:23 · 394 阅读 · 0 评论 -
HDU6129(杨辉三角和万恶的Lucas)
菜死了,比赛的时候T到哭 表格中aia^i代表i个a异或 m a1a_1 a2a_2 a3a_3 a4a_4 1 a1a_1 a1a_1^a2a_2 a1a_1^a2a_2^a3a_3 a1a_1^a2a_2^a3a_3^a4a_4 2 a1a_1 a21a_1^2^a2a_2 a31a_1^3^a22a_2^2^a3a_3 a41a_1^原创 2017-08-16 16:28:28 · 359 阅读 · 0 评论 -
多校联合第三次题解(网页打不好开,扒下来看)
1001 考虑容斥,枚举哪些限制强制不满足,把n减去这些不满足限制的和,然后计算组合数.注意到组合数有点难算,注意到可以把组合数看成一个mm阶多项式,就可以把问题转换成对每一个1≤k≤m1≤k≤m计算kk次方的和.如果c=1c=1,可以数位dp,把每一位的贡献dp进去计算.如果c≠1c≠1,需要预先枚举有几个限制不满足,然后再数位dp.注意到可以把随意选择的位的dp结果预处理好来进行加速.时间复杂翻译 2017-08-01 18:37:34 · 336 阅读 · 0 评论 -
HDU3037(Lucas定理求大组合数取模)
HDU3037原创 2017-07-24 12:06:26 · 552 阅读 · 0 评论 -
组合数取模(sdut3895+HDU3037)逆元法或Lucas
组合数取模逆元Lucas定理sdut3895hdu3037原创 2017-07-24 12:11:44 · 488 阅读 · 0 评论 -
HDU6050(矩阵快速幂)
矩阵快速幂原创 2017-08-01 10:54:23 · 686 阅读 · 0 评论 -
HDU6053(莫比乌斯函数+容斥定理)
题意: 给你一个长度为n的数组a,{a1,a2,a3...ana_1,a_2,a_3...a_n},求一个长度也为的数组b{b1,b2,b3...bnb_1,b_2,b_3...b_n}存在的种类数,b有两个要求,①1<bi<ai;②数组b中任意子集的最小公因数大于11<b_i<a_i;②数组b中任意子集的最小公因数大于1 题解:根据题意,b中数必须都是一个数的倍数. 首先遍历a数组找出其中最原创 2017-07-31 09:32:47 · 523 阅读 · 0 评论 -
HDU6034(多校联合B题,25进制模拟)
HDU多校联合模拟题原创 2017-07-26 18:40:41 · 373 阅读 · 0 评论 -
HDU6097(数学题。。。。)
看了题解好久,终于弄懂了,真的是菜。。。。直接上图: 过点P做P的反演点P1P_1,使得OP∗OP1=OD2=r2OP*OP_1={OD}^2=r^2 则OPOD=ODOP1=DPDP1则{OP \over {OD}}={OD \over {OP_1}}={DP \over {DP_1}} 所以只要求出DP1DP_1的最小值,就可以按比例求出DP。同理求出DQ1DQ_1的最小值,就可以按比原创 2017-08-11 11:07:32 · 724 阅读 · 3 评论 -
HDU1528(二分图匹配)
题意:一个人把手牌放在桌子上,另一个人的牌还在手中,他需要调整出牌顺序,是自己能赢得更多的局数,输出最大能赢得局数。 说白了就是个二分图匹配,不过那两个点相连需要自己写函数判断。 code:#include<cstdio>#include<cstring>#include<math.h>#include<algorithm>#include<iostream>#include<stri原创 2017-08-24 09:29:28 · 410 阅读 · 0 评论 -
HDU1711(KMP算法模板题)
这个题就是问你第二个串是不是第一个穿的子串,如果是输出在第一个串中的位置,否则输出-1 kmp的模板题。 直接code:#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#include<iostream>#include<string>#include <set>#include<time.原创 2017-09-04 20:32:53 · 451 阅读 · 0 评论 -
HDU2087(KMP算法模板题)
学了一晚上,总算把KMP算法的最基本的地方看明白了,Orz各位大佬。 网上有很多KMP算法的讲解,这个大佬讲的我看明白了 这个题很简单,就是在模板上加上找出一个后把j重置就行了。 code:#include <queue>#include <cmath>#include <cstdio>#include <string>#include <cstring>#include <iost原创 2017-09-03 21:34:41 · 382 阅读 · 0 评论