自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BZOJ1010玩具裝箱Toy

BZOJ1010玩具裝箱ToyDescriptionP教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压 缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中. P教授有编号为1..N1 .. N的NN件玩具,第ii件玩具经过压缩后变成一维长度为CiC_i.为了方便整理, P教授要求在一个一维容器中的玩具编号是连续的。同时如果一个一维容 器中有多个

2017-01-28 14:41:28 878

原创 BZOJ1001[BeiJing2006]狼抓兔子最小割網絡流

Description现在小朋友们最喜欢的”喜羊羊与灰太狼”,话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下三种类型的道路 1:(x,y)<==>(x+1,y) 2:(x,y)<==>(x,y+1) 3:(x,y)<==

2017-01-19 08:50:34 427

原创 字符串哈希初步 洛谷3370

跑得好慢QAQ#include<cstdio>#include<cctype>#include<cstring>using namespace std;inline void read(int &x){ x = 0; int flag = 1; char c; while(! isgraph(c = getchar())) if(c == '

2017-01-17 10:47:47 542

原创 期望DP初步

感觉期望DP这种东西像是玄学… 主要总结说一点基础性的东西, 或许对于理解题目的做法会有一点帮助.首先是关于独立事件, 互斥事件的概念. 通俗地说, 就是对于两个事件A, B, 假如满足发生了其中一个就不会发生另一个, 则称A, B为互斥事件; 假如A与B的发生没有任何关系, 可能都发生, 可能只有一个发生, 也可能都不发生, 则称A, B为独立事件. 下文的讨论主要针对独立事件进行.一. 事

2017-01-14 19:57:29 536

原创 BZOJ2527Meteors

BZOJ2527 整体二分模板题#include<cstdio>#include<cctype>#include<vector>#include<cstring>#include<string>#include<climits>using namespace std;inline int read(){ int x = 0, flag = 1; char c;

2017-01-14 15:44:25 395

原创 POJ2104Kth Number

整体二分模板题, 有些细节需要注意#include<cstdio>#include<cctype>#include<climits>#include<algorithm>#include<cstring>using namespace std;inline int read(){ int x = 0, flag = 1; char c; while(! isgr

2017-01-12 11:58:10 363

原创 BZOJ3295动态逆序对

一道比较傻的CDQ分治#include<cstdio>#include<cctype>#include<algorithm>#include<cstring>using namespace std;inline int read(){ int x = 0, flag = 1; char c; while(! isgraph(c = getchar()))

2017-01-11 14:46:50 382

原创 BZOJ2683简单题

Description你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: 命令参数限制内容1 x y A1<=x,y<=N,A是正整数将格子x,y里的数字加上A2 x1 y1 x2 y21<=x1<= x2<=N1<=y1<= y2<=N输出x1 y1 x2 y2这个矩形内的数字和3无终止程序Input输入文件第一行一个正整数N。 接下来每行一个操作。 O

2017-01-10 15:36:39 441

原创 HDU5618 Jam's problem again

CDQ分治模板题#include<cstdio>#include<cctype>#include<algorithm>#include<cstring>using namespace std;inline int read(){ int x = 0, flag = 1; char c; while(! isgraph(c = getchar()))

2017-01-10 09:15:14 335

原创 BZOJ2002弹飞绵羊

动态树LCT模板题#include<cstdio>#include<cctype>#include<algorithm>using namespace std;inline int read(){ int x = 0, flag = 1; char c; while(! isgraph(c = getchar())) if(c == '-')

2017-01-09 16:19:54 365

原创 树剖模板

#include<cstdio>#include<cctype>#include<cstring>#include<algorithm>using namespace std;inline int read(){ int x = 0, flag = 1; char c; while(! isgraph(c = getchar())) if(c ==

2017-01-08 10:19:33 302

原创 点分治模板题

收藏好久的模板, 这里发一下#include<cstdio>#include<cctype>#include<cstring>#include<algorithm>using namespace std;inline int read(){ int x = 0, flag = 1; char c; while(! isgraph(c = getchar()))

2017-01-08 07:47:49 510

原创 Splay模板

