关闭

[GarsiaWachs算法] BZOJ 3229 [Sdoi2008]石子合并 & POJ 1738 An old Stone Game & 51Nod 1023 石子归并 V3

教主八题之一 却没有写堆或平衡树 投机取巧了 以后会把四边形不等式优化 和 数据结构维护都写一遍 详细解法见ACdreamers : http://blog.csdn.net/acdreamers/article/details/18043897 O(n2)的算法在这位神犇的实现下表现的十分优越 %%% #include #include #include using namespa...
阅读(284) 评论(0)

[类欧几里得算法 数学技巧] 51Nod 1132 覆盖数字的数量 V2 & Ural 1797 Summit Online Judge. Version 2

传送门:http://acm.timus.ru/problem.aspx?space=1&num=1797 讨论帖 膜拜各路神犇:http://www.51nod.com/question/index.html#!questionId=683 分类讨论 n>=x*y 以及 n #include #include #include using namespace std; typede...
阅读(418) 评论(0)

[数学 几何] 51Nod 1512 向量翻转 & Codeforces #79 (Div. 1 Only) 101C Vectors

可以发现ABC其实都可以旋转 转来转去无非是变幻下坐标系 那么我们设D为C旋转后的向量 B0B1B2B3为旋转后的xiangliang 那么就是判断 A+xC+yD=B0/B1/B2/B3 是否有整数解 注意些细节 #include #include #include #define X first #define Y second using namespace std; type...
阅读(138) 评论(0)

[堆] POJ 3481 Double Queue

就是很基础的两个堆 无聊了打打 据说有人用平衡树? #include #include #include #include #include using namespace std; typedef pair abcd; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p...
阅读(115) 评论(0)

[斐波那契拆分 乱搞 数学] 51Nod 1350 斐波那契表示

可以证明每次选最大的fib数减去一定是最优解之一 然后预处理G[fib[i]-1]  额 代码横跨noip前后 意识模糊 一片mess #include #include #include #include using namespace std; typedef long long ll; ll fib[205]; int maxn; ll F[205]; inline...
阅读(262) 评论(0)

[数论] 51Nod 1217 Minimum Modular & Codeforces 303C #183 (Div. 1) Minimum Modular

N个不同的数a[1],a[2]...a[n],你可以从中去掉K个数,并且找到一个正整数M,使得剩下的N - K个数,Mod M的结果各不相同,求M的最小值。 来自讨论帖:http://www.51nod.com/question/index.html#!questionId=994 这个题我们可以考虑从小到大枚举m(从max(1,n-k)到max(a[i])+1),然后判断能否...
阅读(347) 评论(0)

[五边形数定理 DP] 51Nod 1259 整数划分 V2 & HDU 4651 Partition

详见:http://blog.csdn.net/acdreamers/article/details/12259815 #include #include #include using namespace std; typedef long long ll; const int N=50005; const int P=1e9+7; ll F[N],f[N];...
阅读(187) 评论(0)

[单调队列] 51Nod 1275 连续子段的差异

发现自己还不是很懂单调队列这一套理论啊 #include #include #include using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2...
阅读(120) 评论(0)

[KMP next树] 51Nod 1277 字符串中的最大值

AC自动机的fail可以成树 KMP的next也能成树 这道题就是沿着树往上统计出现次数 #include #include #include #include using namespace std; const int N=100005; int n; char S[N]; int next[N]; int cnt[N]; int main(){ scanf("%s",S...
阅读(299) 评论(0)

[DP] 51Nod 1293 球与切换器

经过该切换器的球的总量是k,发现如果是该位置的值是1,那么会有(k+1)/2的球像右去,剩下的球向下去。如果该位置的值是-1,那么会有(k+1)/2的球像下去,剩下的球向右去。 #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf...
阅读(135) 评论(0)

[贪心 DP] 51Nod 1241 特殊的排序

求出最大的连续子序列即可 然后不对的向两边怼 #include #include #include using namespace std; const int N=50005; int n,a[N],pre[N],ans; int f[N]; int main(){ scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",a+i...
阅读(153) 评论(0)

[数论] 51Nod 1225 余数之和

n%i=n-[n/i]*i #include #include #include using namespace std; typedef long long ll; int P=1000000007; int INV=5e8+4; ll n; ll Ans=0; inline ll Sum(ll l,ll r){ return ((l+r)%P)*((r-l+1)%P)%P*...
阅读(130) 评论(0)

[分治 || 单调栈 单调队列] 51Nod 1215 数组的宽度

分治 #include #include #include using namespace std; typedef pair abcd; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,1...
阅读(199) 评论(0)

[DP 数论] 51Nod 1201 整数划分

dp[i][j] 代表用j个数字的和为i的数的个数 dp[i][j] = dp[i - j][j - 1] + dp[i - j][j](不过好像不太对) 把所有的数都加上1,然后再额外的给出一个1  或 将现有的每一位加1 #include #include #include #include using namespace std; const int N=50005;...
阅读(97) 评论(0)

[数论] 51Nod 1189 阶乘分数

(X-N!)(Y-N!) = (N!)^2 #include #include #include using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p1==p2) { p2=(p1=buf)+fread(buf,1,1...
阅读(117) 评论(0)

[乱搞 分类讨论 数学] 51Nod 1131 覆盖数字的数量

可以知道[a,b]能覆盖的区间是[a,b],[2a,2b],[3a,3b]...[ka,kb]...等等,先求出这些区间何时交在一起即k*b>=(k+1)*a-1,然后再细致一点分类讨论即可。 #include #include #include using namespace std; typedef long long ll; inline char nc(){ static ...
阅读(156) 评论(0)

[贪心 置换] 51Nod 1125 交换机器的最小代价

先找置换 肯定会形成循环 如果问最小交换次数 就是n-循环数 这里问最小代价 先分成很多组置换,因为是两两交换,所以在每组置换内部,让最小的数反向走一圈,也就是 最小数交换 置换长度-1 次,其他数交换一次.还有一种可能,是引入置换外部的最小数,也就是先交换内部最小数和外部最小数,再按第一种方法搞,最后再换回来. #include #include #include...
阅读(282) 评论(0)

[组合数] 51Nod 1161 Partial Sums & Codeforces 223C #138 (Div. 1) Partial Sums

自己手推就能发现是个斜着的杨辉三角 #include #include #include using namespace std; typedef long long ll; const int P=1000000007; const int N=5005; int n,K; ll a[N]; ll inv[N]; inline void Pre(){ inv[1]=1; ...
阅读(190) 评论(0)

[悬线法] 51Nod 1158 全是1的最大子矩阵

复习 #include #include #include using namespace std; const int N=505; int n,m,a[N][N]; int lft[N][N],rgt[N][N],hgt[N][N]; int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); ...
阅读(169) 评论(0)

[随机化 矩阵乘法] BZOJ 2396 神奇的矩阵 & 51Nod 1140 矩阵相乘结果的判断 & POJ 3318 Matrix Multiplication

不说了 经典 #include #include #include #include #define cl(x) memset(x,0,sizeof(x)) using namespace std; typedef long long ll; inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; if (p...
阅读(192) 评论(0)
64条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:261085次
    • 积分:11910
    • 等级:
    • 排名:第1320名
    • 原创:969篇
    • 转载:3篇
    • 译文:0篇
    • 评论:49条
    最新评论