自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Pengwill's Blog

一百年太短,只争朝夕

  • 博客(54)
  • 资源 (2)
  • 收藏
  • 关注

原创 HDU.2588 GCD (欧拉函数)

HDU.2588 GCD (欧拉函数)标签(空格分隔): 数论题意分析我怎么也看不出来这是一道欧拉函数的题目,也是参考了别人的解法写的。 题意就是计算1-N区间里有多少数和N的gcd是大于M的。枚举所有可能情况计算肯定 考虑这样一件事情,我们枚举i∈[1,N],i∈[1,N],令 N=a∗bi=a∗dN = a * b\\i = a * d\\ 当gcd(N,i)=agcd(N,i)

2017-08-27 22:12:00 342

原创 HUD.1213 How Many Tables(并查集 )

HUD.1213 How Many Tables(并查集 )题意分析合并的时候记录一下集合数量,最后输出。代码总览#include <bits/stdc++.h>#define nmax 1005using namespace std;int n,m,t,num;int father[nmax];int rnk[nmax];void makeset(int x){ father[

2017-08-25 00:59:30 242

原创 POJ.2236 Wireless Network (并查集)

POJ.2236 Wireless Network (并查集)题意分析查询点直接O(n)搞就行了,我想的是画个内切正方形,然后二分,或者kdtree。10sec其实不用了。代码总览#include <cstdio>#include <cstring>#include <algorithm>#define nmax 1200using namespace std;struct point{

2017-08-25 00:47:56 215

原创 排位Round2补题报告

排位Round2补题报告T1克鲁斯卡尔跑完最小生成树,把选中边放到edg里面,接着跑树链剖分的两遍DFS,建一颗线段树,直接查最小值就行了。注意是边权线段树,权值放在深度打的点上。 还有就是查询的ID就是她本来的ID,用newid边查边错。 一开始心情爆炸没时间写这题了,其·实挺裸的。#include <bits/stdc++.h>#define nmax 200050#define inf

2017-08-24 23:07:26 285

转载 高精度模板

一、高精度加法#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int L=110;string add(string a,string b)//只限两个非负整数相加{ string ans; int na[L]={0},nb[L]={0}; int la

2017-08-23 23:37:36 261

原创 线性筛法与欧拉函数

线性筛法与欧拉函数标签(空格分隔): 数论一、引入我们已经很熟悉Eratosthenes筛法(埃拉托斯特尼筛法),其基本思想是,每次筛去一个指数的所有倍数,如对于质数2,筛去4,6,8等等,对于质数3,筛去6,9,12等等。 其弊端也显而易见,6和12等等数字,均被筛去的多次,这样就造成了重复,复杂度不够好。 有没有更快的筛法,当然有。二、说在前面对于任何一个数字,我们都能利用唯一分解定理将其拆

2017-08-23 18:28:34 1120

原创 POJ.3107 Godfather (树形DP 树的重心)

POJ.3107 Godfather (树形DP 树的重心)标签(空格分隔): 动态规划题意分析给出一棵树,求出树的重心,树的重心可能有多个。 很裸,记一下最小联通块节点个数minmin,然后对dp扫一遍输出就可以。 注意数据范围是5w。代码总览#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#

2017-08-17 22:02:16 249

原创 POJ.2378 Tree Cutting (树形DP 树的重心)

POJ.2378 Tree Cutting (树形DP 树的重心)标签(空格分隔): 动态规划题意分析有一棵树,是否能找到一个节点,删除后保证最大联通块的节点个数不超过总结点数的一半。若有则一次输出满足的节点编号,否则输出NONE。和树的重心很相似,回顾一下什么是树的重心,树的重心是指,删除个节点以后,最大联通块的节点数最少。 对于每个节点,都能求解出来,在删除他以后其所形成的所有联通块中的节点最

2017-08-17 21:33:25 239

原创 POJ.1655 Balancing Act (树形DP 树的重心)

