Vijos
NotFound1
这个作者很懒,什么都没留下…
展开
-
|Vijos|动态规划|P1059 积木城堡
https://vijos.org/p/1059求出最小城堡高度作为背包容量,对每个城堡进行01背包,然后判断即可(很久没写背包题目居然错了个细节调了半天...)#include#include#include#include#include#define ms(i,j) memset(i,j,sizeof(i));using namespace std;const in原创 2016-08-27 11:37:05 · 802 阅读 · 0 评论 -
|Vijos|树状数组|P1066 弱弱的战壕
https://vijos.org/p/1066读入数据按x排序,然后按照y构造树状数组,因为排序后xii+1, 所以第i个战壕的保护个数一定是[1..yi]里#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;const int maxn = 15000 +原创 2016-08-23 12:26:27 · 410 阅读 · 0 评论 -
|Vijos|树状数组|P1512 SuperBrother打鼹鼠
https://vijos.org/p/1512一个二维树状数组,注意树状数组不能出现0,把所有坐标+1即可,求子矩阵和为sub(x2,y2) - sub(x1-1,y2) - sub(x2, y1-1) + sub(x1-1,y1-1)其中sub为(1,1)到(x,y)矩阵的和。#include#include#include#define ms(i,j) memset(i原创 2016-08-23 14:30:48 · 448 阅读 · 0 评论 -
|Vijos|贪心|P1021 Victoria的舞会1
https://vijos.org/p/1021大水题,如果A的花名册里的人不少于k个,那么答案+1#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;int main () { int n,k; scanf("%d%d", &n ,&k); int an原创 2016-08-24 10:53:18 · 627 阅读 · 0 评论 -
|Vijos|NOIP2002|动态规划|P1121 马拦过河卒
https://vijos.org/p/1121实际上这题其实是递推。。到一个点的路径条数为它左边和上面的点的路径和#include#include#include#define ms(i,j) memset(i, j, sizeof(i));#define pa2(a,x,y) for (int i=0;i<=x;i++){ for (int j=0;j<=y;j++) if原创 2016-08-24 13:02:47 · 418 阅读 · 0 评论 -
|Vijos|贪心|P1039 最小差距
https://vijos.org/p/1039使最大数最小,最小数最大即可。#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;int a[11];bool vi[11];int main () { int t; scanf("%d"原创 2016-08-24 15:52:16 · 1151 阅读 · 0 评论 -
|Vijos|贪心|堆|P1079 中青局
https://vijos.org/p/1079Huffman树思想,类似合并果子,注意字符串处理,用堆即可(我用的一个优先队列)#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;char s[10000];int num[28];//0..2原创 2016-08-25 12:02:22 · 348 阅读 · 0 评论 -
|Vijos|NOIP2002|贪心|P1123 均分纸牌
https://vijos.org/p/1123求出总和的平均数,每个A[i]减去平均数,逐步将A[i]变为0,怎么变为0?将A[i]的所有牌移动到A[i+1],如果本身是0,则不需要移动#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;int原创 2016-08-25 12:24:29 · 335 阅读 · 0 评论 -
|Vijos|贪心|P1444 区间
https://vijos.org/p/1444尽量在右边选点#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;const int maxn = 10000 + 5;struct qj{ int a; int b;}q[maxn];b原创 2016-08-25 15:33:38 · 367 阅读 · 0 评论 -
|Vijos|贪心|P1414 Dejected Birthday-盗窃
https://vijos.org/p/1414经典删数问题,英文内容为“给出一串数字删除n位后使值最小”,根据贪心思维,要删除Ai>Ai+1的每个Ai注意前导0,以及全部为0时要保留一位0输出。#include#include#include#include#define ms(i,j) memset(i,j,sizeof(i));using namespace std;原创 2016-08-26 10:26:23 · 438 阅读 · 0 评论 -
|Vijos|贪心|堆|P1513 紧急救援
https://vijos.org/p/1513按照h排序,然后构造大根堆,将每个t一一插入,那么这里有两种情况1、当前总时间(堆和)+ti 2、否则,如果根堆顶部的值都比ti大,那么让ti替换掉根堆顶部即可答案是根堆里元素的个数。#include#include#include#include#define ms(i,j) memset(i,j,sizeof(i));原创 2016-08-26 11:00:02 · 351 阅读 · 0 评论 -
|Vijos|贪心|P1691 输油管道问题
https://vijos.org/p/1691管道尽量在中间,即求中位数,要分奇偶两种情况:奇数:第n/2个偶数:第(n+1)/2个此题的x并无用处,最后将所有油田距离管道的距离加起来就行了。#include#include#include#include#include#define ms(i,j) memset(i,j,sizeof(i));using n原创 2016-08-26 16:52:22 · 610 阅读 · 0 评论 -
|Vijos|贪心|P1662 最大配对
https://vijos.org/p/1662把两个a,b从小到大排序,此时绝对值差最大的绝对是a头-b尾或者b头-a尾,最后累加起来即可#include#include#include#include#include#define ms(i,j) memset(i,j,sizeof(i));using namespace std;int a[1000005];int b原创 2016-08-26 17:03:17 · 563 阅读 · 0 评论 -
|Vijos|NOIP2005|动态规划|P1002 过河
https://vijos.org/p/1002dp转移方程比较简单,不过需要优化数组开滚动数组,否则10^9数组。。然后就是离散化,如果连续t个值都相同,那么就跳到下一个石头位置-tPS:f数组初始化开大一点。。我提交五六次结果是这个问题。。#include#include#include#include#include#define ms(i,j) memset(原创 2016-08-26 22:00:55 · 593 阅读 · 0 评论 -
|Vijos|动态规划|P1057 盖房子
https://vijos.org/p/1057设f[i][j]为以i,j为正方形右下顶点的最大边长不难得出初始值 f[i][j] = a[i][j] ,a为输入数组则有状态转移方程 f[i][j] = min(f[i-1][j], f[i-1][j-1], f[i][j-1]);因为f[i][j]只能从这些点得出 #include#include#include#i原创 2016-08-27 10:09:17 · 633 阅读 · 0 评论 -
|Vijos|图论生成树|P1234 口袋的天空
https://vijos.org/p/1234求一个不完全最小生成树,代码如下,一个简单的Kuskal#include#include#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;//边 struct ed{ int x; in原创 2016-08-22 22:20:23 · 703 阅读 · 0 评论 -
|Vijos|IOI1996|图论强连通分量|P1595 学校网络
https://vijos.org/p/1595tarjan求强连通分量后缩点,计算出度和入度,入度为0的点的个数为第一问答案,第二问答案为max(入度为0的点的个数, 出度为0的点的个数)#include#include#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using原创 2016-08-22 15:16:49 · 491 阅读 · 0 评论 -
|Vijos|NOIP2012|动态规划|P1792 摆花
https://vijos.org/p/1792多重背包方案数变形题#include#include#include#include#include#define ms(i,j) memset(i,j,sizeof(i));using namespace std;const int maxn = 100 + 5;int n,m;int a[maxn];int f[max原创 2016-08-27 12:14:54 · 512 阅读 · 0 评论 -
|Vijos|动态规划|P1025 小飞侠的游园方案
https://vijos.org/p/1025简单的01背包#include#include#include#include#include#define ms(i,j) memset(i,j,sizeof(i));using namespace std;const int maxt = 1000 + 5;int v[105], w[105];int f[maxt];原创 2016-08-27 14:31:42 · 588 阅读 · 0 评论 -
|Vijos|动态规划|P1037 搭建双塔
原文地址:http://blog.csdn.net/ly59782/article/details/52057877描述2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难。为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔。Mr. F有N块水晶,每块水晶有一个高度,他想用这N块水晶搭建两座有同样高度的塔,使他们成转载 2016-08-28 10:30:34 · 1367 阅读 · 1 评论 -
|Vijos|动态规划|P1111 小胖的水果
https://vijos.org/p/1111LCS,(两个字符串的总长度 - 两个字符串求得的LCS)即为答案, 注意输入的字符是0开始的,而dp里0-1会越界错误,输入时不要把输入的字符指针指向a,而是指向a+1#include#include #include #include #define ms(i,j) memset(i, j, sizeof(i)); usi原创 2016-08-28 16:38:51 · 513 阅读 · 0 评论 -
|Vijos|动态规划|P1071 新年趣事之打牌
https://vijos.org/p/107101背包+输出最优解,在丢失牌的重量中进行01背包#include#include #include #include #define ms(i,j) memset(i, j, sizeof(i)); using namespace std;int w[105];int f[100005];int g[100005];原创 2016-08-28 19:27:10 · 592 阅读 · 0 评论 -
|Vijos|动态规划|P1264 神秘的咒语
https://vijos.org/p/1264LCIS,也就是最长上升公共子序列用dp[I][j]表示a[1..i]和b[1..j]的最长上升公共子序列,并以b[j]结尾dp[I][j] = max(dp[I-1][j], max(dp[I-1][k]+1 | k不理解的强烈建议自己模拟一次样例15 1 4 2 5 -124 -12 1 2 4k可原创 2016-08-29 16:53:12 · 1091 阅读 · 0 评论 -
|NOIOJ|动态规划|2988:计算字符串距离
http://noi.openjudge.cn/ch0206/2988/折腾了我很久,终于会了。。设a数组为第一个字符串,b数组为第二个字符串,数组从下标1开始对于这个问题,我们设f[i][j]为ai到bj的字符串距离(ai为a[1~i], bi为b[1~j])设a数组的长度为m,b数组的长度为n初始:f[i][0] = i; (1当b数组为空时,a数组到b数组原创 2016-08-29 18:04:14 · 902 阅读 · 0 评论 -
|Vijos|图论最短路|P1046 观光旅游
https://vijos.org/p/1046求个最小环,Floyd即可。#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;int n,m;int G[102][102];int dis[102][102];int main () {原创 2016-08-20 14:46:04 · 453 阅读 · 0 评论 -
|Vijos|图论最短路|P1391 想越狱的小杉
SPFA,感觉不是真正意义上的SPFA。。#include#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;const int maxn = 2000 + 5;int w[maxn][maxn];int edge[maxn][maxn];in原创 2016-08-20 22:55:19 · 679 阅读 · 0 评论 -
|Vijos|图论最短路|P1406 古韵之鹊桥相会
https://vijos.org/p/1406两个相邻点相同则权值为0,否则权值为1.不相邻点权值设为正无穷然后在上面和下面加上一排数,上面的是起点,下面的是终点最后Floyd,输出任意一个在起点和终点的距离(G[起点][终点])即可#include#include#include#include#include#define ms(i,j) memset(i, j原创 2016-08-21 13:40:10 · 348 阅读 · 0 评论 -
|Vijos|图论最短路|P1446 最短路上的统计
https://vijos.org/p/1446Floyd+枚举先做一次Floyd,然后对于每一个询问,枚举中间点k,如果G[a][k]+G[k][b]==G[a][b],那么这个就是最短路上的点。#include#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using nam原创 2016-08-21 14:42:20 · 424 阅读 · 0 评论 -
|Vijos|NOIP2015|模拟|P1975 扫雷游戏
https://vijos.org/p/1975处理二维数组即可,注意坐标偏移即可#include原创 2016-08-31 20:12:12 · 647 阅读 · 0 评论 -
|Vijos|图论最短路|P1155 集合位置
https://vijos.org/p/1155恶心的题目。。用dijkstra求次短路只有70分,只有删边才能AC,这里给出70分代码给大家参考。#include#include#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;struct原创 2016-08-22 11:59:36 · 428 阅读 · 0 评论 -
|Vijos|图论强连通分量|P1023 Victoria的舞会3
https://vijos.org/p/1023此题虽然可以并查集AC,但是实际上并查集是错误的这道题只能用tarjan算法求强连通分量,因为这个是一个有向图,而并查集只能求无向图的强连通分量#include#include#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));usi原创 2016-08-22 14:08:35 · 525 阅读 · 0 评论 -
|Vijos|图论最短路|P1082 丛林冒险
https://vijos.org/p/1082非常有代表性的题目,在SPFA时多加一个判断即可此问题可解所有体力+权值的最短路问题#include#include#include#include#include#define ms(i,j) memset(i, j, sizeof(i));using namespace std;struct node{ int u;原创 2016-08-20 18:42:58 · 347 阅读 · 0 评论