打LCT的时候发现Splay很不熟, 因此这里贴一下模板 洛谷P3369 https://www.luogu.org/problem/show?pid=3369#sub/*提一些要注意的点:1. 注意判断边界, 不要访问到空节点2. 每一次操作或访问完以后, 记得要splay到root3. insert操作只要update当前节点和父亲节点即可, 因为还会上旋到root 4.牢记双旋的

2017-01-07 08:45:17 458

原创 最近水的一些模板题

KMP: 洛谷P3375 https://www.luogu.org/problem/show?pid=3375#include<cstdio>#include<cstring>#include<cctype>using namespace std;const int MAXN = (int)1e6, MAXM = 1000;char s1[MAXN + 10], s2[MAXM + 1

2016-12-18 21:32:30 385

原创 man

Description n间房子高度不同,Man 要从最矮的房子按照高度顺序跳到最高的房子,你知道房子的顺序,以及Man一次最远可以跳多远,相邻的房子至少有1的距离,房子的宽不计,现在由你安排相邻房子的距离,使Man可以跳到最高的房子且让最矮的房子与最高的房子距离最远,没有合法方案输出-1 Input 第一行一个整数T表示数据组数,每组数据第一行两个整数n,d分别表示房子数量以及Man一次可以

2016-11-18 20:35:22 569

原创 关于 Bellman-Ford 与 Floyd 算法的一点感想

在四种常用的最短路算法 Dijkstra, SPFA, floyd, Bellman-Ford 中, Dijks 和 SPFA 的使用较为普遍, 对大多数人来说, 也较为熟悉. 然而, floyd 与 BF 算法在一些特定的情况下也是非常管用的, 因此有必要在这里作出一点总结. Floyd的基本思路就是枚举任意两个点i, j, 再枚举任意的第三个点k, 用d[i][k] + d[j][k] 来松弛

2016-11-18 07:49:52 2736 1

原创 中途相遇法 解决 超大背包问题 pack

Description 【题目描述】蛤布斯有n个物品和一个大小为m的背包,每个物品有大小和价值,它希望你帮它求出背包里最多能放下多少价值的物品。【输入数据】第一行两个整数n,m。接下来n行每行两个整数xi,wi,表示第i个物品的大小和价值。【输出数据】一行一个整数表示最大价值。【样例输入】5 10095 804 183 1199 1002 10【样例输出】101【数据范围】对于20%的数据,xi<

2016-11-17 16:11:42 597

原创 具体一些的博弈论 sqrstone

Description 你有n个盒子用来放石头,每个盒子都有最大容量与初始的石头数, 两个人轮流放石头,每次必须选择一个盒子往里放数量不超过当前盒子中石头数的平方的石头 比如一个盒子当前有3个石头,你可以放1~9个石头,当然不能超过容量限制 谁先不能放石头谁就输了,问先手输赢 Input 包含多组数据,每组数据第一行一个整数n表示盒子数,接下来n行每行两个非负整数s和c, 表示盒子的容

2016-11-16 17:09:39 258

原创 SG函数学习总结

有点散乱, 将就着看吧. 首先是博弈论的基础, 即 N 和 P 两种状态: N 为必胜状态, P 为必败状态. 对于N, P两种状态, 则有 1. 没有任何合法操作的状态, P; 2. 可以移动到P局面的情况为N状态; 3. 可以移动到的所有状态均为N状态, 则当前情况为P状态. 然后就可以引入SG函数了.首先定义mex运算, 这是施加于一个集合的运算, 表示最小的不属于这个集合的非负整

2016-11-16 10:27:47 596

原创 mc