POJ.1655 Balancing Act (树形DP 树的重心)标签(空格分隔): 动态规划题意分析给定一棵树,求树的重心的编号以及重心删除后得到的最大子树的节点个数size,如果size相同就选取编号最小的.所谓树的重心,指的是:树上的某个节点,其所有子树中最大的子树节点数目最少,换句话说,删除个节点以后,最大联通块的节点数最少。一张图解释一下#include <cstdio>#includ

2017-08-17 20:25:05 295

原创 CodeVS.1380 没有上司的舞会 (树形DP)

CodeVS.1380 没有上司的舞会 (树形DP)标签(空格分隔): 动态规划题意分析题目描述Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。每个职员有一个快乐指数。现在有个周年庆宴会,要求与会职员的快乐指数最大。但是,没有职员愿和直接上司一起与会。输入描述第一行一个整数N。(1<=N<=6000) 接下来N行,第i+1

2017-08-17 17:03:22 203

原创 POJ.1830 开关问题 (高斯消元)

POJ.1830 开关问题标签(空格分隔): 高斯消元 题意分析普通的高斯消元求解异或方程组,本题目要求的是输出总共的方案数目,若过没有则输出Oh,it’s impossible~!!。 主要学习一下a矩阵的构造。首先说一下增广矩阵那部分,也就是常数项一部分。题目给出了每个开关起始状态和末了状态,根据这两个状态我们就可以判断出,具体某个开关是否应该被操作。打个比方,若一开始为1,最后为0,显然这个开

2017-08-17 11:21:25 1097

原创 高斯消元模板

高斯消元模板标签(空格分隔): 模板大作战整数类型高斯消元返回值的情况-2表示有浮点数解,但无整数解-1表示无解0表示唯一解大于0表示无穷解,并返回自由变元的个数其他说明有equ个方程,var个变元。 增广矩阵行数为equ,分别为0到equ-1,列数为var+1,分别为0到var.#include <algorithm>#include <cstring>#include <cmat

2017-08-16 23:56:39 3457 3

原创 POJ.1753 Flip Game (高斯消元 枚举自由元)

