![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技巧
文章平均质量分 51
杏花疏影里_吹笛到天明
自能窥宋玉,何必恨王昌。
展开
-
常用技巧——集合的二进制整数表示(挑战程序设计竞赛)
在程序中表示集合的方法有很多种,当元素比较少时,像这样,用二进制码来表示比较方便。集合{0,1,2…n-1}的子集可以用以下方式编码成整数。 换而言之,一个二进制数的某一位上,如果这第i位是1,表示i属于这个集合,否则就不属于。这样表示之后,可进行如下操作:空集.............................0只含有第i个元素的集合{i}............1i含原创 2018-02-03 11:08:21 · 763 阅读 · 0 评论 -
STL-map 关联式容器
map就是一个映射,不过我在程序中对它的处理没有很复杂,大多是把它当成一个下标可以为任意类型的数组。 map在程序中挺常用的,也为字符串处理提供了简便,比如 AtCoder-3941(ABC091 B题)#include<cstdio>#include<iostream>#include<map>#include<vector>#inc...原创 2018-05-07 09:42:51 · 226 阅读 · 0 评论 -
读优
存模板int rd(){ int f=1,x=0;char c=getchar(); while(c<'0'||'9'<c){if(c=='-')f=-1;c=getchar();} while('0'<=c&&c<='9') x=x*10+c-'0',c=getchar(); return f*x;}原创 2019-06-24 19:01:05 · 194 阅读 · 0 评论 -
【换根dp·思维】CodeForces 1187E Tree Painting
传送门题意一棵NNN个节点的树,初始时所有的节点都是白色,第一次可以选择任意一个把它涂成黑色。接下来,只能把与黑色节点原来相连的白色节点涂成黑色(涂成黑色的点视为被删去,与其它节点不相连)。每一次涂的分数为涂的这个白色节点所在的联通块里的白色节点的个数。要把这NNN个节点都涂成黑色,求能获得的最大分数。(人工翻译+手打qwq,若有误差请告诉我)分析没有什么太大思路的题先乱搞然后我们发现...原创 2019-07-01 21:21:55 · 423 阅读 · 0 评论 -
弹簧高跷 [dp+改变枚举顺序小优化]
文章目录DescriptionInputOutputSample InputSample Output分析①②AdditionDescription在草场上有一条直线,直线上有若干个目标点。每个目标点都有一个分值和一个坐标。现在你可以选择其中任意一个目标点开始跳,只能沿一个方向跳,并且必须跳到另一个目标点。且每次跳的距离都不能少于上一次的距离。请问你能得到的最大分值是多少?Input第一行...原创 2019-01-03 12:58:50 · 204 阅读 · 0 评论 -
有趣的卡常数实验【1】2018.10.3
AC代码和TLE代码本质上并没有什么区别 算法相同但是效率差距很大经过控制变量法多次实验,发现问题出在这里:对j的定义上,AC代码是用的LL,而TLE代码是用的int我猜 可能是因为下面的计算操作时,同类型的运算要快得多(a数组和b数组都是long long)启示:充分贯彻历史老师的思想在对于一些变量的定义时,应注意是它们的运算在同一类型下,可以提高效率。...原创 2018-10-03 15:27:07 · 338 阅读 · 0 评论 -
【STL-技巧】next_permutation(p,p+n) 按字典序生成排列
此函数在:#include<algorithm>头文件下它是按字典序对数组生成排列 所以在使用前要将数组排序。举个栗子: sort(p, p+n); // 排序,得到p的最小排列 do { for(int i = 0; i < n; i++) printf("%d ", p[i]); // 输出排列p printf("\n"); ...原创 2018-08-21 15:40:53 · 437 阅读 · 0 评论 -
【技巧-数学】反素数及其在OI中的应用
概念:对于任何正整数n,其约数个数记为f(n),如果某个正整数n满足:对任意的正整数i(0&lt; i&lt; n)都有f(i)&lt; f(n),则称n为反素数。 emmm…,这个概念有点啰嗦,反素数其实就是区间里因子个数最多的那个数。信竞中有如下应用:求约数刚好等于n的最小的那个数求区间里的最小反素数([1,n])求区间里的最小反素数([l,r])2和3其实也是有区别的,...原创 2018-08-17 11:59:52 · 266 阅读 · 0 评论 -
【dp优化】LIS(最长上升子序列)长度的nlogn算法
先上一道例题:Bridging signals POJ - 1631这道题第一反应就想到了 [CEOI96]渡轮问题 就是一个非常裸的求最长上升子序列的长度,还不要方案,非常的水。然而,常规的dp复杂度是 O(n^2) ,这道题会愉快地TLE,所以要进行nlogn级别的优化。//O(n^2) TLE#include<cstdio>#include<algorith...原创 2018-08-08 17:48:19 · 1460 阅读 · 2 评论 -
【技巧】函数sscanf(字符串转化为整数)sprintf(整数转化为字符串)
sscanf(字符串转化为整数)和sprintf(整数转化为字符串)都只适用于“123456”这种字符串sscanf是将字符串转化为整数(或其它类型,这里用较为),格式为 sscanf(字符串的名字,"%d",整型变量的名字);sscanf还可以分离整数和其它字符,下举一例s[100]="123456abcdefg";sscanf(s,"%d%s",num,str);最...原创 2018-08-14 10:14:40 · 4749 阅读 · 0 评论 -
upper_bound()与lower_bound() 及其返回值问题
low_bound() 与 low _bound()都是 &lt; algorithm &gt; 的一个二分函数 比较高效(log的时间复杂度)并且 方便使用前提: 数组有序 语法格式 low_bound(数组首地址,数组尾地址,待查元素的值) 由于函数返回的值是 迭代器(似乎是???)所以还要减去数组首地址才是那个值得下标 low_bound(数组首地址,数组尾地址,待查元素的...原创 2018-07-19 20:53:00 · 847 阅读 · 0 评论 -
【图论】拓扑排序&判环
定义对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。 实现步骤在有向图中选一个没有前驱的顶点并且输出删除所有和它有关的边重复上述两步,直至所有顶点输出,或者当前图中不存在无前驱的顶点。后者代表我们的有向图是有环的,...原创 2018-07-16 21:52:33 · 1238 阅读 · 0 评论 -
【小技巧】统计二进制数1的个数
移位计数依次判断每一位上是不是1int fun(int x)//求二进制1的个数{ int res=0; while(x) { if(x&amp;1)//当前位为1 res++; x&gt;&gt;1; } return res;}更快速的方法每次循环不断清除最右边的1,直到该...原创 2018-02-27 14:04:21 · 424 阅读 · 0 评论 -
POJ3276—Face The Right Way 【常用技巧—反转(开关问题)】
Face The Right Way Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5944 Accepted: 2749Description Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many o原创 2018-02-03 12:46:56 · 389 阅读 · 0 评论 -
做题经验谈
为什么讲如何做题?浪费时间刷几千道水题毫无意义。做真正有用的题目。在一道坑爹题上浪费大量的时间是十分没有性价比的。真正有效的训练在一年内就能成为很强的选手,而一味的磨蹭和颓废4,5年也就那样。成功的路并不拥挤,因为大部分人都在颓☺做题的目的做题的目的是学到新的东西以及锻炼代码能力,而不是盲目刷OJ的rank,那没有任何意义。提高算法能力(想出做法的能力,分析问题的方法等等)...转载 2019-08-14 15:09:37 · 219 阅读 · 0 评论