bzoj
a13223400732
这个作者很懒,什么都没留下…
展开
-
bzoj3827:[Poi2014]Around the world
首先枚举d(复杂度是O(s))。 接着计算从每一点出发在当前d的情况下最远可以到达那个点(复杂度为O(n))。 最后这些就形成了一棵以2*n为根的树(因为每个点只有一个指向的节点)。 最后在用并查集维护就行了。 总的复杂度是O(n*s)的。 但是这道题疯狂卡常和卡内存。(我这种蒟蒻就MLE和TLE了无数次) 详细看代码。#include<cstdio>#include<cstring>原创 2016-08-27 16:22:43 · 887 阅读 · 0 评论 -
bzoj2124 等差子序列【暴力】
题意自己看 /* 正解是hash+树状数组 但我太蒟蒻了 不会写 只好写暴力了 */ 维护一个0,1字符串 0表示这个字符在左边 1表示不再左边 枚举两边是否有(0,1)对称分布 虽然复杂度超了 但的确能过(数据水)#include<cstdio>#include<cstring>#include<iostream>using namespace std;int n;原创 2016-09-20 21:50:54 · 741 阅读 · 1 评论 -
bzoj1399 WIN
一道dp题 一棵赛程树是一棵以m为根的满二叉树 dp[i][s][h] 三位状态中 i表示这棵子树的根为i s表示这棵子树中含有的节点状态 h表示这棵子树的高度 dp[i][s][h]=∑dp[j][s’][h-1]*dp[i][s-s’][h-1]#include<cstdio>#include<cstring>#include<iostream>#include<algori原创 2016-10-13 14:17:36 · 436 阅读 · 1 评论 -
bzoj4809皇后
虽然数据范围看着很大 但是一个普通的搜索就可以过了 不清楚的可以研究一下8皇后怎么写#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;inline int read(){ int x=0,f=1,ch=getchar(); while(ch原创 2017-04-01 14:25:11 · 588 阅读 · 0 评论 -
bzoj4806 炮
这道题其实是同bzoj1801的, 只是模数不同 用dp[i][j][k]表示第i行有j列有没有子,k列一个子 再枚举一下是从那列转移来的就行了#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int mod=999983;inlin原创 2017-04-01 17:34:11 · 831 阅读 · 0 评论 -
bzoj4807車
毫无疑问,如果把n行看做一行的话 就相当于在m个位置中取n个 答案就是C(m,n)了 套一发高精度就行了#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;inline int read(){ int x=0,f=1,ch=getchar(原创 2017-04-02 09:37:09 · 709 阅读 · 0 评论 -
bzoj3732Network 整体二分
这道题用整体二分就可以做了 但是整体二分不能用递归 每一层整体二分都要重建一遍边 复杂度O(klog(k)log(n))#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;inline int read(){ int x=0,f=1,ch=原创 2017-04-02 14:52:20 · 460 阅读 · 0 评论