![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
OJ训练
文章平均质量分 60
做题
_北鸣
If I could, I surely would.
展开
-
ZOJ3988 Prime Set (匈牙利算法求解)
题目链接:ZOJ - 3988 Prime Set题意:给出n个数, a[1]~a[n]若a[i]+a[j]是素数,那么称 集合{i, j} 为Prime set 给定k, 表示至多从由这n个数组成的Prime set中取出k个集合问:取出的集合合并后,集合的大小最大为多少?(注意,此处集合元素是下标,而不是a[i],{1, 2} U {1, 3} = {1, 2, 3} ,故集合大小为3)原创 2017-11-03 10:18:23 · 1178 阅读 · 6 评论 -
2010-2011 ACM-ICPC Northeastern European Regional Contest (NEERC 10) G - Game of 10
人机对打..... G-Game of 10code:#include#define rep(i, a, b) for(int i=(a); i<(b); i++)#define inf 0x3f3f3f3fusing namespace std;int num[20][20];int r[20];int c[20];int rn[20];int cn[20];原创 2017-08-07 22:06:09 · 543 阅读 · 0 评论 -
2017 - 多校训练-3 - 1005 RXD and dividing
2017 - 多校训练-3 - 1005 RXD and dividing原创 2017-08-02 09:18:34 · 361 阅读 · 0 评论 -
ST算法求解区间最值(简介) RMQ
ST算法,RMQ原创 2017-08-08 10:47:18 · 515 阅读 · 0 评论 -
最近点对模版
#include #include #include #include #include using namespace std; const double INF = 1e20; const int N = 100005; struct Point { double x; double y; }point[N];原创 2017-08-17 10:44:28 · 428 阅读 · 0 评论 -
HDU 6143 (容斥)
题意: 每个物品有姓和名, 长度均为n, 给定, n, m, m表示可用字母有m种要求: 姓和名不能存在相同的字母(如姓:AB, 名不能出现A、B这两个字母)问: 能构造出几个姓名(每个姓名不能完全相同) ? 方案数 % (1e9+7) /*姓+名枚举姓使用的字母个数k,=> 名使用的字母个数为m-k 则 方案数f(k) = C(m, k)*(k^n - S原创 2017-08-17 21:57:00 · 455 阅读 · 0 评论 -
HDU 6140 Hybrid Crystals
题意: 给定n个数Ai, 每个数都带有一个type, (L, R, N) , 给定一个k, 求Ai是否存在一个子集满足 SUM( Ai*si) = k , Ai的ty等于L => si = -1 Ai的ty等于D => si = 1 Ai的ty等于N => si = -原创 2017-08-17 23:18:17 · 378 阅读 · 0 评论 -
基尔霍夫定理 Kirchhoff's Matrix-Tree Theorem
基尔霍夫定理 Kirchhoff's Matrix-Tree Theorem原创 2017-08-03 01:28:31 · 2879 阅读 · 0 评论 -
HDU 6170 / 多校1010 Two strings (dp)
题意: 给出a, b两个串, b串为一个正则表达式( .可匹配任意一个字符, *表示*前面的一个字符可以出现0次或者多次)#include #define rep(i, a, b) for(int i=(a); i<(b); ++i)using namespace std;const int maxn=2600;char a[maxn],b[maxn];//dp[i][j]原创 2017-08-22 21:31:17 · 295 阅读 · 0 评论 -
Codeforces Round #191 (Div. 2) C. Magic Five
Codeforces Round #191 (Div. 2) C. Magic Five原创 2017-05-30 19:43:59 · 370 阅读 · 0 评论 -
POJ 3349 Snowflake Snow Snowflakes (哈希表)
哈希表处理原创 2017-03-25 23:36:39 · 322 阅读 · 0 评论 -
POJ 3026Borg Maze (BFS+Prim 好题, 也是坑题)
prim+bfs原创 2017-03-16 21:28:54 · 329 阅读 · 0 评论 -
POJ 3274 Gold Balanced Lineup (前缀和 + 哈希表)
POJ 3274 Gold Balanced Lineup (前缀和 + 哈希表)原创 2017-04-04 21:38:15 · 1540 阅读 · 0 评论 -
POJ 2151 Check the difficulty of problems (简单的概率dp)
POJ 2151 Check the difficulty of problems (简单的概率dp)原创 2017-04-05 13:00:10 · 344 阅读 · 0 评论 -
poj 3321 Apple Tree (dfs+树状数组)
poj 3321 Apple Tree (dfs+树状数组)原创 2017-04-05 18:07:53 · 357 阅读 · 0 评论 -
Foj 2236 第十四个目标 (树状数组+简单dp+离散化)
Foj 2236 第十四个目标 (树状数组+简单dp+离散化)原创 2017-04-15 13:19:50 · 607 阅读 · 0 评论 -
poj 2002 Squares (哈希+正方形已知相邻两点求另外两点的坐标)
poj 2002 Squares (哈希+正方形已知相邻两点求另外两点的坐标)原创 2017-04-06 20:05:52 · 990 阅读 · 0 评论 -
HDU 1027 Ignatius and the Princess II (模拟题)
HDU 1027 Ignatius and the Princess II (模拟题)原创 2017-05-27 15:23:16 · 368 阅读 · 0 评论 -
HDU 1370 Biorhythms (中国剩余定理, 简单套用)
题意:有3个循环周期,周期天数分别为23、28、33。对于某一年,已知某年这3个周期的某一峰值分别是当年的第p、e、i天, 问从第d天开始到最近一个满足3个周期都达到峰值的日期还有多少天。经典的中国剩余定理应用题目.#include#define rep(i,a, b) for(int i=(a); i<(b); ++i)#define pb push_back#define原创 2017-08-22 22:25:36 · 585 阅读 · 0 评论 -
HDU 1011 Starship Troopers (树形DP, 简单题目)
Problem Description题目链接: HDU 1011 Starship Troopers题意:副本: 有n个room, 每个room 都有a个怪物, b点经验值, 每个room之间为双向边, 构成一颗树(仅有n-1条边)你: 拥有m个士兵, 一个士兵可以打20个怪物限制: 要拿下某个room的b点经验,必须留下x个士兵将所有的怪物消灭,必须将当前room中所有怪物清除掉才能进原创 2017-09-26 17:08:35 · 301 阅读 · 0 评论 -
ACM常用对拍程序
建立cpp文件,放置标程,执行后产生exe可执行文件 (std.cpp -> std.exe )#include<bits/stdc++.h>using namespace std;int main(){ int a, b; cin >> a >>b; srand(time(NULL)); cout << a<<" "<<b<<endl;//输出输入的数据,便于原创 2017-10-10 09:05:52 · 590 阅读 · 0 评论 -
HDU 1269 迷宫城堡 (裸的Tarjan算法求强连通分量, 可作模版)
题目链接 : HDU 1269题意: 给定有向边,问是否两两可达,即整个图是个强连通图(强连通分量=1)解法: 直接上tarjan板子求解#include<bits/stdc++.h>#define rep(i, a, b) for(int i=a; i<=b; ++i)#define repp(i, a, b) for(int i=b; i>=a; --i)using namespa原创 2017-10-10 09:36:07 · 354 阅读 · 0 评论 -
HDU 4446 IT Companies (线段树, 区间修改)
题目链接: HDU 4446 题意: 有n个公司,标签由1到n, 对应的分支标签由-1到-n. (分支不是公司,分支和公司均是单元) 满足以下条件: 每个公司的人数>对应分支的人数 如果A公司人数>B公司人数,那么A公司的分支的人数>B公司的分支的人数 现在给出C[i], 表示对于第i个公司而言,在标签>i (即i+1到n) 的公司 和 标签大于-i (即 -(i-1)原创 2017-10-03 22:31:04 · 403 阅读 · 0 评论 -
HDU 1069 Monkey and Banana (dp, 最长上升子序列)
题目链接: HDU 1069题意: 给定n个长方体,每个长方体均有长、宽、高. 将这些长方体(可重复使用)叠起来,满足上面的长方体的长宽>下面的长方体的长宽( 长>长,宽>宽,为严格> )的条件下. 问叠出来的高度最高为多少?解法: 一个长方体可分为6种类型的长方体( 以不同的边为底边 ), 按照长排序后,进行最长上升子序列求解,即可得到答案.#include<bits/stdc++.h>u原创 2017-10-04 16:49:08 · 433 阅读 · 0 评论 -
HDU 1074 Doing Homework (二进制状态压缩,状压dp)
题目链接 : HDU 1074题意: 给出n个课程作业, (课程名称,截止时间,完成所需天数), n<=15每个课程作业,延误一天就扣一分求最少扣分,以及输出方案,按字典序顺序解法:n<=15则采用二进制去表示完成状态, 1 < < 15 - 1 = 111 111 111 111 111 (15个1)表示15个任务全部完成,0表示任务未完成,则,状态从 1 到 1 << n -1.原创 2017-10-04 18:01:02 · 471 阅读 · 0 评论 -
HDU 1078 FatMouse and Cheese (dfs + dp记忆化搜索)
题目链接 : HDU 1078题意: 给定N x N 的方阵,每个格子均有一个价值,问从[0, 0]从发,往上下左右四个方向走,每次至多只能走k个格子,且每次停留的格子必须比上一次停留的格子的价值大(严格大于), 问: 能吃到的最大价值为多少?解法: dp[i][j]表示从[i,j]出发能吃到的最大价值,由此进行记忆化搜索,即可得到答案. #include<bits/stdc++.h>usi原创 2017-10-05 16:56:33 · 360 阅读 · 0 评论 -
Tarjan无向图求割点割桥模版, O(n+m), 无重边/重边情况均可处理
/* Function:Tarjan无向图求割点割桥, O(n+m), 无重边/重边情况均可处理 1. 求出所有的桥,再将 */#include<bits/stdc++.h>#define rep(i,a,b) for(int i=a; i<=b; ++i)#define repp(i,a,b) for(int i=b; i>=a; --i)#define fi first#def原创 2017-10-13 08:10:44 · 668 阅读 · 0 评论 -
HDU 5521 Meeting ( nlogn的dijkstra+拆点)
题目链接: HDU 5521 题意: 给定n和m,n表示n个点,m表示m个集合,给出每个集合包含的点的编号,第i个集合中各个点之间的距离为ti,问,A位于编号为1的点,B位于编号为n的点,若同时出发,最快需要多久能相遇(可停留在某点等待), 输出最小时间以及满足最小时间的相遇的点.解法: 这道题目,很裸的dijkstra最短路,但是依据题目,若集合中两两建边,则边数可达到1e12,爆空原创 2017-10-14 17:48:22 · 436 阅读 · 0 评论 -
HDU 2842 Chinese Rings ( 矩阵转换,矩阵快速幂求解)
题目链接: HDU 2842题意: 有一种中国结,由n个环组成,问将n个环全部拆下来所需要的最小步数 拆解条件: 拆解第n个环,需要保证前n-2个环全部拆解下来,而第n-1个环保留(依旧悬挂)解法: 设F[n]为拆解n个环所需要的最小步数. 拆解n个环的情况下,在拆解第n个环时,需要先将前n-2个环拆解,需要F[n-2] + 1步(此1步为拆解第n个环的那一步),原创 2017-10-18 14:12:42 · 413 阅读 · 0 评论 -
HDU 1059 Dividing(多重背包 , 二进制优化形成01背包)
题目链接: 1059 Dividing题意: 有6个物品,一个物品的价值=该物品的编号i (1-6),给定每个物品的数量,问,是否能将所有物品分成价值相等的两堆?解法: 多重背包,将价值当作背包承受量,物品数量当作价值.#include<stdio.h>#include<string.h>int a[7];int f[120005];int v,k;void ZeroOnePack(原创 2017-09-29 16:29:17 · 355 阅读 · 0 评论 -
HDU 1024 Max Sum Plus Plus (dp, 降维)
题目链接: HDU 1024 Max Sum Plus Plus题意: - 给出n个数, 取其中不相交的m个连续序列的累加和,问最大值为多少构造dp方程最直观的方程: dp[i][j] = MAX( dp[i-1][j]+a[i], dp[k][j-1]+a[i]) ( 1<=k < i )其中dp[i][j]表示,在必须取第i个数的前提下,将前i个数分成j段的最大值数据范围n->原创 2017-09-26 19:23:56 · 259 阅读 · 0 评论 -
边存储 - 前向星(结构体存边)
#include<bits/stdc++.h>#define rep(i, a, b) for(int i=a; i<=b; ++i)#define repp(i, a, b) for(int i=b; i>=a; --i)using namespace std;const int maxn = 1e4+5;struct edge{ int to, next;}node[maxn原创 2017-09-26 19:49:28 · 601 阅读 · 0 评论 -
HDU 6185 Covering (2017 广西邀请赛重现赛)(矩阵快速幂)
HDU 6185 Covering (2017 广西邀请赛重现赛)(矩阵快速幂)原创 2017-09-01 15:32:10 · 1215 阅读 · 0 评论 -
codeforces Manthan, Codefest 17 B.Marvolo Gaunt's Ring (简单dp)
题目链接: B.Marvolo Gaunt’s Ring题意: 给出n, p, q, r给出n个数, a[i]求p * a[i] + q * a[j] + r * [k] 的最大值 ( 1<=i<=j<=k<=n)解法: 限制条件i<=j<=kp*a[i] => 作为起点q*a[j] => 与 max( p * a[i] ) (i<=j) 相加r*a[k] => 与 max (原创 2017-09-28 10:53:58 · 358 阅读 · 0 评论 -
HDU 1025 Constructing Roads In JGShining's Kingdom (简单dp, 最长上升子序列LIS)
题目链接 : Constructing Roads In JGShining’s Kingdom题意: 有rich city和poor city 两种,分别有n个,编号均为1-n, 一个poor city只会与一个rich city连接,两种city的布局(连边不允许交叉如下 从左到右,均为编号为1-n. 给定边(poor city 连接 rich city),问在不相交的情况下能连接几条原创 2017-09-28 15:10:38 · 322 阅读 · 0 评论 -
2015-2016 Northwestern European Regional Contest (NWERC 2015) E. Elementary Math
题目链接: 2015-2016 Northwestern European Regional Contest (NWERC 2015) E. Elementary Math 题意: 给定n, 以及n对(a, b), 每对(a, b) 均有三个操作(a*b, a+b, a-b). 给每一对选择一个操作使得任意两对的计算结果均不相同. 解析: 求离散化后,建边(将(a,b)原创 2017-09-28 12:20:38 · 435 阅读 · 0 评论 -
UVALive - 7527 Funfair (dp + 滚动)
题目链接: UVALive - 7527 Funfair题意: 给定n个游戏,从中选取k种游戏去玩,玩家的金钱初始值为x. 假设玩第i个游戏之前,拥有的金钱为x0, 则在第i个游戏中若胜利,则金钱变成x0+ai, 否则金钱变成 (1-li)*x0. 问: 玩完k个游戏后,金钱最大值为多少.(即求期望最大值)给定, n, k, xn行,第i行输入第i个游戏的ai, li, pi, (pi表原创 2017-10-07 16:35:12 · 338 阅读 · 0 评论 -
HDU Bone Collector (01背包,裸题)
题目链接Bone Collector题意: 给定n, v . 表示有n个物品, 和一个最大承重为v的背包,给出n个物品,每个物品的价值和重量. 问这个背包最多获得多少价值解法: 01背包,裸题#include<bits/stdc++.h>#define rep(i,a,b) for(int i=a; i<=b; ++i)#define repp(i,a,b) for(int i=b;原创 2017-09-29 14:44:19 · 344 阅读 · 0 评论 -
POJ 1789 Truck History (prim解决最小生成树问题)
Prim处理最小生成树问题原创 2017-03-16 13:45:55 · 288 阅读 · 0 评论 -
POJ 2240 Arbitrage (Floyd最短路变形)
Floyd变形原创 2017-03-15 12:56:18 · 332 阅读 · 0 评论