
挑战程序设计竞赛
TriAzure
靡不有初,鲜克有终。
展开
-
3.2.5 二维坐标离散化
离散化针对于:点的个数很少,但数据范围很大的情况。比如本题给出了1e6的数据范围,如果以“桶”的思想以数组计数,那么,第一二维数组没办法开那么大,第二如果用别的容器实现,因为过于稀疏,十分浪费空间。离散化的核心在于映射,但是我们不能仅仅根据个数无脑映射,而要考虑到所求问题的限制,以保证我们构造的映射不影响目标问题的解答。在这个过程中会涉及到相同合并、不相邻间隔的问题。以这道题目为例,其实我们...原创 2019-09-19 18:02:21 · 1371 阅读 · 2 评论 -
POJ 2431 Expedition
POJ 2431 Expedition坑:未必是按顺序给出输入,要自己先排序!(样例给的是排好序的,但实际上测试数据是乱序的,如果不排序无法确定遇见加油站的先后顺序)排序时需要借助struct,因为如果只对dis[i]进行排序,无法保持dis与num之间的对应关系。[关于struct排序中队sort的使用(https://blog.youkuaiyun.com/qq_40828914/article/d...原创 2019-06-24 13:55:35 · 196 阅读 · 0 评论 -
2.5 图
2.5.1 图是什么n个顶点的无向图要连通至少需要(n-1)条边E.g.2019山东省赛D一棵树的边数 = 定点数 - 1边数 = 定点数 - 1 的连通图是树无圈的有向图叫DAG(Directed Acyclic Graph),在DAG中对每个顶点给出一个编号,第i号顶点叫做vi。那么存在vi到vj的边时就有i<j成立。这样的编号方式叫做拓扑序。有些DAP问题可以用dp解决...原创 2019-06-25 20:06:37 · 201 阅读 · 0 评论 -
2.4 加工并存储数据的数据结构(手写堆待补充 POJ 2431待解决)
2.4.1 树和二叉树2.4.2 优先队列和堆用二叉树高效实现优先队列的数据结构 → 堆堆的实现POJ 2431 Expedition方法I 贪心 WA待解决采取的贪心策略是:在当前油量范围(可达的所有加油站)内,每次都选择净收益最大的站点。当净收益相同时,选择距离终点最近的哪一个。净收益 = 该站点油量 - 当前位置与该站点的相对距离。#include <iostream&...原创 2019-06-16 16:00:54 · 136 阅读 · 0 评论 -
2.3 动态规划入门(lis未完 2.3.3未完
2.3.1 背包问题我的程序……还有问题木有改出来#include <iostream>#include <algorithm>using namespace std;/**这是我的垃圾程序**//*n个重量和价值分别为wi vi的物品,从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值1 <= n <= 100 1 &l...原创 2019-05-23 22:06:28 · 166 阅读 · 0 评论 -
2.2 贪心
硬币问题#include <iostream>using namespace std;int c[6] = {0}, //存放各个面值硬币的枚数 b[6] = {1, 5, 10, 50, 100, 500};int main(){ /*int c1, c5, c10, c50, c100, c500, //这些面值的硬币各多少枚 mo...原创 2019-05-06 21:03:00 · 125 阅读 · 0 评论 -
2.1 最基础的穷竭搜索
#include <iostream>#include <cstdio>using namespace std;int n, //读入n个数 1 <= n <= 20 sum; //和是否恰好为k(sum)int numberset[20] = {0};bool dfs(int x, int sum...原创 2019-05-05 21:17:57 · 133 阅读 · 0 评论 -
1.6 轻松热身
n根棍子,i号棍子的长度为ai。从中选出3根棍子组成周长尽可能长的三角形。输出最大的周长,如果不能组成三角形,输出0。限制条件:3 <= n <= 100;1 <= ai <= 10^6O(n^3)#include <iostream>using namespace std;int numberset[100];int main(){ ...原创 2019-04-21 21:15:11 · 130 阅读 · 0 评论