随笔分类 - 基础—瞎搞
摘要:脑补一下给出的图:一个环,然后有若干连接环点的边,我们就是要求这些边不重叠 考虑一下不重叠的情况,两个有交边一定要一个在环内一个在环外,所以把相交的边连边,然后跑黑白染色看是否能不矛盾即可(可能算个2 SAT?) cpp include include include using namespace
阅读全文
摘要:设sj,so,si分别是J O I的个数前缀和,然后要求求最长(l,r)满足sj[r] sj[l 1]==so[r] so[l 1]==si[r] si[l 1],化简一下就是满足so[r] so[l 1] (sj[r] sj[l 1) (si[r] si[l 1] (so[r] so[l 1))=
阅读全文
摘要:……我真是太非了,自己搞了7个质数都WA,从别人那粘5个质数就A了…… 就是直接枚举解,用裴蜀定理计算是否符合要求,因为这里显然结果很大,所以我们对多个质数取模看最后是不是都为0 cpp include include include include using namespace std; con
阅读全文
摘要:处理出一个序列c,a[i] b,c[i]=1;a[i]==b,c[i]=0;a[i] include using namespace std; const int N=200005; int n,a[N],b,w,s[N],mp[N],ans; int read() { int r=0,f=1; c
阅读全文
摘要:调死我了…… 首先观察移动方式,需要移动的格子每次移动到相邻格子,一定是先把空白格子挪过去,所以我们得到一种做法,就是bfs预处理出每一个格子的四联通格子之间的空白格子移动距离建边,注意这个移动是不能经过当前枚举的中心格子的,然后把中心格子和它的四联通格子建边权为1的边 注意这里用来建边的点,是(x
阅读全文
摘要:知道按位贪心但是不知道怎么贪…… 求一个a的异或前缀和s,然后按位从大到小贪心,ans的当前位能为0的条件是s中有 =m个位置这一位为0且没有flag,并且s[n]的这一位为0 如果符合要求,那么把s中这一位不为0的位置都打上flag,表示这些点不能作为区间断点了(如果作为断点的话这一位就要为1了,
阅读全文
摘要:感觉我的智商可能不够写题解,就直接截了hzwer的blog 地址http://hzwer.com/2656.html cpp include include include using namespace std; const int N=1000005; int n,a[N],c[N],p; lo
阅读全文
摘要:又犯了zz的错误…… 需要注意的是,被毁掉的星球是不算一个联通块的(可能只有我这么算吧= =) 离线下来时间倒流,就变成了向图里加星球,也就是用并查集维护联通,在用tot变量记录当前答案,每加一个星球就tot++,每合并一个联通块就tot 注意始终没有被毁掉的星球应该在时间倒流前就加进图里
阅读全文
摘要:是贪心 先把两个数组排序,然后贪心的选让a数组占优的(如果没有就算输),这是最大值,最小值是2n 贪心选b数组占优 cpp include include include using namespace std; const int N=100005; int n,a[N],b[N],w,ans1,
阅读全文
摘要:非典型数位dp 先预处理出f[i][j][k]表示从后往前第i位为j时k的个数,然后把答案转换为ans(r) ans(l 1),用预处理出的f数组dp出f即可(可能也不是dp吧……) cpp include include using namespace std; long long l,r,t[2
阅读全文
摘要:想象成一层一层的染,所以相邻的两个格子连边,边权同色为0异色为1,然后答案就是某个格子到距离它最远得黑格子的最短距离的最小值 注意特判掉不需要染色的情况 cpp include include include include using namespace std; const int N=55,i
阅读全文
摘要:首先转换图论模型,把某个客户一个终端的维修时间(+1)%h之后和另一个终端维修时间一样,这样的两个终端连一条有向边,表示推后一个终端就必须推后另一个 然后tarjan缩点,一个scc里的终端是要一起推迟的,scc内点数为新图点权 根据贪心的思想,在缩完点的DAG里,一定是出度为0的点能获得更小的值,
阅读全文
摘要:首先认识一下01邻接矩阵k次幂的意义:经过k条边(x,y)之间的路径条数 所以可以把矩阵当成邻接矩阵,全是 0的话意味着两两之间都能相连,也就是整个都要在一个强连通分量里,所以直接tarjan染色,如果只有一个色块的话就是YES否则都是NO(其实应该能更简单一些,不过tarjan比较顺手) 还有就是
阅读全文
摘要:参考:https://blog.csdn.net/u012288458/article/details/50830498 有点神啊 正难则反,考虑计算不符合要求的三角形。具体方法是枚举每个点,把这个点和(0,0)连线,然后连线左边的点两两组合和连线右边的点两两组合再和当前枚举的点组成三角形都是不符合
阅读全文

浙公网安备 33010602011771号