![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
acm
仰望蓝天xz
这个作者很懒,什么都没留下…
展开
-
结构体排序重载小于号和cmp函数
//#include<bits/stdc++.h>#include <iostream>#include <stdio.h>#include <string>#include <cstring>#include <set>#include <queue>#include <math.h>#include <map>#include <algorithm>#include原创 2022-04-21 12:29:28 · 341 阅读 · 0 评论 -
优先队列最小生成树prim
#include <algorithm>#include <iostream>#include <stdio.h>#include <string>#include <cstring>#include <queue>#include <map>#include <vector>#incl...原创 2019-11-16 20:51:08 · 297 阅读 · 1 评论 -
2018徐州icpc M
对于每个灯求其探照范围,用向量叉积来判断是否可以照到,题目给的多边形是逆时针的,设 灯为A点,多边形其中一边按逆时针方向来讲起始的点为B结尾的点为C那么(向量)AB x (向量)AC是负数就说明这边能被这个灯照到,所有的灯照的边都找到之后,就是贪心了,对于每个灯把他看做答案的起点,从这个灯照的范围找到一个灯泡,使当前光照范围最大,再从当前光照的区间找到下一个灯泡,使光照范围最大,以此类推的贪心下...原创 2019-10-15 20:55:22 · 259 阅读 · 0 评论 -
覆盖的面积 HDU - 1255(线段树+扫描线处理多次覆盖)
比单求一次覆盖多了一个ans2数组,用来存覆盖两次以上的区域长度,另外,覆盖一次的时候不用下推,就是说如果1-10区域被覆盖一次,表示1-5 和6-10的节点中表示覆盖的值仍然是0,而这次,必须要把1-10覆盖的区域下推,保证1-10其左子树右子树及以下所有树节点都必须更新,上推的时候记得当此节点被全部覆盖后ans2仍然要等于子节点之和。#include<iostream>#inc...原创 2019-06-12 20:59:46 · 250 阅读 · 0 评论 -
棋盘游戏 HDU - 1281
每一行每一列当成一个点,找重要点的时候每个点判断一遍#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<vector>#include<queue>#include<cmath>#include<...原创 2019-07-20 15:39:54 · 53 阅读 · 0 评论 -
hdu 6616(思维)
给n个石头,每个石头都有一个权值,第i个石头的权值就是i,问把石头分成k堆,能不能使每一堆的权值和相等看别人博客写了个不知名的定理,只要n个石头的权值和能整除k,就一定可以分出来,那就分类讨论了:1 当 n=偶 && n/k=奇 这种时候权值和是不能整除k的,2 当 n=偶 && n/k=偶 这种时候是最简单的分k堆,即n个数,分k行,每行偶数个数,1和...原创 2019-08-02 19:49:33 · 405 阅读 · 0 评论 -
hdu 6620 数字华容道定理
没玩过数字华容道,网上找的,判断两张图能不能相等,把1234行按顺序插到前一行结尾,计算除0外的逆序对数,判断两张图0所在的行差和逆序数的奇偶性,相同就能到,而且其他博客都说80步,4*4的图就可到#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h&g...原创 2019-08-02 19:55:55 · 428 阅读 · 0 评论 -
HDU 2665 Kth number (静态主席树模板)
静态主席树,用于查找区间内第k大的数字,空间复杂度4*n+nlog2(n),时间复杂度(n+q)log2(n)#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<vector>#include<queue>#inc...原创 2019-07-25 15:22:06 · 124 阅读 · 0 评论 -
HDU 6601 Keen On Everything But Triangle(静态主席树)
找区间内三条边可组成周长最长的三角形,因为三角形边长关系,最坏情况就是斐波那契数,从1e9按斐波那契数递减,题解上说就44个,所以就暴力找区间内第k,k-1,k-2大数,判断其是否组成三角形保险开个long long ,根据hdu2665模板写的,那题题意真的问题很大,让我以为模板是找第k大的数,结果却是找第k小的,模板还要稍微改一下,特判当所给区间长度没有三直接输出负一,这里卡了一个小时#i...原创 2019-07-25 17:02:42 · 91 阅读 · 0 评论 -
HDU2063-过山车 匈牙利算法
死在建立了双向边#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<vector>#include<queue>#include<cmath>#include<stack>#includ...原创 2019-07-17 09:24:49 · 99 阅读 · 0 评论 -
Rain on your Parade HDU - 2389(二分+HK)
匈牙利算法复杂度o(VE),HK复杂度(sqrt(v)E),这题建图就要3000*3000,用二分优化完再匈牙利爆栈了,只能用HK了,这个模板原来用过,发现ny就没有用,nx是x方的点数#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<...原创 2019-07-24 10:15:17 · 74 阅读 · 0 评论 -
Vases and Flowers HDU - 4614(线段树+二分)
题意就是一排空瓶子放花,操作1:从第x个瓶子开始放花,放y朵花,每个瓶子就一朵花,如果碰到已经有花的瓶子跳过这个瓶子,看下一个,当花没了,或者瓶子不够了结束,输入第一个放花的瓶子和最后一个放花的瓶子,如果一朵花都没放进瓶子输出一行字符,操作2:把x到y之间的花清空,输出清空花的数量开始的时候在想能不能一边更新一边把操作1的起始位置给确定了,后来看别人博客发现,直接暴力二分找起始位置就行了,至于操...原创 2019-05-30 02:33:01 · 137 阅读 · 0 评论 -
2019西安icpc邀请赛M题 Travel (迪杰斯特拉算法+正常优化)
dis数组里面存到此点的最少需要的等级,没到一个点就对其他点进行松弛操作,太久没写最短路了,松弛操作忘了最重要的一步,levpass是通过u到v此边需要的最少等级,所以dis[v]应该是和到达u点且通过u-v边的最少等级进行松弛,就是这里gg,拿铁一杯~,还有坑点就是双向边数组开两倍,用longlong,输出的时候可能会超。这个比二分加最短路的快挺多了,就是计蒜客只有20组数据卡不掉,二分加最短...原创 2019-06-05 00:05:07 · 230 阅读 · 0 评论 -
Atlantis HDU - 1542
#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<vector>#include<queue>#include<cmath>#include<stack>#include<set&...原创 2019-06-11 18:54:31 · 161 阅读 · 0 评论 -
Get The Treasury HDU - 3642线段树+扫描线 解决立方体体积
求立方体三次重叠的体积#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<vector>#include<queue>#include<cmath>#include<stack>#inc...原创 2019-07-15 16:07:14 · 125 阅读 · 0 评论 -
Fire Net HDU - 1045 二分图
连续的一行给一个编号,连续的一列给一个编号,建图。#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<vector>#include<queue>#include<cmath>#include<...原创 2019-07-18 15:35:30 · 82 阅读 · 0 评论 -
The Accomodation of Students HDU - 2444(二分图判断+匈牙利)
染色法判断二分图:对一个点染色为1,对其全部有连线的邻接点染色为与其不用的颜色0,再对所有邻接点的邻接点染色为1,以此类推,当发现一个点i,其邻接点中有一个点的颜色与点i相同则非二分图#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<...原创 2019-07-19 08:53:20 · 97 阅读 · 0 评论 -
Prime Independence LightOJ - 1356 (二分图+HK算法)
建图:奇数个质因子的数一边,偶数个质因子的一边,值相差一个质因子的两个点连线HK:匈牙利的优化版,套模板,讲解在代码里,从各个博客上拼起来的#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<vector>#include&l...原创 2019-07-19 14:44:49 · 150 阅读 · 0 评论 -
hdu6623思维
把4000以内的质数打表,因为只有4000以内的质数的五次方在1e18之内,对每个数进行4000以内的质因子分解,求所用次数最小,要判断中途退出条件,时间卡的很紧,分解完质因子,若n还没有到1,说明他还有4000以上的质因子存在,并且质因子个数之和不会超过4个,特判:假设最少个数为4,那么就是某个数的4次方,简单,假设最少个数为3,那么就是某个数的3次方,二分求,二分写法不一样可能超时和wa,假设...原创 2019-08-01 16:55:26 · 150 阅读 · 0 评论 -
hdu 6621 (主席树)
不用离散化建立主席树,直接建树,二分绝对值ans,让主席树查找[p-ans,p+ans]之间的数是不是又k个,如果是,那么答案就是ans,加个build清空数组就从4秒到超时,虽然它确实没用。#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#incl...原创 2019-08-02 01:09:59 · 259 阅读 · 0 评论 -
Help Jimmy POJ - 1661 dp
dpl[i]=x 表示到达第 i 个阶梯的左端点需要的最少时间,dpr[i]=x 相应的久是到达第 i 个阶梯的右端点所需要的最少时间,对于第 i 个阶梯,往下搜寻距离在Max之内的阶梯,假设找到阶梯 j ,阶梯 j 可以使接住从阶梯 i 左端点跳下的人 ,那么到达阶梯 j 左端点的最短时间就是 dpl[j]=min(dpl[j] , 高度差加上走到 j 左端点的距离)dpr 也是一样的,每...原创 2019-10-06 17:02:48 · 116 阅读 · 0 评论 -
[POJ][1015]Jury Compromise 正确做法
dp[i][j]=k 表示选取 i 个人,其评价差之和为 j 的所有方案中总评价之和最大为 k三重循环,找出各种人数在各个评价差上的最大总评价之和,评价差最多就m202,因为是-20m到20m之间,所以区间平移,计算出来最大区间也不过800。错误做法中,path存储路径有缺陷,当要选择6个人时,碰到选择5个人的方案有两种评价差的和一样小,总评价的和一样大,这是path只会记录一种方案,而如果答...原创 2019-10-06 01:54:29 · 292 阅读 · 0 评论 -
POJ 1458 最长公共子序列dp
#include <iostream>#include <stdio.h>#include <string>#include <cstring>#include <set>#include <math.h>#define eps 1e-14#define pi acos(-1)#define ll long l...原创 2019-10-04 22:26:23 · 119 阅读 · 0 评论 -
2017icpc北京 Pangu and Stones(区间DP初学)
dp[i][j][k]表示区间 i 到 j 之间的数,合并为 k 堆的最小花费当k==1 dp[i][j][1]=min(dp[i][j][1],dp[i][k][v-1]+dp[k+1][j][1]+sum[j]-sum[i-1]);k>1 dp[i][j][v]=min(dp[i][j][v],dp[i][k][v-1]+dp[k+1][j][1]);其中v:l<=v<...原创 2019-09-25 00:16:11 · 144 阅读 · 0 评论 -
hdu 3065 ac自动机
把长串里面不是A到Z的全部变为一种字符,多组输入#include <bits/stdc++.h>#define eps 1e-14#define pi acos(-1)#define ll long long#define RD T*(rand()*2-RAND_MAX)#define Drand (long double)rand()/RAND_MAX#define L...原创 2019-09-21 21:42:26 · 75 阅读 · 0 评论 -
hdu 2896 ac自动机
#include <bits/stdc++.h>#define eps 1e-14#define pi acos(-1)#define ll long long#define RD T*(rand()*2-RAND_MAX)#define Drand (long double)rand()/RAND_MAX#define LINF 0x7f7f7f7f7f7f7f7f#d...原创 2019-09-21 20:46:43 · 80 阅读 · 0 评论 -
2019 ICPC 上海网络赛 D. Counting Sequences I
因为最多就13个非1数字出现,所以枚举2到3000,每个数字出现次数,中间的剪枝要注意的就是连乘之和不能大于6000,连乘之和已经大于6000或者还没选数字但是当前能选最小数字的平方已经大于6000就返回(int)pow(13,1)在我的codeblocks上居然是12,一直不知道错哪里,结果是精度原因。。。。。。。。#include <bits/stdc++.h>#define...原创 2019-09-18 21:30:26 · 161 阅读 · 0 评论 -
2019 icpc上海邀请赛 L. Digit sum(找规律)
给一个十进制的数n,把他转换成b进制,求从1到这个数n在b进制下每个数的每位数之和的总和。题解给的暴力打表就行了。我的解法就是找规律,大概就是先求n/b,这样就知道n的个位数出现了几轮,乘上1到9之和再乘上每个个位数出现的次数1,继续算剩下的没有出现完成一轮的个位数之和,顺便再加上十位,百位。。上的数字之和,还要乘上那个出现次数1,然后n/=b,并且n–(这里的n在个位数算过,所以删掉一),出...原创 2019-09-17 00:42:24 · 233 阅读 · 0 评论 -
hdu 2222 ac自动机初学
求父串中出现子串的次数#include <bits/stdc++.h>#define eps 1e-14#define pi acos(-1)#define ll long long#define RD T*(rand()*2-RAND_MAX)#define Drand (long double)rand()/RAND_MAX#define LINF 0x7f7f7f7...原创 2019-09-13 17:32:28 · 101 阅读 · 0 评论 -
欧拉降幂南京icpc
目前看来这个欧拉降幂的取模操作MOD函数需要在快速幂中使用,代替%号取模,m是模数,a应该是被取模数,但是根据图片,a应该是指数,等一个大佬。最后输出结果的时候还要再对m取模#include <bits/stdc++.h>#define eps 1e-14#define pi acos(-1)#define ll long long#define RD T*(rand()...原创 2019-09-11 22:53:04 · 98 阅读 · 0 评论 -
2019 南昌网络赛 Magic Master
两个迪杰斯特拉,卡在优先队列符号重载#include <bits/stdc++.h>#define INF 0x3f3f3f3f#define LINF 0x3f3f3f3f3f3f3f3fusing namespace std;typedef long long ll;const int maxn = 1e6+10;const int mod=998244353;...原创 2019-09-09 21:23:57 · 170 阅读 · 0 评论 -
hdu 6703 array
思路:在给的数组上建立主席树,改一下查询,查询L到R之间第一个大于等于k的数,再设一个set,把去掉的数放到set中,查询完主席树找set中最接近k的数,答案就是取上面两个数中的最小值#include <bits/stdc++.h>#define eps 1e-14#define pi acos(-1)#define ll long long#define RD T*(ran...原创 2019-08-26 21:14:01 · 241 阅读 · 0 评论 -
hdu 6681 2019 杭电多校九1002 Rikka with Cake(扫描线+树状数组)
题意:给一个矩形,在矩形内部有很多射线,这些射线的起点不会碰到矩形边界,问这些射线把矩形分成了几部分题解:分成的区域数等于线段交点数加一,推导还是看jls的题解把单说求交点个数的问题,我的方法就是扫描线+线段树/树状数组,但是树状数组不太了解,那就用树状数组做吧!1e9的数据肯定先离散化我把横线(平行于x轴的)当做枚举的对象,那些竖线(平行于y轴的)就记录他们的头尾,然后头设置值为1,尾设...原创 2019-08-20 21:22:23 · 168 阅读 · 0 评论 -
hdu 6635 2019杭电多校六 1002 Nonsense Time
从最后一个修改往前遍历,每次如果冻结的是记录中的最长上升子序列,就重新暴力一遍最长上升子序列并记录,注意记录的时候用path,lis只能求出长度,里面的数字不一定是最长上升子序列,复杂度因为是随机生成的序列,所以最长上升子序列长度平均为sqrt(n),修改的时候正好去掉当今最长上升子序列中的数的概率不高,出题人不卡特殊数据还把时间开了14秒,所以复杂度为n*sqrt(n)logn#include...原创 2019-08-09 22:23:10 · 126 阅读 · 0 评论 -
hdu 6628 2019多校五 1005 permutation1
因为题目就要求最后一万个,暴力8!的全排列,按差值排序,给的数超过8,就取第k小然后8个数字每个都加上倒数第九个数字,不到8就直接暴力排序吧。#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#...原创 2019-08-07 02:06:05 · 170 阅读 · 0 评论 -
hdu 6627 2019 多校训练五 1004 equation
给n个ai和bi,找 ∑|ai*x+bi|=c n个一元一次方程等于c的解,可能有多个可能没有,可能无限个对于每个 |ai * x + bi| 函数,可以看出来这是一个在x,y轴上,全部都在x轴上方的一个V字型图像,而这个V字型图像跟x轴只有一个交点,设其为gi, gi=-bi/ai,那就有n个gi,假设n个gi都不同,就把x轴分成了n+1个部分,而每个部分都有n个函数图像...原创 2019-08-07 02:00:10 · 126 阅读 · 0 评论 -
2019杭电多校训练七 hdu 6653 Halt Hater
学大佬的暴力打表找规律,大佬打的表看不懂,自己打了一份。先看看表当a=8 b=9的时候,规律很明显了当a=8 b=8的时候规律是一样的经过测试当a<=b的时候,规律相同当a>b的时候规律发生变化,经过测试,当a>b && a<2*b 的时候规律相同当 a>= 2b 的时候,又一个规律把坐标轴分成四个部分,用那四个零点当原点,判断终点应...原创 2019-08-17 17:22:00 · 261 阅读 · 0 评论 -
hdu 6638 2019多校训练六 1005 Snowy Smile
把点的y轴值离散化一下,假如离散完有Y个数字,那从1到Y,假设每一个数值当成矩形的下边界,然后在开一个循环,当下边界为1时,上边界为1 . 2 . 3 . 4 … Y,假设下边界为2时,上边界为 2 . 3 . 4 … Y。以此类推,每次对于上下边界的假设用线段树求一次最大字段和,建树用的值就是在上下边界内在同一个y轴上的x的和,共有X个,离散化x轴的值可得X,...原创 2019-08-08 23:39:06 · 122 阅读 · 0 评论 -
错排问题
HD2048 HDU 2006’10 ACM contest的颁奖晚会隆重开始了! 为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽奖活动,这个活动的具体要求是这样的: 首先,所有参加晚会的人员都将一张写有自己名字的字条放入抽奖箱中; 然后,待所有字条加入完毕,每人从箱中取一个字条; 最后,如果取得的字条上写的就是自己的名字,那么“恭喜你,中奖了!” 大家可以想象一下当时的气氛之热烈原创 2017-12-11 23:52:53 · 300 阅读 · 0 评论 -
prim算法求最小生成树和迪杰斯特拉求最短路
int pr(){ int sma=INF,pos,lar=0; nod[0]=1; for(int i=0;i&lt;n;i++) dis[i]=l[0][i]; //先选定任意一个点,把其他与其有直接连线的点的距离存入dis for(int i=0;i&lt;n;i++) { sma=INF; f...原创 2018-08-06 20:57:02 · 610 阅读 · 0 评论