自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 收藏
  • 关注

原创 LA 4094 WonderTeam 构造 + 贪心

足球规则了解一下:90分钟内比分怎么样都无所谓,时间到后打加时30分钟。构造需要满足如下条件:胜利次数最多,进球最多,丢球最少,最后保证排名尽可能靠后。 这就意味着,只要我们获胜一局,考虑极端碾压的情况,那么我们就可以满足进球最多。只要其他队伍失败或者和别人平局,我们就可以保证其他队伍的比分差到令人汗颜。因此实际需要满足的条件只有胜利次数和排名。我们如果想保证排名靠后,就得保证获胜次数很...

2018-02-23 13:32:25 205

原创 LA4850 Installations 贪心 + 枚举 存疑

贪心:首先按截止时间从小到大排序,截止时间相同按照安装时间从小到大排序,这样可以取得全局最优解。 但是我们最小化的目标是最大值与次大值之和。在这里说明做法,首先找到最大值和次大值中较为靠后的位置pos2pos2pos2。那么我们现在想要优化答案,可以把pos2pos2pos2之前的一个任务pos1pos1pos1放到pos2pos2pos2后面。这样pos1pos1pos1到pos2pos2...

2018-02-22 16:53:25 207

原创 关于积性函数求和的几种方法 未完待续

前言:之前一直没有系统的学习过积性函数相关的知识,这方面过于依赖队友,从而不知不觉降低了对自己的要求,深感惭愧,因此补上。参考文献:国家集训队2016论文集 - 任之洲1.定义 1.1 定义域为正整数,陪域为复数域的函数是数论函数,以下所讨论的都是数论函数。 1.2 若f(x)为数论函数,且对于任何互质数a, b,满足f(a)*f(b) = f(a*b),则f(x)为积性函数。...

2018-02-10 00:43:54 973

原创 SPOJ CIRU 圆的面积并 自适应辛普森积分

简略题意:给出n个圆,求他们的面积并。去掉内含圆,因为不会对答案造成影响。去掉和其他圆都相离的圆,这部分答案直接计算。 这样我们就只用计算和别的圆相交的圆的面积了。辛普森积分暴力搞吧,对于x = a的直线,看多少圆覆盖了这条直线,求出这部分的长度即可。#define poj#ifdef poj#include <iostream>#include <cstring>#include

2017-12-25 17:05:08 392

原创 浅谈生成树计数问题,以SPOJ HIGH, BZOJ 4894, BZOJ 1016为例