POJ.1753 Flip Game (高斯消元 枚举自由元)标签(空格分隔): 高斯消元题意分析基本方法是和解决异或方程组是一样的。严格来讲,遇到有多个自由元的时候,不能统一将自由元当做0处理。 自由元在前几篇题解中已经提及他的概念了,包括一些详细的解释。所谓自由元指的是在有无穷解的情况下,随意取值的自变量。举个栗子例子:{u+x+2y+z=30y+z=20\begin{cases}u+x

2017-08-16 23:38:34 561

原创 HihoCoder.1195 高斯消元·一 (高斯消元 浮点类型)

HihoCoder.1195 高斯消元·一 (高斯消元 浮点类型)标签(空格分隔): 高斯消元题意分析还是裸题,但是就是过不了。 一开始是用的intint类型的,死活过不去,然后讨论得知需要用doubledouble类型的,网上都是一些什么野鸡板子,怎么也过不去。 这些模板类的还是要自己手写一遍,才知道怎么回事。代码总览#include <iostream>#include <algorith

2017-08-16 12:48:09 192

原创 HihoCoder.1196 高斯消元·二 (高斯消元 异或方程组)

HihoCoder.1196 高斯消元·二 (高斯消元 异或方程组)标签(空格分隔): 高斯消元题意分析水题一道,不多说了哈。代码总览#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#define nmax 35using namespace std;int a[nmax][nmax];int

2017-08-16 01:10:26 268

原创 POJ.1681 Painter's Problem(高斯消元 异或方程组)

POJ.1681 Painter’s Problem(高斯消元 异或方程组)标签(空格分隔): 高斯消元题意分析和 POJ.1222 EXTENDED LIGHTS OUT 几乎一样,区别只是规定了维数,不再是5×65×6的矩阵,而是n×nn×n的矩阵。并且直接输出需要修改的次数即可。 需要注意的是,此题多了一个判断无解的情况,即无解时要输出infinf,做到这点也很容易,直接判断Gauss()G

2017-08-16 01:07:22 291

原创 POJ.1222 EXTENDED LIGHTS OUT(高斯消元 异或方程组)

POJ.1222 EXTENDED LIGHTS OUT(高斯消元 异或方程组)标签(空格分隔): 高斯消元题意分析给出t组数据,每组数据为一个5×65×6的矩阵,矩阵中元素为0或1。在矩阵中选择每次点击一个点,可以将其相邻的(上下左右)的元素异或,即1变为0,变为1。求如何点击才能使得矩阵全部变为0。 输出一个5×65×6的矩阵,其中1表示点击该位置,0表示不点击。典型的开关问题,用高斯消元构造

2017-08-16 00:58:18 327

原创 高斯消元快速入门

高斯消元快速入门一、基本描述学习一个算法/技能,首先要知道它是干什么的,那么高斯消元是干啥的呢? 高斯消元主要用来求解线性方程组,也可以求解矩阵的秩,矩阵的逆。在ACM中是一个有力的数学武器.它的时间复杂度是n^3,主要与方程组的个数,未知数的个数有关。 那么什么是线性方程组呢? 简而言之就是有多个未知数,并且每个未知数的次数均为一次,这样多个未知数组成的方程组为线性...

2017-08-15 21:32:11 31527 13

原创 POJ.3667 Hotel ( 线段树 )

POJ.3667 Hotel ( 线段树 )题意分析还需要好好理解一下代码总览#include <cstdio>#include <cstring>#include <algorithm>#define nmax 200010using namespace std;struct Tree{ int l,r; int lenmax; int llen,rlen;

2017-08-14 11:49:01 181

原创 BZOJ.4034 [HAOI2015]树上操作 ( 点权树链剖分 线段树 )

BZOJ.4034 [HAOI2015]树上操作 ( 点权树链剖分 线段树 )题意分析有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 首先上来两次dfs树链剖分为题不大,然

2017-08-14 10:55:21 252

原创 POJ.2763 Housewife Wind ( 边权树链剖分 线段树维护区间和 )

POJ.2763 Housewife Wind ( 边权树链剖分 线段树维护区间和 )题意分析给出n个点,m个询问,和当前位置pos。 先给出n-1条边,u->v以及边权w。 然后有m个询问,询问分2种: 一是讲第i条边的边权修改为w。 二是询问从当前位置走到点x经过的边权和(下次询问就是从这点开始)。边权的树链剖分,其实和点权的差不多。对于一条边u-v,及其边权w,在建立线段树的时候,将深

2017-08-13 20:41:03 434

原创 BZOJ.1036 [ZJOI2008]树的统计Count ( 点权树链剖分 线段树维护和与最值)

BZOJ.1036 [ZJOI2008]树的统计Count (树链剖分 线段树维护和与最值)题意分析(题目图片来自于 这里)第一道树链剖分的题目,谈一下自己的理解。 树链剖分能解决的问题是,题目中反复要求对链上信息进行修改和查询。如果依旧采取用dfs序的方法,会发现不适用,原因是dfs序适用于处理子树的问题。当然暴力肯定是要被卡掉的。 树链剖分分为两次dfs。 第一次dfs求出每个节点的fat

2017-08-13 11:28:53 280

原创 HDU.5692 Snacks ( DFS序 线段树维护最大值 )

HDU.5692 Snacks ( DFS序 线段树维护最大值 )题意分析给出一颗树,节点标号为0-n,每个节点有一定权值,并且规定0号为根节点。有两种操作:操作一为询问,给出一个节点x,求从0号节点开始到x节点,所能经过的路径的权值最大为多少;操作二为修改,给出一个节点x和值val,将x的权值改为val. 可以看出是树上修改问题。考虑的解题方式有DFS序+线段树,树链剖分,CXTree。由于后两

2017-08-12 14:58:35 332

原创 POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)

POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)题意分析卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果。卡卡很喜欢苹果。树上有N个节点,卡卡给他们编号1到N,根的编号永远是1.每个节点上最多结一个苹果。卡卡想要了解某一个子树上一共结了多少苹果。现在的问题是不断会有新的苹果长出来,卡卡也随时可能摘掉一个苹果吃掉。你能帮助卡卡吗?前缀技能边表存储树 DFS时间戳

2017-08-11 23:55:04 888

