摘要: void func(int n, const vector<int>& t) { auto begin = t.begin(); auto end = t.end(); auto mid = t.begin() + (end - begin) / 2; while (mid != end && *m 阅读全文
posted @ 2020-04-01 23:13 Voca 阅读(43) 评论(0) 推荐(0)
摘要: 大佬的讲解 康托展开 : 解决一些序列问题的算法; 用于求当前序列在按照字典序排序的全排列的情况下,排在第几位; 康托展开是一个全排列到自然数的双射;可用于哈希表的压缩; //(反正我不会); //它可以应用于哈希表中空间压缩, //而且在搜索某些类型题时,将VIS数组量压缩。比如:八数码、魔板。。 阅读全文
posted @ 2019-09-16 15:27 Voca 阅读(34) 评论(0) 推荐(0)
摘要: sum 初值 为 1; if(sum>=a[i]) is true; 那么序列的取值范围为 (序列的最小和 ~序列的最大和) #include<bits/stdc++.h> #define ll long long using namespace std; ll a[500005]; int mai 阅读全文
posted @ 2019-08-21 21:29 Voca 阅读(20) 评论(0) 推荐(0)
摘要: 求最佳玩家在最糟糕情况下最大收益 #include <bits/stdc++.h> #define ll long long using namespace std; struct node { ll p; ll f; }a[100005]; bool cmp(struct node a,struc 阅读全文
posted @ 2019-08-21 21:26 Voca 阅读(20) 评论(0) 推荐(0)
摘要: 类似于背包的一个题; 目前我对DP与贪心的理解,类似于一棵树; 贪心是从树根走到树叶;每次都走当前最优路线; 而DP是从树叶走向树根;每个父节点都是来自子节点的最优值;故DP题的结果一般出现在DP数组的DP[1][1] , DP[n][m], DP[1][j] or DP[i][1]; #inclu 阅读全文
posted @ 2019-08-19 09:49 Voca 阅读(38) 评论(0) 推荐(0)
摘要: 排序算法动图演示 阅读全文
posted @ 2019-08-13 15:37 Voca 阅读(25) 评论(0) 推荐(0)
摘要: 弗洛伊德算法 Floyd算法,不允许所有权值为负的回路,可以求出任意两点间的最短距离 for(int k=1; k<=n; k++) for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(map[i][k]+map[k][j]<map[i][j]) m 阅读全文
posted @ 2019-08-08 15:48 Voca 阅读(140) 评论(0) 推荐(0)
摘要: 用 step 来记录此点所在的层数 用 data 来记录当前的位置 Problem Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫。在他们所在的地域,有n个隘口,编号为1…n,某些隘口之间是有通道连接的。其中近卫军团在1号隘口,天灾军团在n号隘口。某一天,天灾军团的领 阅读全文
posted @ 2019-08-06 20:16 Voca 阅读(45) 评论(0) 推荐(0)
摘要: 堆排序特点之一就是不需要将全部都数据都进行排序就可以确定几个较大值,或者说堆排序适合只需要找到几个最大的元素或者最小的元素的情况下的排序; SDUTOJ 3401 请用堆排序完成。 正确答案 #include <stdio.h> #include <stdbool.h> int data[11]; 阅读全文
posted @ 2019-08-05 18:59 Voca 阅读(29) 评论(0) 推荐(0)
摘要: ios::sync_with_stdio(false); 取消之后scanf,cin,printf,cout 不可混用。 阅读全文
posted @ 2019-08-01 09:50 Voca 阅读(31) 评论(0) 推荐(0)