自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

huantwofat

自己都改变不了,如何改变世界。

  • 博客(10)
  • 收藏
  • 关注

原创 hdu 5760 Palindrome Bo DP

可以发现最后一个字母一定是最左最有,那么dp方程很好转移,但是是3方的,如果先减1话,我们想到每次扫到的结果可以重复利用,于是每次维护当前数的第一个位置在哪即可。#include#include#include#include#includeusing namespace std;const int maxn=5005;const int mod=1000000007;int

2016-07-29 20:04:56 343

原创 hdu 5772 String problem(2016多校第四场1009)最大权闭合图

每个w[i][j]+w[j][i]存在依赖于字母i,j的存在,i,j的存在依赖于0~9对应数字的存在,明显的最大权闭合图。#include#include#include#include#include#include#define maxn 10005#define inf 100000000using namespace std;struct pi{ int t

2016-07-29 15:01:12 300

原创 hdu 5764 After a Sleepless Night(2016多校第四场1002) 线段树

显然对于值为n的点一定构成链,然后我们只需要把两端最小的点作为根(为了字典序),然后就好办了,对于每棵子树根一定是最大值,然后最大值也一定形成链,这样我们就能把所有能确定的点确定下来(根的底端),然后不能确定的点的值一定小于等于输入的全值,下面介绍个人的处理方法:我们从没有分配的最小的权值开始,因为字典序所以要分配给序号小的点,那么怎么办,我们可以先把所有未分配的店按输入的权值从小到大排序,对

2016-07-29 14:58:38 442

原创 hdu 5751 Eades FFT(BC Round 84 E)

我们可以用优先队列什么的随便搞搞,但是由于连续的需要枚举个数,所以复杂度是n^2的,但是呢我们发现用twopoint时移动相当于一个卷积,一直一个从前往后,一个从后往前,然后这个问题就解决了。#include#include#include#include#include#includeusing namespace std ;typedef long long LL ;con

2016-07-24 14:28:51 546

原创 hdu 5737 Differencia (2016多校第二场1004)

线段树log^2的复杂度很显然,怎么优化?其实我们知道一个有序的数组从根往下传是依然有序,只是位置变化了而已,那么我们从根开始维护每个有序数组往下传的时候每个位置在子树中的位置,所以只需要开始的时候二分一下即可。#include#include#include#include #includeusing namespace std;const int maxn=100005;c

2016-07-23 10:53:41 619

原创 hdu 5739 Fantasia (2016多校第二场1006)

本人解法是CDQ+并查集。折半的时候我们用非路径压缩的并查集来维护,但是需要用深度来维护并查集使得复杂度减小很多,接下来就先连后一半的边然后分治前一半,然后撤销后一半的边,然后枚举前一半然后递归后一半#include#include#include#includeusing namespace std;const int maxn=200005;const int mod=10

2016-07-23 10:50:13 443

原创 hdu 5735 Born Slippy(2016多校第二场1002) dp

思路源于camp一道题,很容易想到dp[u]=max(dp[v]+w[u] opt w[v]),但是u太大无法枚举,我们想到可以折半,用后一半更新当前dp值,用前一半来更新数组,假如我已经求出dp[u],那么我们枚举前一半,我们用dp[u]+(i OPT w[u])*256来更新数组 bit[i][w[u&255],然后求dp的时候因为前一半已经更行好所以只要枚举后一半 dp[u]=max(d

2016-07-23 10:46:02 393

原创 hdu4728 PowMod(2016多校第一场1006)

欧拉函数是积性函数,所以从质数入手,对于n的每一个质数我们考虑如果1~m中不是p的倍数那么直接乘(p-1),否则乘以(p-1)之后因为里面也多乘了,所以应该加上sigma(eula(i*n))*(1/p),其中i=1~m/p最后公式等于sum(n,m)=φ(p)∗sum(​p​​n​​,m)+sum(n,​p​​m​​)。k求出来后用欧拉定理递归求值。#include#include#

2016-07-20 17:28:01 442

原创 hdu 5727 Necklace(2016多校第一场1005)

圆排列一种宝石的排列为8!复杂度,接着对于那个yang宝石每个宝石与不会变暗的位置连边,跑一遍匈牙利#include#include#include#include#includeusing namespace std;//************************************************const int MAXN=9;//这个值要超过两边

2016-07-20 15:16:00 436

原创 hdu 5730 Shell Necklace(2016多校第一场)FFT+分治

dp[i]=sigma(dp[j]*a[i-j])具有多项式形式可以考虑fft,但是直接会T,考虑cdq分治,每次分治时跑fft即可#include #include#include#include#includeusing namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a , x ,

2016-07-20 15:13:14 1766

空空如也

空空如也

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

TA关注的人

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