关于矩阵树定理详见周冬:生成树的计数。给定一个包含n个节点,m条边的无向图,问图中的生成树的种类数有多少。点我,喵=w=? 这就是一个最基本的生成树问题,由此我们可以引出生成树计数的矩阵树定理。矩阵树定理: 一个无向图G的生成树的个数为其基尔霍夫矩阵的任意n-1阶主子式的行列式的绝对值。 G的度数矩阵: D[i][j]=(i==j)?deg[i]:0;D[i][j] = (i==j)?deg[

2017-12-20 18:17:36 301

原创 最小路径覆盖问题 及 相关公式定理

以下内容假定读者已经掌握了二分图匹配:定义 最小点覆盖:最小点覆盖是一个点集,用最少的点和所有边关联。 最小边覆盖:最小边覆盖是一个边集,对于图中所有的点,至少有一条边与其关联。 独立集:独立集是一个点集,任意两点都不存在边。对于二分图而言,令|V|为二分图中的点数,则存在如下定理: 1. 最大匹配数 + 最大独立集 = |V| 2. 最小点覆盖 = 最大匹配数 3. 最小边覆盖 = 最

2017-12-07 16:32:13 842

原创 CCPC FINAL 2017

CCPCfinal打铁了,随后在哈尔滨西站手机被抢了…能做的处理都做了,手机号只能明天再补办,参加了这么多次比赛,大概这次是最令我印象深刻的场次了,随口说一说吧。 周五下午到了哈尔滨,匆匆忙忙办理了住宿,我们3个人从早上都没有吃饭,于是找了一家点吃了一个多小时>3<,报完到回来的路上看到有卖冰糖葫芦和红薯的,于是我和huge买了冰糖葫芦,wc买了红薯。。事实证明红薯真好吃!哈尔滨的冰糖葫芦如字面意

2017-12-03 21:04:15 2204

原创 codeforces 895D String Mark

简略题意:给出等长的AB串,问有多少A串的重排列得到的串字典序大于A串,小于B串。dp[i][0/1][0/1]代表当前处理到第i个位置,之前的选择有没有贴在上边界,有没有贴在下边界,考虑贴近上边界,下边界,或者不贴近边界,得到若干转移。 唯一需要注意的地方就是对于直接转移到dp[i][0][0]的状态,直接计算有重复元素的重排列即可,可以通过直接处理除数扣掉26的常数。#define other

2017-11-30 12:42:37 450

原创 codeforces 895E Eyes Closed 线段树 期望 数学

简略题意: 两种操作。 1. [l1, r1]之间随机一个数,[l2, r2]之间随机一个数,把两个交换 2. 问[l, r]区间和的数学期望是多少。先考虑左部分区间,假设其总和为sum1sum1, 长度为len1len1, 右部分区间总和为sum2sum2,长度为len2len2。 那么对于左区间随机一个数xx,进行操作后的数学期望值为: len1−1len1∗x+1len1∗sum2l

2017-11-27 16:34:12 679

原创 codeforces 895C Square Subsets 线性基 或 状压DP

简略题意:n个数,问有多少选择的方法能够使得这些数的乘积变成完全平方数。经典问题加强数据范围并不会把每个数唯一分解之后,用其质因子以及其对应的幂来表示这个数。如果若干个数乘积想要位完全平方数,那么势必要使得相乘后的每一个质数的幂为偶数。那么我们选择这个数的时候只需要在意他的所有质因子的幂次的奇偶性即可。因为数的大小只有70,至多只会有19种质因子,可以状态压缩。因此如果一个数的质因子的幂次为奇数,就

2017-11-27 06:24:30 414

原创 HDU6006 Engineer Assignment 状压DP

简略题意:n个项目,m个工程师,每个工程师可以提供Di种技术支持,每个项目需要Ci种技术,每个工程师只能属于一个项目。问最多能完成几个项目。因为每个工程师只能被用一次,那么根据当前还剩哪些工程师空闲,我们就可以知道当前这个项目能不能被完成。 用dp[i][j]代表当前处理到第i个项目,还剩下的工程师集合是j。 转移有两种: 1. 不做当前的项目, dp[i+1][j] = dp[i][j]。

2017-11-25 23:34:11 197

原创 HDU6000 Wash 二分+贪心

简略题意:L件衣服,n个洗衣机,m个甩干机,问最短多少时间可以洗完所有衣服并甩干。首先二分时间,得到每个洗衣机能最多在这段时间洗多少衣服,从而得到洗完每个衣服的时间是多少。 同理二分时间,得到每个甩干机能最多在这段时间甩干多少衣服,从而得到甩干每个衣服的时间是多少。那么我们只要贪心的把最早洗完的衣服最晚甩干,从而使得全局时间花费最小即可。#define others#ifdef poj#inc

2017-11-25 23:27:10 427

原创 codeforces 893F Subtree Minimum Query 线段树合并

简略题意:树上每个点存在一个点权,边权为1,每次询问点x的子树中,距离x小于等于k的所有点中最小值是多少。强制在线,老老实实考虑数据结构解法…对每个节点维护一棵线段树即可,父亲节点的线段树由自己本身和所有儿子节点合并而成。对每个点用其深度表示其在线段树对应的位置。用到的只有单点更新,区间查询,合并。 qls:“线段树合并对如闪电!”#define poj#ifdef poj#include <

2017-11-25 23:21:36 421

原创 2017 ICPC BeiJing Regional Hihocoder 1634 Puzzle Game

简略题意:给出一个n*m的矩阵,可以修改其中一个数字为p,使得最大子矩阵的值最小化。暴力的做法就是n*m的枚举节点,然后每次n3n^3的求最大子矩阵。 其实没有必要,假若我们求出了最大子矩阵唯一,那么我们只要枚举最大子矩阵的一个值修改之后,再求即可。 假若最大子矩阵不唯一,那么我们还是只要枚举任意一个最大子矩阵的值即可。因为如果两个最大子矩阵的有公共部分,那么答案必然可以被枚举到。如果没有公共部

2017-11-25 23:13:57 536

原创 2017 ICPC BeiJing Regional Hihocoder 1629 Graph

简略题意:给出一个包含n个节点,m条边的图。每次询问让标号区间为[L, R]之间的点变为安全点,一条安全路径为这条路径上的所有点都为安全点,问每次询问后的图有多少安全路径。带撤销莫队 + 带撤销并查集裸题…赛场上没开到好亏。 其实知道知道图中的每个联通块的大小即可知道路径的个数。 假设当前联通块的大小为x,那么对答案的贡献就是x∗(x+1)/2x*(x+1)/2。#define others#

2017-11-22 15:05:46 553

原创 后缀自动机 笔记

参考了hihocoder和clj的课件,看了看hzwer的代码,懂了些东西,记一下。后缀自动机是一棵trie树。给出一个字符串S,对于S的一个子串s,Right(s) 代表一个集合,为s在S中所有出现的结束位置集合。 以S=”aabbabd”为例,Right(“ab”) = {3, 6},因为”ab”一共出现了2次,结束位置分别是3和6。同理Right(“a”) = {1, 2, 5},...

2017-11-07 20:50:44 290

原创 BZOJ 2120 带修改莫队

简略题意:单点修改,区间查询不同颜色个数。带修改莫队的板题,学习了一个。 和普通莫队的区别在于块的大小需要设定为n2/3n^{2/3},这样可以确保复杂度为O(n3/5)O(n^{3/5})。 每次询问之前需要把在当前时间点之前的所有修改用上,这之后的所有修改删掉。#define others#ifdef poj#include <iostream>#include <cstring>#

2017-10-31 11:34:40 242

原创 HDU6217 BBP Formula

简略题意:问π的十六进制表示的小数点后第n位是多少。关于BBP公式详见WIKI百科这个公式的作用就是计算十六进制下的小数点后第n位,而不必计算前n-1项。 π=∑∞k=0[116k(48k+1)−(28k+4)−(18k+5)−(18k+6)]\pi = \sum_{k=0}^{\infty}[\frac{1}{16^k}(\frac{4}{8k+1})-(\frac{2}{8k+4})-(\fr

2017-10-24 11:19:42 1873

转载 叉姐200题

PublicTransitHard http://community.topcoder.com/stat?c=problem_statement&pm=13797BichromeSky http://community.topcoder.com/stat?c=problem_statement&pm=13711 n个红点,m个蓝点,没有三点共线,第i个红点以p_i的概率出现,求红点的凸包包含所有蓝

2017-10-13 10:29:44 2860

原创 2017ACM/ICPC广西邀请赛-重现赛

截止2017.10.10,已完成[7/12].HDU 6182 HDU 6183 HDU 6184 HDU 6185 HDU 6186 [HDU 6187] HDU 6188 [HDU 6189] [HDU 6190] HDU 6191 [HDU 6192] [HDU 6193]

2017-10-10 18:04:47 436

原创 HDU 6216 模拟

简略题意:每次给出一个质数,问这个质数是不是两个立方数的差。直接模拟即可。#define others#ifdef poj#include <iostream>#include <cstring>#include <cmath>#include <cstdio>#include <algorithm>#include <vector>#include <string>#endif

2017-10-09 16:18:27 245

原创 HDU 6215 模拟链表 + 队列优化

简略题意:对一个序列做如下操作:每次同时将一个数,以及这个数右边的比他小的数删除,执行若干次直到整个序列单调不递减。输出最终序列。假若直接模拟的复杂度是O(n^2)的。 用pre[i]代表与i相连的,在i之前的数。 用suf[i]代表与i相连的,在i之后的数。 其实如果我们需要删除[l,r][l, r]区间,那么我们下次有可能删除的只有pre[l]pre[l],用队列存下这个pre[l]pre

2017-10-09 16:16:10 285

原创 HDU 6214 网络流

简略题意:n个点,m条边,问所有最小割中的最小边数是多少。经典模型 最大流等于最小割,因此求出最大流即可知道最小割。 问题在于多个最小割时怎么办? 我们对每个边扩容,流量为w的变成w*BIG+1,BIG为一个足够大的容量。那么只有原图边数最小的最小割才是此时的最小割。 原图的最小割容量为ans/BIG,边数为ans%BIG。#define others#ifdef poj#include

2017-10-09 16:07:11 208

原创 HDU 6213 模拟

简略题意:A比B大,现在知道两人的生肖,问两人的最小年龄差是多少。…样例就把所有情况都告诉完了。#define others#ifdef poj#include <iostream>#include <cstring>#include <cmath>#include <cstdio>#include <algorithm>#include <vector>#include <stri

2017-10-09 16:02:16 257

原创 HDU 6212 区间DP

简略题意:给出一个01串,连续相同的数大于等于3个可以消除。你可以任意在某个位置插入01,问至少插入多少个01能够使得原串被完全消除。n只有200,答案要求最优解,那么可以考虑区间dp的套路。 定义dp[l][r]代表将区间[l, r]都消除之后的最小代价,枚举转移i,复杂度O(n^3)。考虑转移,我们能做的事情是什么? 对某个位置插入01,使得这段被消除。 1. 枚举切除位置,将原有部分从中

2017-10-09 15:53:15 270

原创 HDU 6211 本源勾股组 + 法里数列

简略题意:给出2k2^k个数v,求出(xi,yi,zi)(x_i, y_i, z_i)满足xi<yi<zi<1e9x_i < y_i < z_i < 1e9的所有本源勾股组之后,问∑v[yi%(2k)]问\sum v[y_i\%(2^k)]的答案是多少。本源勾股组的构造: 找出m,n(m>n)满足x=m2−n2,y=2mn,z=m2+n2,(x,y,z)m, n(m>n)满足x = m^2-n^2

2017-10-09 15:19:32 579 2

原创 HDU 6209 数学

简略题意:问分母在1e5范围内的最简分数中,距离y=k/xy=k/x和y=(√x)y = \sqrt(x)的在第一象限的交点的xx坐标最近的分数是什么。k/x=(√x)k/x = \sqrt(x) => x=k2/3x = k^{2/3}。 我们可以先暴力找到最接近k的整数部分,如果直接找到了答案就输出即可。 否则答案即在x−11和x1\frac{x-1}{1} 和 \frac{x}{1}之间,

2017-10-09 15:05:30 405 1

原创 HDU6206 几何 + 高精度

简略题意:给出4个点的坐标,问第4个点是不是在前3个点组成的三角形的外接圆外。先求出外接圆,然后判断第4个点和圆心的距离即可,唯一的问题是精度不够,需要上java。import java.io.PrintWriter;import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;/** *

2017-10-09 14:49:50 358

原创 2017 ACM/ICPC Asia Regional Qingdao Online

截止2017.10.8,已完成[7/11].HDU 6206 计算几何 HDU 6207 HDU 6208 AC自动机 HDU 6209 二分 HDU 6210 HDU 6211 HDU 6212 HDU 6213 模拟 HDU 6214 网络流 HDU 6215 模拟链表 + 队列优化 HDU 6216 模拟

2017-10-08 17:45:15 238

原创 HDU 6200 边双联通分量 + 并查集 + dfs序 + BIT

简略题意:初始给出一张无向图,两种操作: 1. 添加一条(u,v)(u, v)的无向边。 2. 问从uu到vv的路径上的割边有多少。假若不考虑添加边的操作,问有多少割边,我们只需要边双联通缩个点成树,树上的每个边都是割边。从而转化成树上两点间距离。从根dfs一下转化成有根树的问题。现在考虑添加边的过程,其实就是再缩点的过程,先不考虑如何缩点,假如缩了点之后,我们就需要动态更新两点间距离了。对此我

2017-10-07 18:33:21 309

原创 codeforces gym 101142G Gangsters in Central City

简略题意:一棵树,每个节点有一个局面,根是水源,边是水管。初始每个居民都有水喝。 操作有两种: ‘+ v’, v处的居民楼被强盗占领。 ‘- v’, v处的强盗走了。 对于每个询问,你需要切断一些水管,使得所有强盗没水喝,没水喝的居民尽量少。因为必须有边切才行,所以需要切除的边数最多就是与原来的根相连的边的数目。 原来的树拆成了若干个子树,每个子树的根也有一个边可以切除。单独考虑每个子树的

2017-10-07 18:06:13 341

原创 codeforces 864F 图论

题意:n个节点的有向图,无重边,无自环。 对于一条从s->t的路径,除了t其他城市都可以被游览多次。理想路径是一条路径从s到t的字典序最小路径。q次询问,每次给出一个si,tis_i, t_i。问从sis_i到tit_i的字典序最小的路径的第k个节点是什么。 可能不存在从sis_i到tit_i的字典序最小路径,当且仅当有以下两种情况。 1.1.没有从sis_i到tit_i的路径。 2.2.为

2017-10-01 18:27:01 319

原创 BZOJ1179 强连通缩点 + 最长路

题意:图片丢链接强连通分量内的所有点都可以来回跑,因此只需要在缩点之后的图上跑最长路即可。国庆第一题,1A开了个好头。#include<bits/stdc++.h>using namespace std;typedef long long LL;namespace solver { const int maxn = 550000; const int maxm = 1100000;

2017-10-01 00:08:32 234

原创 BZOJ 2301 莫比乌斯反演

题意:对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。。将一个询问拆成四个询问,原问题即为: ∑ni=1∑mi=1[gcd(i,j)=k]\sum_{i=1}^{n}\sum_{i=1}^{m}[gcd(i, j) = k]。令f(k)f(k)为gcd(i,j)=kgcd(i, j) = k的方案数

2017-09-28 20:34:37 176

原创 BZOJ 1066 / POJ 2732 最大流

题意:在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减1,如果该石柱原来高度为1,则蜥蜴离开后消失,以后其他蜥蜴不能落脚。任何时刻不能有两只蜥蜴在同一个石柱上。每个柱子拆点限制容量,对每个点对

2017-09-28 18:16:20 205

原创 BZOJ 1088 模拟

题意:现在棋盘是n×2的扫雷游戏,第一列里面某些格子是雷,而第二列没有雷。由于第一列的雷可能有多种方案满足第二列的数的限制,你的任务即根据第二列的信息确定第一列雷有多少种摆放方案。只要确定了第一行的前两列是什么,后面都可以唯一确定。因此讨论一下即可。#include <bits/stdc++.h>using namespace std;namespace solver { int n, t[

2017-09-28 16:17:50 201

原创 codeforces 864D 莫比乌斯反演

简略题意:给出nn个数,任选kk个数,若gcd(a1,a2...ak)>1gcd(a1, a2 ... ak) > 1, 他们对答案的贡献是k∗gcd(a1,a2...ak)k*gcd(a1, a2 ... ak),问所有可能的方案的总贡献是多少。枚举gcdgcd,那么我们要计算的就是当前gcdgcd对答案的贡献。 令f(i)f(i)为所有方案中gcd=igcd = i对答案的贡献,F(i)F(i

2017-09-28 14:37:54 351

原创 BZOJ 2005 莫比乌斯反演

简略题意:∑ni=1∑mj=1(2∗gcd(i,j)−1)\sum_{i = 1}^{n}\sum_{j = 1}^{m} (2*gcd(i, j)-1)假设n<mn < m, ∑ni=1∑mj=1(2∗gcd(i,j)−1)\sum_{i = 1}^{n}\sum_{j = 1}^{m} (2*gcd(i, j)-1) =−n∗m+2∗(∑ni=1∑mj=1gcd(i,j))= - n * m

2017-09-28 11:48:52 158

原创 BZOJ1061 费用流

题意:有一项工作需要n天完成,第i天需要AiA_i个人来工作。 有m种人可以雇佣,第i种人工作Si−>TiS_i ->Ti天,雇佣费用CiC_i。 问最少花费多少天完成工作。本意是想学单纯形做的这个题目,结果学到了费用流的强大建图。抽取题目中的有用信息可以得到: 令雇佣第i类志愿者的数目为Xi令雇佣第i类志愿者的数目为X_i。 Minimum:∑Mi=1Ci∗Xi,Xi≥0|i∈[1,m]M

2017-09-27 14:10:11 687

原创 codeforces 864E 背包

简略题意:若干个物品暴露在大火中,拯救第i个物品需要消耗tit_i时间,在did_i时这个物品就会被烧掉,这个物品的价值为viv_i,问能救下的物品价值最大是多少。首先要让物品有序,被烧毁的时间就是天然的序,按摧毁时间排序之后就是基础的DP。 dp[i][j]dp[i][j]代表当前处理到第i个物品,需要花费的时间是j,直接枚举之前救下的的物品转移即可。#include<bits/stdc++.h

2017-09-26 18:03:18 249

空空如也

空空如也

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

TA关注的人

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