自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(111)
  • 资源 (1)
  • 收藏
  • 关注

原创 POJ2954 Triangle pick定理

题意:在平面直角坐标系中给定三角形的三个点的坐标(整数),求该三角形内部的整点的数量pick定理:在平面直角坐标系中,以整点为顶点的简单多边形,其中内部整点数为a,边上(包括顶点)的整点数为b,则面积为S = a+b/2-1point一条端点为整点的线段上的整点的个数求法代码#include <cstdio>#include <cmath>using

2018-11-04 22:59:39 746

原创 201712-4 CCF 行车路线 堆优化dijkstra

维护一个sum[]:最短路径中以i结尾的连续小路的长度和#include <cstdio>#include <queue>#include <cstring>using namespace std;typedef long long ll;const ll INF = 1e18;const int N = 510;const int M = ...

2018-09-14 23:07:52 533

原创 2018 徐州网络赛 H.Ryuji doesn't want to study 线段树

题意:有n本书和q次询问(n,q<=1e5),给定n本书的知识值ai。询问1:i,j,区间[i, j]的价值。询问2:a, b,将第a本书的知识值改为b。PS:[i, j]的价值计算,a[i]xL+a[i+1]x(L-1)+…+a[j-1]x2+a[j],L==j-i+1。线段树维护三个东西 sum[]:单纯的知识值的和 ans[]:价值 len[]:区间长度#includ...

2018-09-09 22:34:24 273

原创 CCF 201803-4 棋局评估 极大极小搜索

题意:3X3的井字棋,1先走,2后走,给定一个状态。当前轮到1走,1,2都按照最优策略行棋,求最后的分数。#include <cstdio>#include <algorithm>using namespace std;const int INF = 100;int a[10];int check(){ int cnt = 0; for(...

2018-09-07 20:20:21 344

原创 hdu5693 区间dp

题意:给定n个数ai,再给定m个公差di。每次从ai中选择连续的x个数(x>=2),若这x个数构成等差数列且公差在bi中存在,则可以删去这x个数。求最多可以删去多少数dp[i][j]:i~j最多可以删去多少数 初始化j-i==1和j-i==2的情况。 判断端点转移即可#include <cstdio>#include <map>#include &lt...

2018-09-05 21:03:09 264

原创 HDU - 5115 经典区间dp

