自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 Codeforces Round 982F

解题思路:tarjan只处理出现了两个强联通分量的问题,要是出现大于1个的分量就输出-1。其实这个问题可以看做是一个强连通分量里面的所以简单环是否存在至少一个公共交点。那么我们假设一个点满足条件就等价于从这个点出发肯定最后不会滞留在一个死循环中,而是最后回到了出发点.对所有路径都满足。如果这个点不满足,那么应该再去找哪个点呢?这个点滞留在死循环中,那么就说明它不属于这个环,所以接下来的那个点一定是...

2018-05-31 21:15:49 276

原创 hdu 4609-fft多项式

题目链接:点击打开链接解题思路:假设三角形最长边是m,那么只要使得其他两边的和大于m,这三边就一定能组成三角形,反之不能。那么求任意两边的和就用到了fft,把输入的数x看做是第x项系数加1.通过自己卷自己的方式得到任意两边的和再去掉重复的,包括一根木头同时用了两次的情况和顺序颠倒的情况要除以二。用ans[i]记录任意两条木头的和不超过i的方案数。那么当x做最长边时,不符合条件的方案数就是ans[x...

2018-05-24 17:48:03 180

原创 FFT多项式乘法学习笔记

基础知识了解:点击打开链接公式证明:点击打开链接综合了这两个博客我才懂了什么是FFT,所以这两个博客讲的比较细的我就不说了,说一些综合的.为什么选择n个n次单位复根?公式1: w(n.k)^2 = w(n/2,k)应用了这个公式才可以把原来n大小的问题变成n/2的问题,这就是分治得到log(n)的由来.将n个数分成奇数偶数分开处理得到公式F(x) = G(x^2) + xH(x^2),其中G(x)...

2018-05-22 20:24:22 456

原创 fjut 3283 - FFT多项式乘法

题目链接:点击打开链接本题简单剖析出来就是固定其中一个串然后另一个串旋转到一个位置值得答案值最大.我们发现每次求值的复杂度是O(n),一共有n种旋转方法,所以总复杂度是O(n^2),如果把这n种都综合起来的话不就是近似多项式乘法了吗?那么怎么转换呢?看下面的图以n=5为例,那么5种旋转方式的值分部在多项式的哪里呢?从图看出就是x^4,x^3和x^8,x^2和x^7,x^1和x^6,1和x^5.总结...

2018-05-22 19:54:01 209

原创 最小覆盖点数

证明最大匹配数==最小覆盖点数点击打开链接#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mx = 1e2 + 10;int n,m,xi[mx*mx],yi[mx*mx],cp[mx];bool vis[mx][mx],vic[mx];bool pipei(int x){...

2018-05-18 21:03:12 360

原创 CodeForces - 730J - dp

解题思路:dp[i][j]表示用i个瓶子刚好能装下j升水时这i个瓶子里现有的水有多少。dp过程看代码就懂了。#include<bits/stdc++.h>using namespace std;const int mx = 1e2 + 10;int a[mx],b[mx],n;int dp[mx][mx*mx];int main(){ scanf("%d",&n)...

2018-05-17 20:51:41 206

原创 hdu 5869 - 树状数组 + 离线 + 离散(扩展)

解题思路:首先这题a[i]值最大1e6所以可以不用考虑离散化,但是为了方便数据扩大我强行再加了一个log(n)复杂度进行数据离散化。所以现在的复杂度应该是nlog(n)*log(n),不离散的话一个log(n)就可以了。vec[i]数组保存保存区间右界为i的所有gcd情况和该gcd最后出现的位置,那么从i位置一直向左扫gcd肯定是会越来越小的或者不变,变小的话最少变小2倍,所以一个前缀gcd个数不...

2018-05-17 20:34:18 313

原创 CF 652D - 离散化+树状数组

解题思路:根据l从大到小排序之后,且相等的l按r从小到大排序。那么肯定就保证了后面的区间左边界肯定包含了前面的区间,那么接下来要做的就是用r做树状数组去维护前缀和就可以了。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mx = 4e5 + 10;int n,sum[mx],an...

2018-05-17 15:14:41 316

原创 LightOJ 1283 - 区间DP

解题思路:记dp[i][j]表示以第i个数为左边界和以第j个数为右边界的最大长度,那么当插入一个数a[v]时,只要满足a[i]<=a[v]<=a[j]就可以进行转态转移到dp[v][j]或者dp[i][v].#include<iostream>#include<cstring>#include<cstdio>#include<algori...

2018-05-16 22:32:29 197

原创 CF- 975C 前缀和二分

解题思路:假设此时在射击到第i个勇士那么就可以用sum[i-1]+这个时刻的箭数量去二分查找第一个大于它的前缀和位置,这个位置就是接下来要到达的勇士位置.sum[i]表示位置i的前缀和。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mx = 2e5 + 10;int n,m;...

2018-05-12 12:49:08 268

原创 CF - 975D 数学推导

解题思路:如果两个点在某一个时刻相遇过那么就有一个时刻k使得x1+k*Vx1 = x2 + k*Vx2  ①y1+k*Vy1 = y2 + k*Vy2  ②又有y = ax+b,代入②中得 ax1+k*Vy1 = ax2+k*Vy2  ③a*① - ③ 得 a*Vx1 - Vy1 = a*Vx2 - Vy2所以满足上面条件的两个点肯定可以相遇,另外需要注意的是当Vx1=...

2018-05-12 12:21:26 264

原创 CF 975E - 求质心+角度(数学)

解题思路:质心:一般的质心公式是:X = (x1+x2+x3+..+xn)/n,Y = (y1+y2+y3+...+yn)/n,但是这得是平均的多边形精度才是正确的.求任意多边形质心步骤1.将多边形划分为n-2个三角形根据上面的公式求得每个三角形的质心2.根据叉积求每个三角形的面积3.质心:X = (x1*m1+x2*m2+x3*m3+...+xn-2*mn-2)/...

2018-05-11 23:40:26 630

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除