Description 小C在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号),于是他就烦恼了:为了控制这n个牧场,他需要在某些牧场上面建立控制站, 每个牧场上只能建立一个控制站,每个控制站控制的牧场是它所在的牧场一直到它西边第一个控制站的所有牧场 (它西边第一个控制站所在的牧场不被控制)(如果它西边不存在控制站,那么它控制西边所有的牧场), 每个牧场被控制都需要一定的花费(毕

2016-11-15 20:54:24 604

原创 string

【问题描述】给定两个整数N和M,以及两个由小写字母组成的字符串S和T,我们按以下要求生成两个字符串A和B:1、 字符串A和B的长度相等;2、 A由S重复N次产生;3、 B是由T重复M次产生。如果A中的第i个字符与B中的第i个字符相同,则视为匹配。给定N、M、S、T,请编写一个程序求A和B的匹配字符数【输入】第一行两个用空格整数N和M。第二行和第三行分别为S和T。数据保证A和B相等。【输出】输出为一个

2016-11-15 18:33:01 1457 1

原创 积木大赛

Description 积木大赛(block.pas/c/cpp)【问题描述】春春幼儿园举办了一年一度的“积木大赛”。在2013年NOIP大赛中,平平同学己经搭建了宽度为n的大厦,其中第i块高度为hi。今年比赛的内容是对其NOIP2013搭建大厦进行扩建,使用的材料也都是体积为1正方体积木。今年搭建的规则是:如果要在某一个位置上放一个积木,必须满足它的左下、下方、右下都有积木(用二维坐标a表示,如

2016-11-15 18:32:28 2515

原创 down

Description 给出一个数列,求出这个序列的最长下降子序列的长度及方案数,子序列中的权值完全相同视为同一个序列 Input 第一行一个整数n,接下来一行n个整数表示序列的权值Output 一行两个整数分别表示最长的长度及方案数Sample Input 样例输入1:12 68 69 54 64 68 64 70 67 78 62 98 87样例输入2:3 3 2 2样例输出1:4

2016-11-15 13:48:12 374

原创 九九归一

稍作尝试可得三类情况, 分类讨论: 1. 根本就没有循环/循环节大于phi(n), 当且仅当a, n不互质 2. 循环节等于phi(n) 3. 循环节为phi(n)的因数2, 3类情况需要通过运算来判别. 通过快速幂来加速运算(又是二进制拆分思想…) 代码不是我的.#include<cstdio>#include<cstring>using namespace std;const i

2016-11-14 16:31:00 587

原创 小R与手机

Description 小R有n部手机,为了便于管理,他对一些手机设置了“呼叫转移”的功能。具体来说,第 i(1≤i≤n) 部手机有个参数 ai(0≤ai≤n,ai≠i) 。若 ai≠0 则表示第 i 部手机接到电话时会将电话无条件转移给第 ai 部手机(此时如果 aai≠0, 会继续进行呼叫转移)。如果一部手机接到电话会导致至少 109 次呼叫转移,则这次电话无法接通。现在有m个事件依次发生,具

2016-11-13 21:33:19 501

原创 coins

Description 你有n种硬币,每种硬币有c个每个价值a,不同种硬币价值可能相同, 问你用这些硬币可以凑出1到m中多少种不同价值 Input 第一行一个整数t表示数据组数,每组数据第一行两个整数n,m, 接下来n行每行两个整数表示这种硬币的a和cOutput 对于每组数据输出一行可以凑出多少种不同价值 Sample Input 样例读入: 2 3 10 1 2 2 1

2016-11-13 21:30:52 723

原创 noip注意事项

检查文件读入输出使用<<stdio.h>头文件. Linux下的iostream不包含freopen关闭同步以提高性能

2016-11-13 15:15:55 759

原创 小W计树

排列组合思想. 先跑一遍最短路, 再从1节点开始搜索, 假如搜到一个点的路径长度等于最短路, 则记录到达该点的路径数 + 1. 最后遍历一遍, ans *= rec[i] 输出答案即可. 关键在于想到这个排列组合的思想.#include<cstdio>#include<cstring>#include<algorithm>#define F(x) for (L i=h[x],v=e[i

2016-11-13 15:12:49 314

原创 小W摆石子

可以确定, 最后围成是 一个长方形 + 多出一列 的形状. 而且多出的那一列应该是和较短的边相邻. 贴代码.#include<iostream>#include<algorithm>using namespace std;int main(){ ios::sync_with_stdio(false); #ifndef ONLINE_JUDGE freope

2016-11-13 15:07:30 575

原创 see

Description 问从点(0,0)能看到点(0,0)和(n,n)之间的矩形的多少个整数点,看到(x,y)代表点(0,0)和点(x,y)间没有其他整数点,如看不到(2,4)因为中间有点(1,2) Input 一行一个正整数n Output 一行一个数表示能看到多少个点 Sample Input 2 Sample Output 5 HINT 样例解释:能看到(0,1)(1,0

2016-11-13 14:39:16 278

原创 对拍模板

鉴于本人经常忘记对拍怎么写, 这里贴上一份模板.@ echo off:loopxxxxmakeInputxxxxstdxxxxfc xxxx.out xxxxstd.outif %errorlevel%==0 goto looppause

2016-11-11 07:34:10 341

原创 洛谷3372[模板]线段树1

题目描述如题,已知一个数列,你需要进行下面两种操作:1.将某区间每一个数加上x2.求出某区间每一个数的和输入输出格式输入格式: 第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。接下来M行每行包含3或4个整数,表示一个操作,具体如下:操作1: 格式:1 x y k 含义:将区间[x,y]内每个数加上k操作2: 格

2016-11-11 07:30:18 521

原创 洛谷3368树状数组2

题目描述如题,已知一个数列,你需要进行下面两种操作:1.将某区间每一个数数加上x2.求出某一个数的和输入输出格式输入格式: 第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。接下来M行每行包含3或4个整数,表示一个操作,具体如下:操作1: 格式:1 x y k 含义:将区间[x,y]内每个数加上k操作2: 格式:

2016-11-09 11:09:32 476

原创 小W旅游railway

对于一家铁路公司,我们可以首先使用 Floyd 算法求出任 意两点 x, y 间只经过属于该家铁路公司铁路的最短路,那么在新 图中我们在 x, y 间加一条 x 到 y 最短路对应的花费为边权的边。 接下来只要在新图中使用 Floyd 算法求出任意两点间的最 小花费就可以了。 跟昨天写的<跑路>有点像 http://blog.csdn.net/kenxhe/article/details

2016-11-08 15:11:46 426

原创 洛谷1613跑路

题目描述小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零。可是小A偏偏又有赖床的坏毛病。于是为了保住自己的工资,小A买了一个十分牛B的空间跑路器,每秒钟可以跑2^k千米(k是任意自然数)。当然,这个机器是用longint存的,所以总跑路长度不能超过maxlongint千米。小A的家到公司的路可以看做一个有向图,小A家为点1,公司为点n,每条边长度均为一千

2016-11-07 21:38:08 392

原创 putnik

可将旅行商的路线看作是从n - 1号点出发, 跳着到0号点, 再折返走完之前跳过的点. 想到这个, 暴力就可以得50分. 正解是DP. f[i][j](i > j)表示, 从i开始跳, 并返回至j所需要的最小花费(从定义上i, j可互换) 因而得到递推式: f[i + 1][i] = min(f[i + 1][i], f[i][j] + w[j][i + 1]) f[i + 1][j] =

2016-11-06 20:31:07 228

原创 洛谷1967货车运输 即 NOIP2013 DAY1 T3

题目描述A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。输入输出格式输入格式: 输入文件名为 truck.in。输入文件第一行有两个用一个空格隔开的整数 n,m,表示 A 国有 n 座城市和 m 条道路。 接下来 m 行每行 3 个整数 x、

2016-11-05 23:30:20 338

原创 洛谷1273有线电视网

题目描述某收费有线电视网计划转播一场重要的足球比赛。他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点。从转播站到转播站以及从转播站到所有用户终端的信号传输费用都是已知的,一场转播的总费用等于传输信号的费用总和。现在每个用户都准备了一笔费用想观看这场精彩的足球比赛,有线电视网有权决定给哪些用户提供信号而不给哪些用户提供信号。写一个

2016-11-04 22:25:06 411

原创 洛谷1156垃圾陷阱

题目描述卡门――农夫约翰极其珍视的一条Holsteins奶牛――已经落了到“垃圾井”中。“垃圾井”是农夫们扔垃圾的地方,它的深度为D(2<=D<=100)英尺。卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了。另外,卡门可以通过吃一些垃圾来维持自己的生命。每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间。假设卡门预先知道了每个垃圾扔下的时间t(0< t<=1000),以及每个垃圾

2016-11-04 16:08:44 268

原创 取数游戏

Description 简单的DP. 数据范围是突破口. f[i][j][k][l] 表示在到达第(i + 2 * j + 3 * k + 4 * l)位分别使用i, j, k, l张牌时的最大得分. 对其进行维护即可.#include<iostream>#include<string.h>#include<algorithm>using namespace std;const in

2016-11-04 12:12:25 358

空空如也

空空如也

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

TA关注的人

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