原创 洛谷 3379 最近公共祖先(LCA 倍增)

洛谷 3379 最近公共祖先(LCA 倍增)题意分析裸的板子题,但是注意这题n上限50w,我用的边表,所以要开到100w才能过,一开始re了两发,发现这个问题了。代码总览#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#define nmax 1000100#define demen 21usi

2017-08-11 19:54:50 278

原创 CodeVs.2370 小机房的树 ( LCA 倍增 最近公共祖先)

CodeVs.2370 小机房的树 ( LCA 倍增 最近公共祖先)题意分析小机房有棵焕狗种的树,树上有N个节点,节点标号为0到N-1,有两只虫子名叫飘狗和大吉狗,分居在两个不同的节点上。有一天,他们想爬到一个节点上去搞基,但是作为两只虫子,他们不想花费太多精力。已知从某个节点爬到其父亲节点要花费 c 的能量(从父亲节点爬到此节点也相同),他们想找出一条花费精力最短的路,以使得搞基的时候精力旺盛,他

2017-08-11 19:34:36 204

原创 CodeVs.1036 商务旅行 ( LCA 最近公共祖先 )

CodeVs.1036 商务旅行 ( LCA 最近公共祖先 )题意分析某首都城市的商人要经常到各城镇去做生意,他们按自己的路线去做,目的是为了更好的节约时间。假设有N个城镇,首都编号为1,商人从首都出发,其他各城镇之间都有道路连接,任意两个城镇之间如果有直连道路,在他们之间行驶需要花费单位时间。该国公路网络发达,从首都出发能到达任意一个城镇,并且公路网络不会存在环。你的任务是帮助该商人计算一下他的最

2017-08-11 19:31:46 220

原创 POJ.1986 Distance Queries ( LCA 倍增 )

POJ.1986 Distance Queries ( LCA 倍增 )题意分析给出一个N个点,M条边的信息(u,v,w),表示树上u-v有一条边,边权为w,接下来有k个询问,每个询问为(a,b),求a,b两点到lca(a,b)的边权之和为多少。倍增维护树上前缀和,求得LCA之后,相应做差即可。代码总览#include <cstdio>#include <algorithm>#include <

2017-08-11 19:27:47 258

原创 POJ.1330 Nearest Common Ancestors (LCA 倍增)

POJ.1330 Nearest Common Ancestors (LCA 倍增)题意分析给出一棵树,树上有n个点(n-1)条边,n-1个父子的边的关系a-b。接下来给出xy,求出xy的lca节点编号。LCA裸题,用倍增思想。代码总览#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#define

2017-08-11 19:16:57 229

原创 UVA.12716 GCD XOR (暴力枚举 数论GCD)

UVA.12716 GCD XOR (暴力枚举 数论GCD)题意分析题意比较简单,求[1,n]范围内的整数队a,b(a<=b)的个数,使得 gcd(a,b) = a XOR b. 前置技能XOR的性质 GCD 由于题目只给出一个n,我们要求对数,能做的也始终暴力枚举a,b,这样就有n^2的复杂度,由于n很大,根本过不了。 于是我们就想用到其中一些性质,如XOR 与GCD,不妨假设 a xor

2017-08-10 11:33:11 255

原创 UVA.10791 Minimum Sum LCM (唯一分解定理)

UVA.10791 Minimum Sum LCM (唯一分解定理)题意分析也是利用唯一分解定理,但是要注意,分解的时候要循环(sqrt(num+1))次,并要对最后的num结果进行判断。代码总览#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#define nmax 505#define ll

2017-08-10 09:12:00 215

原创 UVA.10375 Choose and divide (唯一分解定理)

UVA.10375 Choose and divide (唯一分解定理)题意分析首先写出组合数的公式,然后利用唯一分解定理分解每一项,若是在分子,则加一,在分母减一,最后根据分解的结果计算即可。代码总览#include <cstdio>#include <cstring>#include <algorithm>#include <vector>#include <cmath>#defin

2017-08-10 09:09:09 225

原创 UVA.12169 Disgruntled Judge ( 拓展欧几里得 )

