
acm
nefu_zc
这个作者很懒,什么都没留下…
展开
-
二分查找易错分析总结
前言:二分分为两种:1.小数二分2.整数二分小数二分一般比较无脑,因为不用考虑边界问题,但是整数的二分涉及到边界问题就比较容易出错,以下是个人对整数二分的一个总结。AcWing 789. 数的范围#include<bits/stdc++.h>using namespace std;const int N = 1e5+10;int main(){ int n,q; cin>>n>>q; int a[N]; for(int i=原创 2021-11-16 17:01:43 · 738 阅读 · 0 评论 -
大模拟技巧
在打acm的过程中,个人总是有这样一个现象,写思路不好想但是码量少的题,能够很快写出来。但是呢,思维难度小,但是码量大的题,总是写很久很久。这是什么原因呢?首先我们要分析一下大模拟,也就是码量大的题的特点:情况多,细节多码量大解决这个问题的纵向长度较长写这种类型的题目时,没有先树立一个大体思路,没有打好一个框架,只把这个思路放在脑子里,当处理细节的时候,处理着就忘了别的细节或者是大体思路,重新回想非常浪费时间,甚至导致忘记一些细节,导致崩盘。所以,为了解决以上问题,应该采取如下措施应对:原创 2021-09-28 15:27:43 · 1543 阅读 · 0 评论 -
线段树练习题
poj-3667–hotel整体来说思路不难想,就是细节比较多,处理复杂,容易出错题意:给出长为n的空间大小,支持两种操作1.给定长度len,尽可能填补靠左边的空间,并输出填补的起始位置2.给定起始位置pos,以及长度len,将以pos为起始长度为len的空间清空思路:变量记录:维护三颗线段树,seg_left[root]表示结点root对应的区间[l,r]上,从左端点l起始的空闲空间长度,seg_right[root]表示结点root对应的区间[l,r]上,从右端点r起始的空闲空间长度,原创 2021-09-24 12:35:25 · 189 阅读 · 0 评论 -
状态压缩dp
题面特征状态压缩dp这类 题目一般比较明显,通常是暴力的思路很好想但是很明显暴力的思路会远远超时,这是特征之一,然后观察到N或者M特别小例如N<10这样的,这是特征之二,这类题通常用状态压缩dp做。解题思路我们用状态压缩dp主要是将某个状态转换成二进制,遍历每一个状态,然后通过一系列预处理,达成降低时间复杂度的目的。例题acwing291. 蒙德里安的梦想#include <bits/stdc++.h>using namespace std;typedef long lon原创 2021-08-05 22:30:42 · 134 阅读 · 0 评论 -
背包dp
求 k 整除最大元素和细节比较多,好题#include <bits/stdc++.h>using namespace std;typedef long long ll;ll dp[105] ;ll w[100005];int main(){ int n,k; ll tmp[105]; memset(tmp,0xcf,sizeof(tmp));//注意初始化,表示初始不可被转移的位置 //cout<<dp[1][1]<<end原创 2021-05-24 20:47:09 · 103 阅读 · 0 评论 -
字典树(trie树)
1472:【例题2】The XOR Largest Pair板子题#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+10;/*第一维的大小是绝对位置,绝对位置的话是数的个数乘以位数,第一位的大小等于树的结点个数,结点个数跟数的个数以及这个数的长度有关*/int tree[32*N][2];int sum[32*N];int cnt=0;void Insert原创 2021-05-17 12:21:24 · 230 阅读 · 0 评论 -
拓扑排序c++(板子题)
HDU1285#include <bits/stdc++.h>using namespace std;vector<int>G[505];queue<int>q2;priority_queue<int,vector<int>,greater<int> >q;//优先队列在从小到大的情况下,没有条件队列即可int in[505];//顶点入度int topo(int n){ for(int i=1;i<原创 2020-12-21 15:37:39 · 348 阅读 · 0 评论 -
icpc上海站2020部分题解
第一次icpc比赛,最后是以3题300多名的成绩直接打铁,很可惜,D题赛后才知道是精度的问题,不然估计可以拿铜。从比赛中也能得到很多经验与教训。经验:1.选好赛区,少打两年。这次站除去打星队都有600多队,只有210个牌,听说济南站只有500队牌子数跟上海站一样,枯了。2.这次思维题有足足5题,全做了可以到银牌,以后要加强手速和思维题的锻炼,可以多打cf。3.数学题偏多。前5题:G B M D I 中,有G D I 都是数学题,注重公式推导,数学运算,这方面以后要加强锻炼。反思个人反思:1.原创 2020-12-14 21:17:42 · 1896 阅读 · 3 评论 -
根据前序序列(或后序序列)和中序序列构造二叉树
前序加中序void Create(BiTree &T,int *pre,int *in,int n){ if(n<=0||!pre||!in){T=NULL;return ;} T=new BiTNode; T->data=*pre; int *p; for(p=in;p<in+n;p++) if(*p==*pre)break; int k = p-in; //下面两句话比较关键 //左子树前序向原创 2020-11-24 21:27:32 · 456 阅读 · 0 评论 -
数位dp
不要62方法一:记忆化搜索/*数位dp分析1.把每位数字抠出来2.分情况:画树状分析图3.预处理数组4.注意处理最后一种情况5.注意位数的问题,预处理的数组表示的含义弄清*/#include <bits/stdc++.h>using namespace std;const int N = 12;typedef long long ll;const int mod = 1e9+7;int dp[10][2];int digit[20];int dfs(int原创 2020-11-12 21:11:18 · 120 阅读 · 0 评论 -
东北四省赛2019 H - Skyscraper(树状数组)
看了下题解思路才做出来的,一开始根本没有思路,还以为是线段树维护。要掌握分析题目的方法:先在样例上尝试,各种方法,并且结合题目,看上去不是线段树就是树状数组,并且也不是简单的维护前缀和,并且有区间修改的操作,想到维护差分数组的树状数组。最后要思路清晰得得出结论,便可找到合适的算法或数据结构解决,此题结论便是:构造差分数组,维护两个树状数组,一个是普通差分数组,另外一个是只维护大于0值的差分数组。在这里总结一下个人对树状数组与线段树区别的理解:树状数组(1)复杂度稳定O(logn),常数小,比线段树快原创 2020-09-24 20:15:14 · 326 阅读 · 0 评论 -
Dijkstra算法和SPFA算法
P4779 【模板】单源最短路径(标准版)/*思路:用链式向前星存储顶点之间的关系与权值用优先队列存储边权小的先出首先将起点入队,向四周发散,再将起点与到达点的总权值入队,保证了是一步一步到达(如果不连通不可能遍历到),同时遍历的过程当中不断找更小的权值并更新优先队列的用处:若有两种不同的到达方式,优先队列会先遍历到短的那一条,然后将其入队,那远的一条就不会入队。*/#include <bits/stdc++.h>using namespace std;const in原创 2020-07-25 17:01:41 · 230 阅读 · 0 评论