上一页 1 ··· 4 5 6 7 8 9 10 下一页
摘要: ```C++ /*H E A D*/ int from[maxnsize[son[u]]){//update son[u]=v; } } } void dfs2(int u,int tp){ pre[++tot2]=u; dfn[u]=tot2; top[u]=tp; if(son[u]) dfs2(son[u],tp... 阅读全文
posted @ 2018-01-28 15:58 Caturra 阅读(149) 评论(0) 推荐(0)
摘要: ```C++ / H E A D / int to[maxnsize[son[u]]){//update son[u]=v; } } } void dfs2(int u,int tp){ pre[++tot2]=u; dfn[u]=tot2; top[u]=tp; if(son[u]) dfs2(s 阅读全文
posted @ 2018-01-28 14:05 Caturra 阅读(143) 评论(0) 推荐(0)
摘要: 这道题被马老板毒瘤了一下,TLE到怀疑人生 //然而BZOJ上妥妥地过了(5500ms+ 400ms+) 要么SPFA太玄学要么是初始化block被卡到O(n^4) 不管了,不改了 另外DP方程值得学习 C++ include define rep(i,j,k) for(int i=j;i vec[ 阅读全文
posted @ 2018-01-27 15:42 Caturra 阅读(122) 评论(0) 推荐(0)
摘要: n维空间中给出n+1个球面上的点求圆心坐标(x0,x1,...xn 1) 任选其中一个点坐标如第一个点(a0,b0...z0) (x0 a0)^2+(x1 b0)^2+...=r^2 对于剩下的n个点都与上面的式子作差,把高次方的消去得到线性方程组 2(a1 a0)x0+2(b1 b0)x1+2(c 阅读全文
posted @ 2018-01-27 15:23 Caturra 阅读(178) 评论(0) 推荐(0)
摘要: 注意到R和C只与最后一个状态有关 阅读全文
posted @ 2018-01-25 20:47 Caturra 阅读(128) 评论(0) 推荐(0)
摘要: dp[i][j]:用A的前i的字符和B的前j个字符能否组成i+j长度的合法C串 O(n^2)的方法有点糟糕 阅读全文
posted @ 2018-01-25 19:33 Caturra 阅读(158) 评论(0) 推荐(0)
摘要: 组合枚举n/i/i,贡献为miu倍 阅读全文
posted @ 2018-01-25 17:14 Caturra 阅读(169) 评论(0) 推荐(0)
摘要: 线性筛的思想是每个数只会被筛一遍,因此时间复杂度是线性的(实际全局vis是大于n的,但以每个数的遍历次数来说恰好是1) 设一个合数的来源只有两种:素数 × 素数,或者是 合数 × 最小的素数,这样可以保证每个合数不会重复遍历 如果i为素数,那就令prime[j]小于等于i来避免重复遍历,所以i%pr 阅读全文
posted @ 2018-01-25 15:20 Caturra 阅读(154) 评论(0) 推荐(0)
摘要: 当A连向C,B连向D时存在相交路径 C++ include define rep(i,j,k) for(int i=j;i=k;i ) using namespace std; const int mod = 100000007; typedef long long ll; ll egcd(ll a 阅读全文
posted @ 2018-01-23 16:51 Caturra 阅读(118) 评论(0) 推荐(0)
摘要: 注意到合法条件是对称的,那很有可能与2有关, 小于2表示没有这一页,大于2表示冲突了 我也不知道这样做对不对的(输入范围很迷),试一下就A了... C++ include define rep(i,j,k) for(int i=j;i T; while(T ){ int n;cin n; rep(i 阅读全文
posted @ 2018-01-22 16:52 Caturra 阅读(126) 评论(0) 推荐(0)
摘要: 注意到使用的代价均是2 7连续的,直接暴力必然有解 C++ include include include include include define rep(i,j,k) for(int i=j;i=k;i ) using namespace std; const int maxn = 1e5+ 阅读全文
posted @ 2018-01-22 14:57 Caturra 阅读(180) 评论(0) 推荐(0)
摘要: 很好奇为什么hzwer那种稍改一下还是无法过样例,代码我没看出问题 换了一种用桶组合挑取两个数不断回溯的做法 这是HDU1427的代码,后者改一改就行了 C++ include define rep(i,j,k) for(int i=j;i s[1] s[2] s[3] s[4]){ rep(i,1 阅读全文
posted @ 2018-01-20 12:43 Caturra 阅读(141) 评论(0) 推荐(0)
摘要: 写了两种DP,第一种是按照自己习惯来xjb敲的,第二种参考别人 熟悉一下树形DP的套路 dp[i][]是维护i及以下的关系最优值的,所以我觉得两次DP记忆搜索之间不清 1应该是正确的(也就做了一次加法) C++ include define rep(i,j,k) for(register int i 阅读全文
posted @ 2018-01-19 15:47 Caturra 阅读(147) 评论(0) 推荐(0)
摘要: 用vis表贪心异常方便 阅读全文
posted @ 2018-01-19 10:26 Caturra 阅读(106) 评论(0) 推荐(0)
摘要: 异或操作蒙蔽了我的双眼 以至于没有第一时间想到前缀和与后缀和 水题做的不够多 阅读全文
posted @ 2018-01-19 09:48 Caturra 阅读(234) 评论(0) 推荐(0)
摘要: 一看C才[0,50],肯定要开51棵线段树维护y区间的最小x值啦 是男人就上51棵..等等空间爆几倍了 动态开点!51棵线段树用全局节点变量控制,有点像主席树 清空工作很简单,把51个树根清掉然后回收节点(tot=0)就行了 然而!真不知道那些内部数据是有多恶心的 MLE × 4 RTE × 4 最 阅读全文
posted @ 2018-01-19 00:46 Caturra 阅读(1316) 评论(0) 推荐(1)
摘要: ```C++ include define rep(i,j,k) for(register int i=j;i define rep(i,j,k) for(register int i=j;i 阅读全文
posted @ 2018-01-18 17:09 Caturra 阅读(147) 评论(0) 推荐(0)
摘要: 感觉像是HDU Keyboard的加强版,先推出3张牌时的所有组合,然后递推出n张牌 看到n=1e18时吓尿了 最后24那里还是推错了.. (5行1列 dp[1][n],dp[2][n],dp[3][n],dp[4][n],dp[5][n]) = A^(n 3) (5行1列 4,12,12,12,2 阅读全文
posted @ 2018-01-18 15:46 Caturra 阅读(155) 评论(0) 推荐(0)
摘要: 集合表示多用[0,n)表示方法 HDU 5067 经典TSP,每个顶点恰经过一次最优 C++ include define rep(i,j,k) for(int i=j;i P; int dp[1=0) return dp[S][v]; if(S==(1 u&1)){ ans=min(ans,DP( 阅读全文
posted @ 2018-01-18 02:36 Caturra 阅读(151) 评论(0) 推荐(0)
摘要: 说好的高斯消元法呢,暴搜都能0ms 这种翻转就是枚举第一行控制变量下面行就全都确定了 代码参考挑战程序设计例题 C++ include include include include define rep(i,j,k) for(int i=j;i=1&&tx=1&&ty (j 1)&1;//最低位判 阅读全文
posted @ 2018-01-18 00:18 Caturra 阅读(137) 评论(0) 推荐(0)
摘要: 听说POJ内部测试数据有问题 我这份代码是WA的(UPD:第二份是AC代码),不过目前把discuss的数据试了一下没毛病 自己试了几组好像也没毛病? 感觉线段树部分的简单hash处理方法还是值得学习的,贴出来吧 阅读全文
posted @ 2018-01-17 16:31 Caturra 阅读(196) 评论(0) 推荐(0)
摘要: 我一直以来都错认为离散化就是换个映射,其实还需要在离散值两端加上相差为1的值才能真正离散 不然看一下test3就知道 不过这个离散姿势太暴力,以至于我1000ms时限跑出998ms(其实是太懒没有删重复的排序..) 线段树区间覆盖没啥好说的,自我感觉struct里写的足够清晰了 终于能睡个好觉了 C 阅读全文
posted @ 2018-01-17 01:19 Caturra 阅读(385) 评论(0) 推荐(0)
摘要: 反转问题,要注意每次rev操作是严格等于k的,否则非法 C++ include include include include define rep(i,j,k) for(int i=j;i P; bool rev[maxn];//rev[i]:[i..i+k 1] bool dir[maxn]; 阅读全文
posted @ 2018-01-16 16:40 Caturra 阅读(172) 评论(0) 推荐(0)
摘要: 书上好多题没补 PS.整个DP是根据Q来划分的,dalao的代码就是不一样啊 C++ include define rep(i,j,k) for(int i=j;i T; while(T ){ cin P Q; rep(i,1,Q) cin A[i];A[Q+1]=P+1; memset(dp,0, 阅读全文
posted @ 2018-01-16 12:27 Caturra 阅读(136) 评论(0) 推荐(0)
摘要: ```C++ include using namespace std; const int maxn = 1e5+11; typedef long long ll; char str[maxn]; int a[26][maxn]; struct ST{ define lc o 1; lazy[lc] 阅读全文
posted @ 2018-01-16 01:37 Caturra 阅读(189) 评论(0) 推荐(0)
摘要: 方程很简单,每一公里往上推就行 WA了2发,忘了单通道时的特判,还有n m傻傻分不清,忘了fixed什么的我好弱啊QAQ.. C++ include define rep(i,j,k) for(int i=j;i vec[1003]; int n,m,p,k,a,b; int main(){ ios 阅读全文
posted @ 2018-01-16 01:27 Caturra 阅读(185) 评论(0) 推荐(0)
摘要: 打表或者画个图可以看出i 根号n时每个i的贡献值相差很小,可以利用公式优化(函数C) 但是注意不能一整段使用公式,否则复杂度还是会劣化到O(n)(显然对gongxian只能逐步递减) 网上看了不少代码,但是都没有对贡献值边界问题给定明确的判断 所以还是加多一个while循环确定贡献值的开端是前面的n 阅读全文
posted @ 2018-01-15 17:24 Caturra 阅读(301) 评论(0) 推荐(0)
摘要: 每层至少一个,滚动时要判上一层非法与否,所以每次都要memset C++ include define rep(i,j,k) for(int i=j;i=k;i ) define scan(a) scanf("%d",&a) using namespace std; const int maxn = 阅读全文
posted @ 2018-01-15 13:17 Caturra 阅读(125) 评论(0) 推荐(0)
摘要: T了两发,DP方程很简单粗暴 dp[i][j][k]:用前i物品使得容量分别为j和k的背包恰好装满 背包的调用只需一次即可,第一次T就是每次check都丧心病狂地背包一次 对于sum的枚举,其实i j枚举到sum/2就可以了 阅读全文
posted @ 2018-01-14 13:23 Caturra 阅读(115) 评论(0) 推荐(0)
摘要: ```C++ include using namespace std; const int maxn = 1e6+11; int ll[maxn],rr[maxn],mark[maxn]; int ra[maxn],n,q; int sz[maxn],ssz[maxn]; define rep(i, 阅读全文
posted @ 2018-01-14 10:41 Caturra 阅读(177) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 下一页