自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

o670783915的博客

既然可能性不为零,那么发生什么都是必然的

  • 博客(40)
  • 收藏
  • 关注

原创 HDU 5806 NanoApe Loves Sequence Ⅱ (尺取法)

尺取法题目大意是给你一串数列,问你数列中某个区间的第K大的数大于M的区间个数有多少个。把数组写下来仔细想一想,为了简化问题,大于K的数我们是不是可以把它变成1,反之为0。这样子的话,我们就能用尺取法。就是如果一个区间的数值和大于等于K的话,之后的数都可以加进来。所以尺取法下见代码#include <cstdio>#include <cstring>#include <algorithm>#in

2016-08-07 11:15:32 240

原创 CodeForces 148D Bag of mice (经典概率dp)

传送门我写的比较搓,是用来自己参考的,各位大佬们 我是从这位巨巨的博客上看到思路的 真的对我理解dp很有帮助 巨巨的传送门题目大意(copy的 ^) 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠。谁先抓到白色老鼠谁就赢。 王妃每次只抓一只老鼠,但是龙每次抓完一只老鼠之后会有一只老鼠跑出来。 每次抓老鼠和跑出来的老鼠都是随机的。 如果两个人都没有抓到白色老鼠则龙赢。王妃先

2016-08-06 22:13:55 234

原创 POJ 3735 Training little cats (矩阵快速幂)

传送门题目大意是给你K串命令和N只猫,问执行M次后每只猫的状况 其中 s 命令是交换两只猫的花生 g 命令是一只猫拿一个花生 e 命令是一只猫吃完他的花生我们很明显用矩阵快速幂来做这道题只不过会有一些细节问题,就是数组要用long long 来存,因为程序中没有mod来取余,还有就是可能矩阵中会有很多0,所以时间需要优化,毕竟最大100*100的矩阵相乘是O(n*n*n)复杂度。代码如下#

2016-08-06 19:33:25 253

原创 POJ 3714 Raid (最近点对)感觉数据怪怪的

传送门题目大意就是要你从两组点钟选出距离最小的两点,输出他们的距离。 一道经典最小点对问题+模板我看了晚上很多人的代码,这题交的时候感觉怪怪的 比如G++wa , C++ac这类情况我的代码也是用c++才能ac#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#def

2016-08-06 16:22:31 504

原创 HDU 1007 Quoit Design 最小点对基础模板

传送门题目大意是找一个最小的圆覆盖给你一堆点中的两个点,输出改圆的半径基础最近点对模板题#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <map>#define LL __int64using namespace std;const int maxn = 100010;st

2016-08-06 10:59:40 248

原创 HDU 3756 Dome of Circus (三分)

传送门题意很简单,就是给你N个三维坐标,要你求一个三菱锥把所有点罩进去,在边边也行,要你求出满足条件的最小体积的三菱锥的高H和底面半径R很简单三分就行了但是这题我自己当时过得很惨烈,我写搓了,结果靠交来测答案。先是我写搓的代码,给巨巨们引以为戒#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#def

2016-08-05 21:49:33 201

原创 CodeForces 231C To Add or Not to Add

传送门题目大意就是给你一些数字,问你最多k次操作后某个数字的最多出现次数、最小的能出现该次的数(最大化的出现次数,具有该最大化的出现次数的最小的数字的值),一次操作是给任意一个数加一。这是一道二分题 二分最大能拿到的数量问题就在于怎能判断这个数量能不能拿到以及记录此时的最小数字 我就是想不到优化方法才A不了的,但是之后听了大神们的想法后,豁然开朗,就是用一个前缀和。想知道前缀和解此题原理就自己推

2016-08-05 21:18:19 313

原创 Codeforces Round #365 (Div. 2) Mishka and trip

传送门题意就是一些城市,全部连起来,但是其中有些城市是首都,首都要和其他所有城市连接起来,每个城市有个美丽值,每条路的权值为所连接两个城市的美丽值的乘积。答案要求你求出所有路的权值总和。首先先加首都的路,标记,然后再补其他路。代码如下#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#define L

