- 博客(166)
- 收藏
- 关注
原创 WTF
///freopen("in.txt","r",stdin);printf("Case %d: %lld\n",++cas,ans); 不等于 printf("%lld\n",ans);printf("Case %d: %lld\n",++cas,ans); 不等于 printf("%lld\n",ans);printf("Case %d:
2018-07-17 20:55:49 401
原创 Karger’s Min Cut Algorithm
无向图的最小割问题,首先想到的就是Ford-Fulkerson算法解s-t最小割,通过Edmonds–Karp实现可以在时间内解决这个问题(n为图中的顶点数,m为图中的边数)但是全局最小割和s-t最小割不同,并没有给定的指定的源点s和汇点t,如果通过Ford-Fulkerson算法来解这一问题,则需要枚举汇点t(共n−1),时间复杂度为.Karger提出了非常著名的基于随机化的全局最小割算法,描述如下:在图中随机取一条边,将边的两个端点合并,同时消除所有由于合并而形成自环的边 重复步.
2021-09-12 14:49:05 790
原创 左倾堆 leftist heap
左倾堆(左偏树)和之前记录过的二叉堆一样,是堆的一种;和普通的二叉堆不同,它是一种可合并堆。可合并堆相比于普通的二叉堆在对两个堆进行合并的操作上具有很大的优势:对于基本的二叉堆合并,时间复杂度为O(n), 而对于可合并堆,其时间复杂度为O(log2n)....
2021-05-28 20:14:56 361
转载 tarjan求无向图的割点和桥
#include<iostream>using namespace std;#include<cstdio>#include<cstring>#include<vector>#define N 201vector<int>G[N];int n,m,low[N],dfn[N];bool is_cut[N];int father[N];int tim=0;void input(){ scanf("%d%d",&.
2020-11-07 11:52:11 187
转载 生成正态分布(高斯分布)的随机数
double generateGaussianNoise(double mu, double sigma){ const double epsilon = std::numeric_limits<double>::min(); const double two_pi = 2.0*3.14159265358979323846; static double z0, z1; static bool generate; generate = !generat.
2020-06-24 10:07:59 1585
转载 一维正态分布的最大似然估计
正态分布密度函数是: 若随机变量X服从一个数学期望为μ、方差为σ2的正态分布,记为N(μ,σ2)。当μ=0,σ2=1是,称为标准正态分布。不需要记住这个复杂的公式,知道它的意义即可,在使用时可以随时查阅。 在研究正态分布时,我们认为每个样本都是等权的,因此μ是随机变量的均值,控制了曲线的位置,σ2控制了曲线的陡峭程度: σ2越小,样本越靠近μ: 在上图中,当σ=0.2时,曲线更陡峭,倒钟更窄,样本更向μ处集中。最大似然估计量 随机变量X服从正态分布:
2020-06-02 18:56:52 16395 2
原创 统计合法序列数目
今晚hu老师发了我一道题目,好久没碰过了,没想到写了一下还ok。题意是时间限制:1.0秒空间限制:256MB输入m,n,x,y表示,序列长度是2*n,序列中最大数是m,合法序列定义:前n个数不下降,后n个数不上升,x和y位置的数相等。求和法序列的数目ans%998244353后的值。(其中 1≤x<y≤2n 1≤n,m≤10^5)样例1输入3213样例1输...
2020-04-25 21:38:14 256
原创 Codeforces Round #571 (Div. 2)C. Vus the Cossack and Strings
字符串a和字符串b(|a|>=|b|),在a中取与b长度相等的所有子串,比较子串与b串中对应位置字符不同的数量,问有多少子串产生偶数数量。假设b长度为3(a1^b1)(a2^b2)(a3^b3)为不同的字符的数量,(a1^b1)^(a2^b2)^(a3^b3)表示的便是奇偶进行下一步:(a2^b1)^(a3^b2)^(a4^b3)==(a1^b1)^(a2^b2)^(a3^b...
2019-07-03 10:41:56 314
原创 计蒜客 南昌网络赛 C. Angry FFF Party(java大数快速幂)
好久没写博客了,周六晚上破实验课好无聊,把下午做的题贴一下。思路很简单,预处理到30就足足够了,10以内是有最优选择的,大数的时候因为两个数字之间的差值是特别大的,所以直接贪心一下就可以了。没学过Java,之前就写过一个java大数的A+B;这次网络赛现学现卖,一A真的是刺激!///package D;import java.util.Scanner;import java...
2019-04-20 18:46:52 321
原创 HDU - 5000 Clone (dp)
题目:克隆人有n个属性,给出每个属性的最大值T[i];属性值可以是0-T[i];如果A的所有属性都不比B低,那么B就不能存活,问最多存活多少人。思路:经过分析可以得到,让他们的属性和达到(T[1] + T[2].....+ T[n] )/2 也就相当于每个属性都取到平均值,无疑可以有更多人; 那么dp[i][j]就代表前i种属性,和达到j的有多少种。dp[i][j] += dp[i-1...
2018-09-17 22:16:38 249
原创 计蒜客 焦作网络赛 String and Times(后缀数组)
题目:给一个字符串问重复出现的次数在[A,B] 区间的子串有多少种。思路:后缀数组,对于一个height[i],求height[i-1]---height[i]区间有多少个h满足存在大于等于h的连续的最长长度>=A并且<=B的一个序列(h的数量比较少可以单个枚举。。),这里用rmq来实现。然后另外算一下A==1的情况,也就是只出现了一次的子串有多少个(比赛时就是这里写错了,唉,我t...
2018-09-15 20:09:34 446 2
原创 HDU 5469 Antonidas(搜索剪枝)
题目:n个节点的一颗树,每个节点有个字母,给出目标字符串,问求是否存在点对u,v使得u到v的路径上的字母正好组成这个字符串。思路:dfs搜索,感觉复杂度过不了,但是却过了。到达一个点时候判断还剩下没匹配的长度是不是小于这个点往外连接的最大长度。#include<bits/stdc++.h>using namespace std;typedef long long ll;...
2018-09-14 16:11:21 355
原创 HDU - 5468 Puzzled Elena (dfs序+容斥原理/莫比乌斯反演)
题目:给出一棵树,每个点上有权值.然后求每棵子树中与根节点互质 即gcd(a,b)=1 的节点个数.思路:该题涉及到一个典型问题.问x与S中有多少个数不互素。解决办法是将S中所有元素依次进行两个步骤:①将元素进行质因数分解。②将质因数可能产生的乘积的出现次数加1。记录一下遍历子树之前的cnt值和遍历子树之后的cnt值,作差就是这棵子树的cnt值。将x进行质因数分解,利用容斥原理求解。#i...
2018-09-14 15:05:54 304
原创 hihocoder 1388 Periodic Signal (FFT)
题目:两个序列,求一个差值平方和最小 min{(a1-b1)²+...+(an-bn)²,(a1-b2)²+...+(an-b1)²,...,(a1-bn)²+...+(an-b1)²}思路:原式变形后就是sigma(a[i]^2)+sigma(b[i]^2)-2*sigma(a[i]*b[(i+k)%n])的最大值,也就是sigma(a[i]*b[(i+k)%n])的最小值。这个可以用F...
2018-09-13 16:30:58 377
原创 HihoCoder - 1387 求树上相同颜色的直径
题目: 给你一棵n个节点的树,每个节点的颜色可能不同,现在要给你两种颜色,问你两种颜色的最大距离。如果有一种颜色不存在那么直接输出-1 即可。#include<bits/stdc++.h>using namespace std;const int inf=99999999;const int maxn=1e5+10;int n,m,a[maxn];struct no...
2018-09-13 14:44:08 347
原创 hdu 6212 Zuma(区间dp)
题目:一共有两种颜色的祖玛游戏,每三个连在一起(或者大于三个)的球球就会被消除掉,问将这个字符串消除干净的最小吐球个数。思路:区间dp,考虑几种情况,**** *****直接是两个组合,1***1中间挖掉一部分后两边合在一起,1***1***1中间挖掉两部分。#include<bits/stdc++.h>using namespace std;const int inf=...
2018-09-13 12:54:16 316
原创 计蒜客 2018南京网络赛 I Skr(回文树)
题目:给一串由0..9组成的数字字符串,求所有不同回文串的权值和。比如说“1121”这个串中有“1”,“2”,“11”,“121”三种回文串,他们的权值分别是1,2,11,121。最终输出ans=135。思路:之前写了马拉车的算法,网上看到的这个题是回文树的模板题。。。#include<bits/stdc++.h>using namespace std;typedef l...
2018-09-11 11:25:06 285
转载 回文树(模板)
引用:Palindromic Tree——回文树【处理一类回文串问题的强力工具】回文树练习题集首先,回文树有何功能?假设我们有一个串S,S下标从0开始,则回文树能做到如下几点:1.求串S前缀0~i内本质不同回文串的个数(两个串长度不同或者长度相同且至少有一个字符不同便是本质不同)2.求串S内每一个本质不同回文串出现的次数3.求串S内回文串的个数(其实就是1和2结合起来)4.求以下标i结...
2018-09-09 21:48:35 256
原创 计蒜客 徐州网络赛 A.Hard to prepare (递推)
题目:n个人坐成一圈,每个人可以选0....2^k-1里面选一个数,问最后相邻的人的数字的xnor大于0的方案数有多少。思路:对于一个确定的k位的数,与它nxor值为0的数字只有一个,就是他的补码。然后对于一条直线来说再加一个满足条件的数的数量就是n-1了。现在这个题目是个圈。加一个数,需要考虑所加数与第1个数是否冲突,与第n-1个数是否冲突。如果第1个数与第n-1个数一样,那么第n-2...
2018-09-09 19:53:24 847 5
原创 计蒜客 徐州网络赛J.Maze Designer(最小生成树)
题目:给一个n*m的方格,每个格子中间有个权值表示加上一堵墙的代价,然后需要构成一个图是的任意两点直接有且只有一条路,给出q组询问,每次查询两点之间的最短距离。思路:最大生成树,求lca。很裸的一道题目,唉。但是比赛时没读懂题意,以为每次查询都对应着一个图。。。。#include <bits/stdc++.h>using namespace std;typedef lon...
2018-09-09 19:29:23 345 3
原创 POJ-2888 Magic Bracelet (polya定理+dp矩阵快速幂)
题目:用m种颜色给长度为n的项链染色,其中k对颜色不能相邻,旋转相同看作同一种方案,问方案数,结果模9973 。思路:对于一段上的方案数是,dp[i][j]=sigma(dp[i-1][k]) (j与k可以相邻);长度非常大的时候这是做不了的,看到这个形式就可以考虑一下矩阵快速幂了。然后应用polya计数。#include<cstdio>#include<cstrin...
2018-09-07 19:12:52 292
原创 hdu 5009 C -Paint Pearls (dp+模拟链表优化)
题目:有n个珠子需要染上特定的颜色,初始的时候是没有染色的,每次染的代价是染色区间中不同颜色数量的平方。思路:最极端的情况是每次拿一个点染色花费1,最终花费为n,所以这个题目最后dp[n]是不会超过n的,往前找转移的点时候只需要往前找到最多产生sqrt(n)的位置就可以了,因为再往前也是徒劳。维护每个数字出现的最后一次的位置,然后中间有些位置是空的啦,用双向链表维护前面那个不同数字最后出现在哪...
2018-09-07 11:52:05 251 2
原创 HDU - 5008 B -Boring String Problem (后缀数组 求排名第k小的子串)
题目:给出一个字符串,求不同的子串中排名第k小的子串,并求出字符串的起止位置,如果有多个重复的子串,求出位置最靠左的子串。思路:子串是后缀的前缀,后缀数组对后缀排序的同时,也对子串进行了排序。对于每一个sa[i],会产生n - sa[i] - height[i]个不同的子串,而且这些子串也是排好序的。维护一个n - sa[i] - height[i]的前缀和,二分找一下就可以,找重复的里面的最...
2018-09-07 11:36:08 493
原创 HDU 3089 Josephus again(约瑟夫环,加速优化)
题目:有N个人,编号为1~N,按顺时针围成一个圈,每数m个人,就将这个人从圈中消除。(N<=1e12)思路:f(1)=0;f(i)=[f(i-1)+m]%i 这里n非常大。1:当m=1的时候接就是最后的那个人了2: f(i-1)+m<i 满足条件时,算一下可以跳多少次还在满足条件下,即 f(i-1)+m*num<i-1+num 求满足条件的最大num如果加上起始...
2018-09-05 17:45:03 474
原创 poj2154 & 2409 (polya计数)
poj2154:用n种颜色涂环形的n个珠子,重复只考虑旋转,不考虑翻转,问能构成多少种?(n<=1e9)自己写的有点丑就用别人推理的截图了#include<cstdio>#include<cstring>using namespace std;const int MAXN=1000010;int prime[MAXN+5];void getP...
2018-09-03 21:31:33 215
原创 HDU-5527 An Easy Physics Problem(平面上点到圆碰撞反弹)
题目:给一个圆和圆外两点A、B,A以给定的速度出发,若碰到圆则发生完全弹性碰撞,问能否经过B。思路:分类讨论1:A的路径碰到了圆,找出两条射线判断是否经过B点。2:A的路径没有碰到了圆,判断一条射线是否经过B点。精度是真的麻烦。。#include<bits/stdc++.h>using namespace std;typedef long double ldouble...
2018-09-03 20:08:23 214
原创 计蒜客 2018南京网络赛 I Skr(马拉车+哈希)
题目:给一串由0..9组成的数字字符串,求所有不同回文串的权值和。比如说“1121”这个串中有“1”,“2”,“11”,“121”三种回文串,他们的权值分别是1,2,11,121。最终输出ans=135思路:昨天比赛时读题给读错了样例也没看怎么来的。写成了所有的回文串权值和。。。码完代码发现,玛德样例都不对,再读了一遍题,真是智障啊。今天看到有大佬讨论马拉车+哈希的做法,(本菜鸡学的马拉车...
2018-09-02 14:07:52 617
原创 HDU - 5868 Different Circle Permutation (Polya定理+欧拉函数优化+矩阵快速幂)
题目:就是n个点围成一个圈,每个人都可染成黑或者白,任意相邻的两个人不可以染成黑色,并且循环同构,问染色的方案数。思路:polya计数,先算一下得到长度为 k 的方案数,可以发现(我没发现) :f(1) = 1, f(2) = 3, f(3) = 4, f(4) = 7,是斐波那契数列,考虑矩阵快速幂来算,然后由于n非常大需要优化,k 作为gcd贡献的数量就是eular(n/k),用欧拉函数...
2018-08-31 22:12:17 251
原创 HDU - 5869 Different GCD Subarray Query(树状数组或线段树+rmq)
题目:给你一组数, 然后是m个查询. 问[l,r]中所有连续区间共有多少不同的GCD思路:每个数往两边扩找不同的gcd,最多能找log个,gcd就会变成1。一开始想的是rmq处理出以每个数为起点往左往右扩展开的首次出现与上一次不同的gcd位置,然后离线用莫队来搞,时间复杂度很高,当时没有想到别的思路,然后敲完后一直re.....事实上这个题应该是线段树或者树状数组,很套路的一个做法。把查询...
2018-08-31 18:12:45 320
原创 codeforces 1028E Restore Array(构造)
题目:给一个长度为n的数组a,ai=b[(i+1)%n]%b[i] ,判断存不存在满足条件的b数组,有的话输出任意一个符合条件的b。思路:一开始发现,找到最大的数a[k]而且a[k]前一个比它小,让b[k]=a[k]然后往前不断加a[i]并得到b[i],可以得到符合答案的b。事实证明wa了。。。把一开始找到的a[k],给它乘以一个特别大的系数就好了。全是0的时候要特殊判断。#inclu...
2018-08-28 20:38:56 369
原创 codeforces 1028C Rectangles (模拟)
题目:给n个矩形,让你随便输出一个能被至少n-1个矩形覆盖住的整数点坐标。思路:拿过题来就写树状数组,写着写着突然感觉线段树更好维护些 emmm 然后快写完突然发现啥都不用也能做,智障阿,直接模拟就行了。。#include <bits/stdc++.h>using namespace std;#define inf 1e9const int maxn=132675...
2018-08-28 16:16:24 361
原创 hdu1002 A+B
写的第一个java代码。感觉自己好无聊。。。import java.util.Scanner;import java.math.*;public class Main { public static void main(String[] args){ Scanner scan=new Scanner(System.in); int le...
2018-08-27 11:02:24 249 1
原创 51nod 1040 求1-n这n个数,同n的最大公约数的和(欧拉函数)
题目:给出一个n,求1-n这n个数,同n的最大公约数的和。比如:n = 6 1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15思路:一个数与n的最大公约数肯定是n的因子中的一个,所以只需要枚举n的每一个因子x,然后看有多少个满足条件gcd(k,n)==x即gcd(k/x,n/x)==1的k就可以了,求这个可以用欧拉函数#incl...
2018-08-26 22:04:33 1172 1
原创 codeforces 540E Infinite Inversions(离散化+树状数组)
题目:一个无限数列,1,2,3,4,...,....,给n个数对<i,j>把数列的i,j两个位置的元素交换。求交换后数列的逆序对数。 思路:离散点并且把两点之间的m个数当作一个数来看记下贡献,然后就是普通的树状数组求逆序对,需要用long long!#include <bits/stdc++.h>using namespace std;typedef l...
2018-08-26 21:31:28 285
原创 hdu 6444 Neko's loop(找循环节 单调队列)
题目:给出一个n个元素的环、可以任意选择起点 i 、然后可以走m步、每次从 i 走到 i+d 位置、所走到的点将产生正负贡献、问你一开始最少拿多少利益,使得加上在环上获取的利益不少于给定的 s思路:找出循环节,然后用单调队列求出每个循环节中最大子段和。tail这个指针写错了,找了两小时错误,fuck!!!#include <bits/stdc++.h>using name...
2018-08-26 20:43:31 449
原创 hdu 6438 Buy and Resell (贪心 优先队列)
题目:n个位置每个位置可以买进一个物品或者卖出一个物品,问最终的获利最大是多少,以及最少交易次数。思路:贪心,当到达一个地方时看一下前面的购进的物品中是不是有价格小于当前的有的话就交易(两种情况:一是前面那个没有用来卖出过,二是用于卖出过(当然同样价格时卖出过的优先,因为要求最小交易次数),然后分类讨论就行了)#include <bits/stdc++.h>using n...
2018-08-26 14:56:17 333
原创 牛客网多校5 D-inv(树状数组 思维)
题目:给一个n以内所有偶数的排列,将有序(从小到大1,3,5......n-1)的奇数列插入到偶数列中,使得形成的逆序对最少。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=2e5+10;int c[maxn],n,a[maxn];int lowbit(int...
2018-08-24 20:11:30 225
原创 杜教BM
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <vector>#include <string>#include <map>#include <set>#i
2018-08-24 20:11:20 446
原创 hdu 6435 Problem J. CSGO(多维最远曼哈顿距离)
题目:在两个点集内各选一点求最远曼哈顿距离。思路:把绝对值去掉后有2^k次方种可能的情况,都枚举一遍。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1e5+10;const ll inf = 1e12;struct point{ ll ...
2018-08-24 20:05:41 307
原创 bzoj 4555 [Tjoi2016&Heoi2016]求和 (NTT)
Description在2016年,佳媛姐姐刚刚学习了第二类斯特林数,非常开心。现在他想计算这样一个函数的值:S(i, j)表示第二类斯特林数,递推公式为:S(i, j) = j ∗ S(i − 1, j) + S(i − 1, j − 1), 1 <= j <= i − 1。边界条件为:S(i, i) = 1(0 <= i), S(i, 0) = 0(1...
2018-08-17 16:18:40 209
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人