题意:给定n个狼的攻击值ai和附加攻击值bi,每杀死一匹狼i,受到的伤害等于i的攻击值和与i相邻的狼的附加攻击值。求杀死所有的狼受到的伤害的最小值。dp[i][j]:杀死区间i~j的狼受到伤害的最小值。 初始化: a[0]=a[n+1]=b[0]=b[n+1]=0; for(int i = 1; i <= n; ++i) dp[i][i] = a[i]+b[i-1]+b[...

2018-09-05 17:05:34 205

原创 POJ - 3042 区间dp 左端点右端点01

题意:在一维坐标系下,给定n个草坪的坐标(1<=n<=1000),再给定起点L(1<=L<=1e6)。每个草坪有一个staleness值,初始化为0。每次走一格,所有的staleness值+1,并且要从起点遍历每一个草坪,求staleness值的最小值。离散化处理n个点 dp[i][j][0]:区间[i, j]已经遍历完,目前在i点时,staleness的最小值。 ...

2018-09-03 22:49:43 419

原创 poj2492 带权并查集 三种解法

题意:给定n个昆虫和m个判断x, y,表示x和y是异性。求判断是否错误。法一:带权并查集#include <cstdio>using namespace std;const int N = 2010;int fa[N],relation[N];//0:相同,1不同int n, m;int findf(int x){ if(x != fa[x]) ...

2018-09-02 11:27:52 277 1

原创 poj2226 二分图经典建图求最小点覆盖

题意::给出一个N行M列的图,’*’代表稀泥,’.’代表草地,现在要用一些木板把所有的稀泥盖住,但是不能盖住草地。一张木板只能盖住一行或者一列中的一部分,求至少要用多少木板把所有的稀泥盖住。把横向连续的点压在一起作为L,把列向连续的点压在一起作为R,如果两者有交集,就从L到R连一条边。求最小点覆盖(==最大匹配数)#include <cstdio>#include <c...

2018-08-31 23:15:59 413

原创 hdu1054 二分匹配求树的最小点覆盖(无向图)

题意:给定一颗无向树,求最小点覆盖。连通的有向图的情况,将点集copy到L和R集合,建一个二分图,由L集合的点向R集合连一条有向边,这该二分图的最大匹配数就等于最小点覆盖数。连边如(0, 1),则只连L0->R1本题无向图的连边如(0, 1),则要连L0->R1和L1->R0,最小点覆盖数==最大匹配数/2#include <cstdio>#incl...

2018-08-31 22:29:31 461

原创 hdu1083 二分图最大匹配模板

增广路的性质 转自https://blog.csdn.net/ACdreamers/article/details/8621130(1)有奇数条边。 (2)起点在二分图的左半边,终点在右半边。 (3)路径上的点一定是一个在左半边,一个在右半边,交替出现。 (4)整条路径上没有重复的点。 (5)起点和终点都是目前还没有配对的点,而其它所有点都是已经配好对的。 (6)路径上的所有第奇数...

2018-08-31 21:16:03 271

原创 UVALive8138 - Number Generator 概率dp

题意:数字生成器随机生成n种数(1~n),(1<=n<=3000),已经成了k个数,再给出已经生成的k个数。求使得1~n都至少出现2次,还需要生成次数的期望。有t组数据(1<=t<=1e5)朴素做法,dp[i][j]:已经由i个数出现了1次,j个数出现了2次,达到目标状态需要的期望。 复杂度O(n*n*t),tle。 船新思路,将状态设置为与n无关,则只需要一遍n*...

2018-08-28 21:09:17 157

原创 2017-2018 Northwestern European Regional Contest (NWERC 2017) G Glyph Recognition

题意:有6种正多边形(边数为3~8)。给出n个点,求选择哪种正多边形(中心在原点,在x正半轴有一个点),n个点全部在out多边形的外部,全部在in多边形的内部,使得area(out)/area(in)最大。枚举多边形的种类,二分半径更新答案 平面几何,版子多才是王道#include <cstdio>#include <cmath>using namespac...

2018-08-27 23:13:42 273

原创 2017-2018 ACM-ICPC Southeastern European(SEERC 2017) A concerts

题目大意:字符串只由A~Z组成,给定s字符串长度k(k<=300),p字符串长度是n(<=1e5),再给定字母A~Z匹配成功后需要间隔的次数a[27],再给出字符串s, p。求s匹配p的方案数dp[i][j]:匹配到i位置时已经匹配了j个的方案数。 (1) s[j]==p[i]:dp[i][j] = dp[i-1][j] + dp[i-a[id]-1][j-1]; (2) s[...

2018-08-26 19:07:19 668

原创 poj1015 01背包+输出路径

题意:给定人数n(1<=n<=200),每个人有一个a, b。(0<=a<=b),从中选择m个人,使得|sigma(a)-sigma(b)|最小,若相等则sigma(a)+sigma(b)最大。求最优策略的sigma(a),sigma(b)和选择的人的编号dp[i][j]:选择了i个人,|sigma(a)-sigma(b)|==j时sigma(a)+sigma(b)最大...

2018-08-24 18:22:28 451

原创 poj2135 最小费用最大流入门题

题意:给定n个点(编号1~n),有m条无向边。再给出m条边的信息,起点,终点和距离。现在从1走到n,再从n走回1,没条边只能走一次,求这样走的最短路径。将边权作为费用,流量为1(每条边只能走一次)。再新建一个源点s,s到1有一条指向1的有向边,边权为0,流量为2,再建一个汇点t,有一条从n指向t的有向边,边权为0,流量为2。建图完毕,跑费用流最小费用:距离最短,最大流==2(来回)。 (...

2018-08-18 18:20:01 1395

原创 hdu4848 dfs+剪枝

题意:给定n个星球(编号1~n, n<=30),和从每个星球到达每个星球的时间,再给定到达每个星球的截止时间。从星球1出发,遍历2~n个星球,求每个星球的到达时间的总和。PS:每个星球可能不止经过一次!!!dis[i][j]:i到j的最短距离,由floyd预处理 time[i]:到达i星球的时间,初始化-1。ans = sigma(time[i]) (2<=i<=n) 剪...

2018-08-18 11:59:44 126

原创 POJ 2096 Collecting Bugs 概率dp+期望

题目大意:bug由有s个子系统产生,属于n种分类。且由每个子系统产生的概率是1/s,属于某种分类的概率是1/n。每天发现一个bug,求每个子系统都产生了bug且n种bug都有的期望天数。概率dp的状态设置都挺套路:当前状态是…且要达到目标状态的期望值 dp[i][j]:当前状态是已有i种分类,j个子系统产生了bug。 边界:dp[n][s] = 0。 dp[0][0]为所求 状态转移:...

2018-08-16 17:15:59 149

原创 hdu5025 bfs迷宫找最短路径 模范题

题目大意:给定n*n的网络,起点K,终点T,S表示蛇(最多5条,且经过S时,若蛇是活的则时间+1),数字代表钥匙编号(最多m把且必须按照顺序取),每次移动时间+1,求集齐所有钥匙到达终点的最短时间bfs迷宫搜索。 vis记录状态:行,列,蛇是否存活,钥匙的集齐情况。每个状态只被入队一次。#include <cstdio>#include <queue>#i...

2018-08-15 22:19:04 209

原创 poj1258 Number String dp最重要的是思维

题目大意:给定一字符串,如果第i个字符是’I’则第i+1个数比第i个数大,如果是‘D’,则反之。如果是‘?’则可大可小。求满足条件的1~n的排列有多少个。dp:原问题→子问题→状态→转移→边界 dp[i][j]:以j结尾的1~i的排列的答案。 状态转移: ①s[i-1]==’I’,dp[i][j] = ∑dp[i-1][k] (1<=k<=j-1) ②s[i-1]==’D’...

2018-08-13 21:43:31 129

原创 hdu1024 dp+枚举优化+降维

题目大意:给定长度为n的数组(1<=n<=1e6),求其中m个不相交子串的和的最大值dp[i][j]:前i个数(以i结尾,i必取)组成j个不相交子串的答案 状态转移: dp[i][j] = max(dp[i-1][j]+a[i], dp[k][j-1]+a[i]) (1<=k<=i-1) 实现: 降维:假设当前枚举到了打了红圈的状态dp[i][j],那么更新d...

2018-08-13 18:29:48 200

原创 poj2785 二分查找

题目大意:给定n行数(n<=4000),每行4个数。从这4列中,每列选择一个数使其和为0暴力枚举 O(n^4)会tle。 优化:枚举第1,2列算出总和s1[],枚举第3,4列算出总和s2[]。然后枚举s1[],在s2[]中二分查找等于-s1[]的数即可 O(n^2log(n^2))第一次WA:没有认识到,s2[]数组中有相同的数找到一个就++ans。 正解:在s2[]中找到第一个...

2018-08-12 16:29:46 388

原创 poj2784 Buy or Build 最小生成树

题目大意:给定n个城市(1<=n<=1000),c个联通块(0<=c<=8)。再给定c个连通块的信息:包含cnt个点和价格cost,并给出cnt个点的编号。再给定n个城市的坐标。现在要将n个城市连在一起,可以购买联通块也可以新建边(代价是两城市距离的平方)。求最小代价。c较小,可以二进制枚举需要添加那些联通块,然后每次kruskal更新答案#include <...

2018-08-12 15:39:06 200

原创 poj1258 生成树入门

题意:n个点,n*n的矩阵表示边,求最小生成树(1)prim O(n^2)#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 110;const int INF = 0x3f3f3f3f;int g[N][N];...

2018-08-12 14:32:07 256

原创 洛谷P1020 最长不上子序列及其个数

题目大意:输入若干导弹的高度,用炮弹拦截,第一发炮弹能达到任意高度,第i发炮弹不能高于第i-1发炮弹。求一个炮弹系统能拦截的最多的导弹和若要拦截所有的导弹最少需要有多少炮弹系统第一问即求最长不上升子序列的长度 第二问即求最长不上升子序列的个数 而求最长不上升子序列的个数即求最长上升子序列的长度 简单证明:因为在序列中的每一次数据的上升意味着最长不上升子序列有一个新的起点#incl...

2018-08-11 20:45:52 189

原创 洛谷P1437 敲砖块

题目大意:给定n*n的上半个矩阵,每一点表示一个砖块。有敲掉该块砖能得到的相应的分值。对于(i,j)的砖块,若i==1,则可以直接敲掉;若i>1,则必须先敲掉(i-1,j)和(i-1,j+1);现在最多可以敲掉m块砖,求最大得分sum[i][j]:第j列的前缀和 dp[i][j][k]:敲(j, i)的砖块,敲了k次的最大分数 敲掉i+1列的砖和1~i列的砖毛有关系,没有后效性,可以...

2018-08-06 20:17:12 212

原创 CodeForces - 508E_Arthur and Brackets 括号问题(stack)

题目大意:给定括号总数n,再给出每组括号的左右半边的下标相差范围L, R,求满足条件的括号序列,若不存在则输出IMPOSSIBLEpos[i]:第i个括号的左半边的位置 len:当前字符串长度 括号匹配成功的条件:pos[i]+L[i]<=len+1<=pos[i]+R[i];#include <cstdio>#include <stack>...

2018-08-05 13:50:24 192

原创 CodeForces - 920E_Connected Components? 模拟

题目大意:无向图中给定n个顶点,m条不存在的边(除了这m条边,其余都存在),求图的连通分量,及每个连通分量的大小。list < int > g;存储1~n个顶点。再后续的操作中将其分裂成若干块,直到list为空。 (1)当list不为空,清空队列,取队首的一个点入队。 (2)当queue不为空,取一个点,将与其相关的点入队并从list中删除。记录联通块大小。#include...

2018-08-05 13:01:02 281

原创 CodeForces - 722C_Destroying Array 并查集应用

题目大意:给定数组大小n,再给定数组元素(从1~n编号),最后给定数组元素的删除顺序,求执行完每一次删除操作后,数组的最大连续子段和。倒着处理,并查集。 (1)初始化数组为空,倒着加入元素。 (2)每一次加入元素,如果其左右两边也加入过了,就与左或者右边并在一起得到新的数值。当前答案来源于上一次的答案或者本次更新的数值,将两者取最大值即可。//并查集,倒着处理#include &...

2018-08-05 12:17:44 123

原创 Gym - 101572G_Galactic Collegiate Programming Contest 模拟multiset

题目大意:一场比赛的排名依据是过题数多的排名靠前,其次罚时少的排名靠前。一个队伍的排名是k+1,其中k表示有k支队伍优于他。现给定n个队伍,编号1~n,再有m个事件,每个时间是t, p,表示队伍t过了一题,罚时是p。要求输出每个事件后队伍1的排名。因为一个队伍的排名是k+1,所以只需要维护优于他的队伍数量即可。 每个队伍的属性有过题数与罚时,用multiset维护优于队伍1的队伍数。 (1...

2018-08-05 11:58:00 159

原创 CodeForces - 1007A_Reorder the Array 模拟+二分查找

题目大意:给定一个包含n个整数的数组a[],将该数组重排列,若对应位置上的数比原数组的大则++cnt,求最大的cnt;(1)将a[]按不降序排序。vector < int > v;初始化为a[2~n]; (2)如果v的队尾元素<=a[i],则不可能给相应的位置匹配一个大于a[i]的数了。输出cnt并且结束程序。 (3)二分查找v中第一个大于a[i]的位置,如果该位置为v的...

2018-08-04 17:44:49 184

原创 CodeForces - 566D 并查集区间更新优化

题目大意:给定n个人,q个询问。初始状态下,1~n个人独立。接下来q行,每行3个数字type(1,2,3), a, b。如果type==1,则将a和b并在一个集合;如果type==2则将a~b个人并在一个集合;如果type==3,若a和b在一个集合则输出YES,反之输出NO操作2:并查集区间合并优化。 nxt[i]:i的后面第一个不和i在同一集合的元素所在的集合(初始化为i+1)。每次区间(...

2018-08-04 17:22:07 325

原创 CodeForces - 1005D_Polycarp and Div 3 DP

题目大意:给定一行字符串(len<=2e5),将该字符串划分为若干子串,问怎样划分能使对应的整数能被3整除的子串最多,求最多的数量rem:从第一位开始,+每一位再对3取模 dp[i]:前i位能有多少个子串能被3整除 per[3]:最近一次出现模数为i的位置初始化:如果第一位能被3整除,则dp[1]=0;反之,dp[1]=1; 状态转移: (1)先将dp[i]赋一个已经求好的值...

2018-08-04 11:47:32 181

原创 hdu1158_Employment Planning DP

题目大意:给定月数n,给定雇佣一个人的花费hi,每个人一个月的工资sa和开除一个人的花费fi。再给定每个月需要的最少人数num[i]。求每月怎样安排雇佣和开除人,使得n个月的花费最少maxn = max(num[i]); dp[i][j]:第i月雇j个人的花费 初始化:dp[1][i] = i*(hi+fa); 状态转移: (1)如果该月雇佣的人数j>=上月雇佣的人数k:dp[i...

2018-08-04 11:10:29 134

原创 poj3783 扔鸡蛋

题目大意:给定n层楼,m个鸡蛋,求最坏的情况下需要最少进行多少次扔鸡蛋(从1楼往上走),使得鸡蛋刚好摔碎。dp[i][j]:剩余i个鸡蛋在第j层楼进行的最少次数 初始化: (1)dp[i][0]=0(在第0层楼还没扔);dp[i][1]=1(在第一楼不管碎不碎都只扔一次) (2)dp[1][i]=i(只有一个鸡蛋,在第i楼肯定需要扔i次) 最坏的情况:在碎和不碎的情况下取最大值 碎了...

2018-07-28 22:55:05 1052

原创 UVA - 12563 Jin Ge Jin Qu hao

题目大意:给定n首歌和总时间t,以及n首歌的时间。在不超过(t-1)的时间里选择尽可能多的歌的数量,若数量相同,则歌的总时间最大。01背包: 物品体积:歌的时间;物品价值:1;背包容量:t-1; dp的时候动态更新最大数量。#include <cstdio>#include <cstring>#include <algorithm>using...

2018-07-28 22:18:06 172

原创 OpenJ_POJ - 1009

题目大意:给定n个物品,背包体积m。再给出n个物品的体积wi,求Count(i, x)(1<=i<=n, 1<=x<=m):不含第i个物品来装载体积为x的背包的方案数维护F[i]:用所有物品来装载体积为x的背包的总方案数 推导C[j]: (1)如果 j < w[i],则C[j] = F[j];//装不了i,自然没有选择i (2)如果j > w[i],则...

2018-07-28 12:40:58 160

原创 CodeForces - 450B 矩阵快速幂

#include <cstdio>#include <cstring>using namespace std;const int maxs = 2;const int mod = 1e9+7;struct Matrix{ int a[maxs][maxs]; Matrix() {memset(a, 0, sizeof(a));} vo...

2018-07-26 22:16:12 113

原创 CodeForces 797C Minimal string

题目大意:给定一段字符串,用栈做容器,确定字符的入栈和出栈顺序,将字符串变为字典序最小并输出算法: (1) 遍历字符串,直到栈为空,将栈中小于当前字符的字符全部出栈。再将当前字符压栈。 (2) 若遍历完,栈不为空,将栈中字符全部出栈 启示:能压栈的尽量压,每次枚举满足条件的能出栈尽量出栈#include <cstdio>#include <stack>...

2018-07-26 21:47:10 157

原创 Kattis speed 二分答案

题目大意:速度表有误差C,速度表测的速度是S,而真正的速度是S + C。现在走了n(1<=n<=1000)段路程,总时间是t(1<=t<=1e6),每段路程的距离是di, 测得的速度是si,求误差C。二分答案:∑di/(C+si)=t 二分C即可#include <cstdio>using namespace std;const int N = 1...

2018-07-24 20:49:26 311

codeforces比赛代码

codeforeces一些比赛代码。

2019-01-26

空空如也

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

TA关注的人

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