2016-08-05 10:21:22 207

原创 XMU(厦门大学OJ) 1125 越野车大赛

最近在做三分 Description TheBeet正在参加一场越野车大赛。比赛的场地如右图:共分三块,每一块地面的长宽均为N与M,但地表情况不同,越野车在这段路面上的最高速度也不同。蓝色线表示TheBeet可能的行车路线。 比赛的要求是要求选手从比赛的场地左上角驾车至右下角。TheBeet想知道如果他在所有路段都以最快速度行驶(不考虑加速阶段),最快能在多少时间内完成比赛。

2016-08-04 20:34:50 1017 1

原创 HDU 2438 Turn the corner 三分

传送门题目大意是给你两个街道的宽度X,Y,以及汽车长度L ,汽车宽度W 问你汽车能不能从X街道开到Y街道一开始想是不是数学问题,直到看到网上的图片才知道这个是三分三分只要知道凸函数就基本知道怎么写了毕竟是模板有了红线代表的那个函数,我们就能知道,汽车过弯所需要的最小宽度因此我们三分角度然后求出x即横坐标三分出最大的x然后再比较就行了#include <cstdio>#include <iostr

2016-08-04 19:25:13 364

原创 POJ 3662 Telephone Lines

传送门题目大意是选一条路从一到N有电话线要你连起来,但是电话线公司只给你报销K根线的费用,你搭建的最后费用是你搭建的所有线中最长那根线的长度。问你怎么搭建可以使费用最小,就是等与要你求这条路线里第K+1长的线很明显二分答案,然后用最短路跑一边判断是第几大的线#include <cstdio>#include <cstring>#include <algorithm>#include <cmat

2016-08-04 11:01:32 275

原创 POJ 3579 Median

传送门题目大意是给你一串数字序列,问你这些在序列中所有数字的差的第M/2小的数是多少。M是差值的总数。直接二分答案,然后再二分搜就行了代码#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#define LL __int64using namespace std;const int maxn =

2016-08-03 15:44:37 205

原创 POJ 2976 Dropping tests (经典变形二分)

传送门题目大意就是给你一堆A[i]和B[i]问你去掉那K组可以使sigmaAset / sigmaBset最大很明显变形一下后就能很好知道题目是求 (A[i] + …. A[i+x]) = (B[i] + …. B[i+x])* mid 使mid最大,输出mid*100就行了代码#include <cstdio>#include <cstring>#include <algorithm>#

2016-08-03 14:25:52 169

原创 POJ 1064 Cable master

题目链接怎么讲,一道水题,但是处理起来比较麻烦 就是先把读入的分数乘以100用int来处理仔细想想就好,就当是二分的模板#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>using namespace std;int n,k;int a[10010];bool c

2016-08-03 10:49:04 183

原创 HDU 5791 Two

题目链接多校的一道DP水题 题意大概是给你A和B两个数字序列,要你求A序列和B序列不同子序列相同的个数。 输入A序列的长度N和B序列的长度M 比如 1 1 1 1 他的答案应该是 5一般动规题就是找出状态和状态转移方程 这题状态好找,就是dp[A序列的前i个元素][B序列的前j个元素]但是怎么转移呢?首先考虑A[i]不等于B[j]的情况,不等于的话,由容斥原理可知道 dp[i][j]

2016-08-02 20:54:16 223

原创 LIS 的模板