UVA.12169 Disgruntled Judge ( 拓展欧几里得 )题意分析给出T个数字,x1,x3……x2T-1。并且我们知道这x1,x2,x3,x4……x2T之间满足xi = (a * xi-1 + b ) MOD 10001, 求出x2,x4……x2T. 由于本题中的a和b是未知的,所以需要根据已知条件求出a和b,据说有人暴力枚举a和b然后过了。 所以我来换另一种方法。 其实我们可

2017-08-09 22:23:27 226

原创 数论初步

一、唯一分解定理基本描述任何一个大于1的自然数N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积.理解换句话说,它来指导我们分解质因数。 想想在分解质因数的时候,我们使用的是短除法,先试除2,然后试除3,其实就是用到的唯一分解定理。代码找出num的所有质因数void findfactor(int num){ v.clear(); int i = 2; while(nu

2017-08-09 13:56:23 559

原创 HDU.1796 How many integers can you find ( 组合数学 容斥原理 二进制枚举)

HDU.1796 How many integers can you find ( 组合数学 容斥原理 二进制枚举)题意分析求在[1,n-1]中,m个整数的倍数共有多少个 与 UVA.10325 The Lottery 一模一样。前置技能和其一样,但是需要注意的有一下几点: 1. m个数字中可能有0 2. 要用long long 代码总览#include <cstdio>#include <

2017-08-08 12:33:09 332

原创 UVA.10325 The Lottery (组合数学 容斥原理 二进制枚举)

UVA.10325 The Lottery (组合数学 容斥原理)题意分析首先给出一个数n,然后给出m个数字(m<=15),在[1-n]之间,依次删除给出m个数字的倍数,求最后在[1-n]之间还剩下多少个数字(包括1和n),已知m个数字中不会包含1(否则全部都被刷掉了)。前置技能 1. 给出数字s,在[1-n]之间,s的倍数有n/s个。 2. 给出数字s1,和s2,在[1-n]之间,既是s1的倍

2017-08-08 11:06:44 410

原创 UVA.11806 Cheerleaders (组合数学 容斥原理 二进制枚举)

UVA.11806 Cheerleaders (组合数学 容斥原理 二进制枚举)题意分析给出n*m的矩形格子,给出k个点,每个格子里面可以放一个点。现在要求格子的最外围一圈的每行每列,至少要放一个点,并且放在角上的点,同时算那个角所在的行和所在的列。不允许剩下点,求总共的方案数量,结果对1000007取模。 数据范围2 ≤ M,N ≤ 20,K ≤ 500。考虑到要求组合数目,首先就需要预处理50

2017-08-07 16:34:51 504

原创 容斥原理、鸽巢原理快速入门

一、容斥定理基本描述在计数时,必须不重不漏。为了使得重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后把计数时重复计算的数目排斥出去,使得计算的结果既无重复也无遗漏,这种计数的方法称为容斥原理。公式表述公式的解释: 目的是求解m个集合的并集,首先将m个集合相加,减去集合间两两相交的部分,加上三三相交的部分,再

2017-08-07 10:05:46 549

原创 HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析)

HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析)题意分析简单的SG分析题意分析简单的nim 博弈 博弈论快速入门代码总览//#include <cstdio>//using namespace std;////int main()//{// int n;// while(scanf("%d",&n) != EOF){//

2017-08-07 00:22:28 208

原创 HDU.1850 being a good boy in spring festival (博弈论 尼姆博弈)

HDU.1850 Being a Good Boy in Spring Festival (博弈论 尼姆博弈)题意分析简单的nim 博弈 博弈论快速入门代码总览#include <bits/stdc++.h>#define nmax 105using namespace std;int a[nmax];int main(){ int m; while(scanf("%d"

2017-08-07 00:19:37 288

algebra_2005_2006.zip

algebra_2005_2006数据集,常作为知识追踪的使用数据。KDD Cup 2010: Educational Data Mining Challenge使用的数据集之一。

2020-04-11

Dynamic Graph Algorithms

Dynamic Graph Algorithms Methodology & State of the Art Algorithmic Techniques & Experimen Conclusions

2018-08-26

空空如也

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

TA关注的人

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