自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 422D

题意:f(i)表示有i个女孩比赛,若不分组,则应当比 次。但可以将他们分为x个组,每组i/x个人,每组分别进行比赛决出一个女孩,再将各个组决出的女孩进行比赛。给出t,l,r,求 t0·f(l) + t1·f(l + 1) + ... + tr - l·f(r). 解答:如果是素数,则无法分组,否则分为i/i的最小质因子组。i的最小质因子可通过筛素数的方法得出。#include#inclu

2017-07-25 13:14:43 446

原创 424C

题意:一个比赛中,有n次打分,有一个初始分数,这个初始分数加上这n次的分可得出n个结果,而作者只记得其中k次的结果,且不确定是哪几次的。问初始分数有多少中可能?解答:首先要初始化这n次的打分的前缀和。注意前缀和地去重处理!v将这k个结果分别枚举为第一次到第n次的结果,分别计算出初始值。如果这个得出某个初始值得次数恰好为k,那么这个初始值即为可能的结果。#include#include#

2017-07-23 23:46:58 475

原创 423D

题意:给出n个点,其中k个点只能有一条边相连,剩下的边至少有2条边相连,问构造出的树最远的两个点最近是多少解答:度为1的点的数目越多,这个距离就越小。那么构造一个中心点,发散地连k个点。不够n的一层一层往最外面的点上面添加即可。#include#include#includeusing namespace std;int main(){ int n,k; whil

2017-07-23 23:26:18 1042

原创 423C

题意:告诉你一些字符串的信息,要求你重组并输出字典序最小的这个字符串,告诉你的信息是,某个子串在某几个位置出现,保证给的信息不冲突 解答:暴力!但是!要注意重复地位置要跳过,不然会超时!#include#include#include#include#include#includeconst int MAXN = 2000100;char s[MAXN];int ss[

2017-07-23 22:59:58 562

原创 822C

题意:给出n个区间和X,每个区间有左右边界和价值,li,ri,x。然后问从这n个区间找出2个不重合的区间,他们的区间长度和为x,并且价值最小。解答:方法一:预处理:记录所有以某个点为左端点、右端点的区间长度和价值。枚举以每个点为左端点和右端点的所有区间。记录每个以该点为右端点的区间的价值的最小值。然后从第二个点为起点更新最小值。#include#include#include#inc

2017-07-23 22:46:36 457

原创 floodfill

题意:有一个大小为N*M的园子,雨后积起了水。八连通的积水被认为是连接在一起的。请求出园子里总共有多少水洼?解答:floodfill.每次dfs可以连通的块。主函数里迭代循环,每找到一个未访问的点,便开始dfs,穷尽所有可以到达的点。#include#include#include#includeusing namespace std;const int MAXN = 150;

2017-07-14 11:06:31 335

原创 部分和问题

题意:给定整数a1,a2,a3...an,判断是否可以从中选出若干数,使它们的和恰好为k.解答:dfs注意:只要存在一种方案,就是true!#include#include#includeusing namespace std;const int MAXN = 110;int n,a[MAXN],k;bool dfs(int step,int t){ if(ste

2017-07-14 10:59:38 296

原创 邮局问题

题意:有横向排列的P个村庄,每个村庄都有一个坐标位置。在这P个村庄上要建V个邮局。问这P个村庄中建造V个邮局之后,所有村庄到最近的邮局的距离的最小值是多少?解答:dp[i][j]表示前i个村庄建造j个邮局的最小距离之和。  dp[i][j] = min(dp[i][j],dp[k][j-1] + w[k+1][j])  w[k+1][j]表示从第k+1个村庄到第j个村庄建立一个邮局的最

2017-07-13 10:57:48 760

原创 矩阵链乘的变换

题意:一串数,每次取掉一个数并且将这个数与周围两个数相乘的结果加起来,最后取得就剩两个数。求最小的答案。解答:区间dp。在网上看到两个答案:第一种思路:dp[i][j]表示从i-1到j最终取得就剩下i-1和j所得的最小值。那么状态转移方程为dp[i][j] = min(dp[i][j],dp[i][k]+dp[k+1][j]+a[k]*a[i-1]*a[j])(i 代码:#incl

2017-07-11 19:35:33 264

原创 括号匹配问题

题目:poj2955题意:给出一个只包含(、)、【、】的字符串,求出最长的合格子串的长度解答:dp[i][j]表示从第i个字符到第j个字符最长的合格子串的长度,由此得出两个转移方程:   dp[i][j] = dp[i+1][j-1] + 2(i和j匹配)   dp[i][j] = max(dp[i][j],dp[i][k]+dp[k+1][j])(i #include#in

2017-07-06 16:33:35 202

原创 石子合并问题

题目:NYOJ737题意:有n堆石子,每堆有a[i]个,每次合并时只能合并相邻的两堆,代价为两堆石子的个数之和。问把这n堆石子合并成一堆需要的最小代价是多少。解答:状态:dp[i][j] 表示合并第 i 堆到第 j 堆石子的最小代价转移方程:dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j] + sum[j] - sum[i-1])

2017-07-06 14:53:23 266

原创 关于一些数的划分问题

问题一:将n划分为若干正整数之和,有多少种划分方法?(hdu1028)思路一:相当于1-n的完全背包,总重量为n,有多少种组合?思路二:dp[i][j]表示将i分为最多j组的划分方法数        转移方程为:dp[i][j] = dp[i][j-1] + dp[i-j][j] (i         dp[i[j] = dp[i][j-1] + 1(i = j)

2017-07-05 21:32:41 368

空空如也

空空如也

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

TA关注的人

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