代码来自别人的博客先是比较简单的版本const int MAXN = 1010;int n;int a[MAXN];int dp[MAXN];int lis(){ memset(dp, 0, sizeof(dp)); int Max; for (int i = 0; i < n; ++i) { Max = 0; for (int

2016-08-02 15:47:12 1148

原创 最长公共子序列问题模板(不要求连续)

首先我贴个简单的模板,用dfs来解决的int LCS(int i,int j){ if(i>=lena || j>=lenb) return 0; if(a[i]==b[j]) return 1+LCS(i+1,j+1); else return LCS(i+1,j)>LCS(i,j+1)? LCS(i+1,j):LCS(i,

2016-08-02 15:36:05 435

原创 HDU 5763 Another Meaning (数据水了)

题目链接额,这题发现数据水了,本来要用KMP或者其他高级方法判断字符匹配的其实这道题很有01背包的味道,只是我没想到而已如果这个位置匹配成功的话,我不替换就是dp[i-1]的方案数,替换就是dp[i-第二子字符串的长度] 初始dp[0] = 1;水是水,但自己没敲出来还是自己更水#include <cstdio>#include <cstring>#include <algorithm>#i

2016-08-01 20:30:21 234

原创 B HDU 5532 Almost Sorted Array

题目点我我一开始数组开小了,结果TLE 。。。。 Orz就是一道很简单的模板题 我不知道为什么就是过不了注意非递增和非递减,和我们一般写的LIS不一样 人蠢#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <iostream>using namespace std;cons

2016-08-01 20:02:35 340

原创 POJ 3254 Corn Fields(状态压缩) DP入门

题目链接这题一开始看到真的没思路,想了半天,一直在找怎么判断上下两行的判断方法,其实预先处理一下就行了,只要想到预先处理,就应该是到怎么做了,真的是笨。而且我写的时候真的是没耐性,没仔细想想就去搜题解了,下次一定要多思考思考。代码#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#define

2016-07-31 21:53:42 266

原创 POJ 2441 Arrange the Bulls(状态压缩DP)

题目链接题目大意是农场有M个场子,有N头牛,每头牛只会去P个指定的场子,不同的牛不会在同一个场子,问把所有的牛分配好有几种方法。我一开始想到是记忆化搜索,但是发现记忆化什么呢? 但我还是写了一发,超了内存,优化一次,超了时间。。。后来我发现2的20次方也就100,直接状态压缩dp把,但是内存呢,滚动,结果样例都过不了,仔细一想,滚动数组好像要处理一下。结果A了#include <cstring>

2016-07-31 19:09:29 195

原创 UESTC 1218 Pick The Sticks (2015 CCPC)

题目链接题意就是给你一块长为l的木板,然后有n个木棍,木棍有长度,有价值,可以放在木板上,只要它超出木棍的的长度不超过他自己长度的二分之一,它就可以放上去。看大家对背包问题的的理解,很明显加一维状态,表示放在边缘没。下面是代码 细节就是背包边缘的处理#include <cstring>#include <cmath>#include <algorithm>#include <cstdio>

2016-07-31 14:30:45 381

原创 HDU 1421 搬寝室

题目链接这道题我认为很好,虽然难想。题意是给你N个物品的重量,你每次搬两个,搬K次,没次搬的体力消耗是两个物体重量的绝对值差的平方,问怎么搬体力最小,输出最小消耗的体力。这道题我首先想到的是贪心,但是贪心显然不好贪,我无法证明把物品从小到大排序后每相邻的两个的绝对值差是最小的。所以我们得用动规的思想,想一想,要想解决搬K次物品体力消耗最小,那我第K-1次是不是也要体力消耗最小,同时,从K-1次转移到

2016-07-30 17:05:20 220

原创 XTU算法专题个人赛3 (DP专题)解题报告

写这个报告的目的是提醒自己,自己曾经爆0第一题 HDU1176 免费馅饼很容易想到dp[时间][位置]递归方程很简单,而我为什么没写出来呢。 想想当时我一直卡在怎么存数据哪里,递归什么都想出来了。 为什么卡在存数据哪里 智商······ 最后注意一下初始化AC代码#include <cstring>#include <cstdio>#include <cmath>#include <a

2016-07-30 11:57:45 263

原创 HDU 1078 记忆化搜索

题目链接题意是老鼠一开始在(0,0)点,每个点都有奶酪数目,如果老鼠走到哪里的话就获得所有奶酪,老鼠只能水平走和垂直走,问怎么走才能获得最大奶酪数。输入N和K,N是地图大小,K是老鼠能走多远。很简单的一道题,注意超时,记住用记忆化,貌似就因为要记忆化才被HDU归类进DP的。下面是代码#include <cstdio>#include <cstring>#include <algorithm>#

2016-07-29 09:43:04 263

原创 HDU 1074 Doing Homework 经典DP

题目链接点我题目大意是小明有很多功课要去做,都要做完,每门课有一个截止时间和做它需要的时间。注意到数据量是15,这很明显告诉我们可以枚举用二进制 对,一开始我还真的没想出来状态是什么 看到数据量后,就以二进制为状态 比如7就表示第一门第二门第三门功课做完需要最小的时间下面贴代码#include <cstdio>#include <cstring>#include <algorithm>#

2016-07-29 08:53:04 183

原创 动态规划的基础模板

首先是01背包for(int i=1;i<=n;i++) for(int j=V;j>=w[i];j--) dp[j]=max(dp[j],dp[j-w[i]]+v[i]);然后是完全背包for(int i=1;i<=n;i++) for(int j=w[i];j<=V;j++) dp[j]=max(dp[j],dp[j-w[i]]+v[i]);多重背

2016-07-28 23:34:17 1007

原创 HDU 1069 DP 经典

题目点我题目大意是给你一些方块的长宽高xyz,你可以无限使用并且可以旋转他们。 问你如何把它们堆得很高,一块堆上另一块的前提是下面那一块的长和宽都大于上面那一块。很经典 答案随时更新下面是代码#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;struct p

2016-07-28 20:35:43 314

原创 HDU 1025 Constructing Roads In JGShining's Kingdom

题目链接题目大意为poor城市要搭建路去rich城市 路不能交叉,而且保证poor城市和rich城市不会有相同的,一开始这里坑了一把很明显LIS最长子序列问题,但是,题目输出很坑如果只能搭建一条路的话,输出时road不能加s 我一直wa,调程序的bug。 一定的记住要看清题意。直接用二分来优化。 用到了LIS(nlogn)算法。 请点这题,很好理解 如果不想看就点这里LIS(nlogn)

2016-07-28 17:13:52 201

原创 POJ 3046 Ant Counting 简单DP 挑战程序设计实战习题

题目点这里题目大意是给出T种数字,每种会有一定数量 问你用它们构成一些长度的序列,可以用相同数字,问从S长度到B长度共有多少种组合,结果取最后六位数。有经验的老司机一下就知道是 dp[i][j]为前i种数字组成j长度的总数递推方程为 dp[i][j] = sigma(dp[i-1][j-k] ) k 的取值范围是从1到第i个数字的个数有sigma就知道可以用前缀和算出来优化时间 空间的话可

2016-07-28 13:09:49 471

原创 POJ 2392 Space Elevator 排序+多重背包

题目链接题目大意,给你一些块,每个块的高度为Hi,能堆到最大高度为Ai,能使用的次数为Ci。问你最大能堆多大的高度。很明显多重背包,但是不用计数什么的,就用dp[i]表示能不能到达i 然后递推的时候更新最大值。但是有一个点需要考虑,一个是需要排序,就是先选Ai小的物品,这样才可能堆的高。下面贴代码#include <cstdio>#include <cstring>#include <algo

2016-07-28 09:18:22 167

原创 Poj 1631 n*logn 的最长上升子序列(LIS)算法

这里找到题目题意是找出让连线不交错的最大剩余线的个数一看题就知道是求最长上升子序列 但是,看看数据范围就知道,很明显普通的LIS算法会超时 这个时候,我们就要优化。多创建一个d数组和int len 变量,d[len] 表示长度为len的上升子序列的最后一个元素,如果读入一个数,它的值为x,有d[i] < x < d[i+1]的话,我们就把d[i+1] 赋值为 x,当然,如果i+1>len的话,l

2016-07-27 20:57:01 218

原创 POJ 2184 Cow Exhibition 01背包

题目链接题目大意就是给每个牛的Si和Fi,要你选出一些牛使他们的Si和Fi的总和最大,并且他们的Si的总和不为0,Fi也是一样。一开始看确实不好想,后来看了别人才知道,把Si看成花费,Fi看成价值。 不就是我们熟悉的01背包了吗。但是,问题来了,题目里有负数,所以这题难点就在这里,你需要想一个办法解决。看看数据范围。发现最大-10w,最大+10w 扩大数组,设置基准为10w , 这样子 0 就代

2016-07-27 19:20:32 169

原创 Hdu 2844 & Poj 1742 结题报告

首先上面的两道题都是同一道题,之所以同时拿出来是因为 Hdu 的数据比 Poj 的水,所以想区分一下。 Hdu 的数据对时间要求不高 但是 Poj 如果你想用简单的 多重背包解决的话,就会TLE 别问我怎么知道。首先大家肯定会想到用多重背包来做 毕竟题意可以嵌套模板如下#include <cstdio>#include <cstring>#include <algorithm>#inc

2016-07-27 10:51:39 268

原创 Hdu 5336 XYZ and Drops

题目链接HDU 5336 题意大概就是类似于十滴水游戏,一开始会从(x,y)点扩散出4个方向的小水珠,题目也会给你一些大水珠,每个大水珠都有他自己目前的水滴数,如果 某个大水珠的水滴数大过4,就会爆掉,并同时向四个方向发射出小水珠,小水珠每秒移动一格,题目问T秒后原本各个大水珠的状态。 这题其实模拟很简单的,但是有个地方坑,就是如果一个小水珠触发爆了某个大水珠,那么此时也刚好到达

2016-07-24 20:34:16 393

原创 CodeForces 388C Fox and Card Game 解题报告

D - Fox and Card Game Fox Ciel is playing a card game with her friend Fox Jiro. There are n piles of cards on

2016-07-21 08:34:55 542

原创 矩阵快速幂算法+例题(HDU 5667 Sequence)

矩阵快速幂是ACM比赛中对于求递推式能用到的模板,能实现O(N^3*logM)的复杂度,其中 N是矩阵阶乘,M是要求的第几项。对于矩阵快速幂,首先的得知道单位矩阵 ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪11⋮110⋮0⋯⋯⋱⋯10⋮1⎫⎭⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪\left\{ \begin{matrix} 1 & 1 & \cdots & 1 \\ 1 & 0 & \cdots & 0\\

2016-04-30 15:55:57 2426

原创 POJ 1744 Elevator Stopping Plan 以及对二分搜索的思考

最近+以前做过一些二分加搜索的题目,现在可以总结总结,同时也借一个经典一点的题目参照一下。我发现比较简单的二分搜索题目都是普通递归或者枚举不方便或者会TLE的题目,有时搜索也会这样不好处理,那么这时,我们可以想一想。 如果答案在数据算出的最大情况和最小情况之间 每个答案可以通过数据检验 检验方式有一定规律的话 那么可以试试二分搜索,这还只是简单的情况。也许会有题目需要你在过程中二分搜索,

2016-04-21 15:08:36 549

原创 NYOJ 30 Gone Fishing(贪心)(个人理解笔记)

NYOJ 30 Gone Fishing(贪心)时间限制:3000 ms | 内存限制:65535 KB 描述 John is going on a fishing trip. He has h hours available (1 <= h <= 16), and there are n lakes in the area (2 <= n <= 25) all reachable a

2016-04-19 17:10:23 1706

原创 本菜的某一周周赛解题报告(2016.4.17)

上周周赛题目,网上都能直接找到 其实还是很水的,只要搜索学的还行的几乎都能AK Problem A HDU 1036 Average is not Fast Enough! Problem B CodeForces 652B z-sort Problem C HDU 1312 Red and Black Problem D HDU 1

2016-04-18 16:37:49 299

空空如也

空空如也

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

TA关注的人

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