nv

HNOI 2019 多边形

血红的双手。 提交于 2019-12-22 00:16:28
HNOI 2019 多边形 题意 小 R 与小 W 在玩游戏。 他们有一个边数为 \(n\) 的凸多边形,其顶点沿逆时针方向标号依次为 \(1,2,3...n\) 。最开始凸多边形中有 \(n\) 条线段,即多边形的 \(n\) 条边。这里我们用一个有序数对 \((a,b)\) (其中 \(a<b\) )来表示一条端点分别为顶点 \(a,b\) 的线段。 在游戏开始之前,小 W 会进行一些操作。每次操作时,他会选中多边形的两个互异顶点,给它们之间连一条线段,并且所连的线段不会与已存的线段重合、相交( 只拥有一个公共端点不算作相交 )。他会不断重复这个过程,直到无法继续连线,这样得到了状态 \(S_0\) 。 小 W 定义了一种「旋转」操作:对于当前状态,选定 \(1\le a<b<c<d\le n\) 共 \(4\) 个顶点 ,它们两两之间共有 \(5\) 条线段—— \((a,b),(b,c),(c,d),(a,d),(a,c)\) ,然后删去线段 \((a,c)\) ,并连上线段 \((b,d)\) 。那么用有序数对 \((a,b)\) 即可唯一表示该次「旋转」。我们称这次旋转为 \((a,c)\) 「旋转」。显然每次进行完“旋转”操作后多边形中依然不存在相交的线段。 当小 W 将一个状态作为游戏初始状态展示给小 R 后,游戏开始。游戏过程中,小 R 每次可以对当前的状态进行

普利姆算法求最小生成树权值之和

允我心安 提交于 2019-12-15 11:47:00
#include<iostream> #include<string.h> using namespace std; #define Max 50 typedef struct { char data; //顶点的数据 int num;//顶点的数组下标 }VertexType; typedef struct Gnode //建立一个无向图 { int Nv;//顶点数 int Ne;//边数 int G[Max][Max]; //最大max行 max列的矩阵 VertexType vex[Max]; }*Graph,graph; typedef struct ENode { int v1,v2; //有向边v1 v2 int weight; //邻接矩阵里面的值都是两条边之间的权值 }*Ptr,ptr; void init_Graph(Graph &L); void creat_graph(int vertexnum,Graph &L); //所有顶点,一条边都没有 void built_graph(Graph &L,int &e); void insert_Ne(Graph L,Ptr t); void built_graph(Graph &L); void printlist(Graph L); //打印邻接矩阵 void prim(Graph &L,int v0,float

Kruskal算法实例

巧了我就是萌 提交于 2019-12-10 15:45:17
package com . PTA . graph . Kruskal ; import java . util . * ; /** * 公路村村通问题 * 算法: 最小生成树 Kruskal * 无向有权图 * 图存储--- 邻接矩阵 */ public class Kruskal { static Scanner cin = new Scanner ( System . in ) ; /** 点数, 边数, 从1开始*/ static int Nv , Ne ; static ArrayList < Edge > edges ; /** 并查集, 点数*/ static int [ ] s ; static class Edge implements Comparable < Edge > { int v1 , v2 ; int w ; // 权重 Edge ( int v1 , int v2 , int w ) { this . v1 = v1 ; this . v2 = v2 ; this . w = w ; } @Override public int compareTo ( Edge o ) { return w - o . w ; } } /** 找到一个结点所在的集合*/ static int find ( int x ) { if ( s [ x ] < 0 )

【algo&ds】8.最小生成树

倖福魔咒の 提交于 2019-12-06 04:17:06
1.最小生成树介绍 什么是最小生成树? 最小生成树(Minimum spanning tree,MST)是在一个给定的无向图G(V,E)中求一棵树T,使得这棵树拥有图G中的所有顶点,且所有边都是来自图G中的边,并且满足整棵树的边权值和最小。 2.prim算法 和Dijkstra算法很像!!请看如下Gif图,prim算法的核心思想是对图G(V,E)设置集合S,存放已被访问的顶点,然后每次从集合V-S中选择与集合S的最短距离最小的一个顶点(记为u),访问并加入集合S。之后,令顶点u为中间点,优化所有从u能到达的顶点v与集合s之间的最短距离。这样的操作执行n次,直到集合s中包含所有顶点。 不同的是,Dijkstra算法中的dist是从 源点s到顶点w的最短路径 ;而 prim算法中的dist是从集合S到顶点w的最短路径 ,以下是他们的伪码描述对比,关于Dijkstra算法的详细描述请 参考文章 算法实现: #include<iostream> #include<vector> #define INF 100000 #define MaxVertex 105 typedef int Vertex; int G[MaxVertex][MaxVertex]; int parent[MaxVertex]; // 并查集 int dist[MaxVertex]; // 距离 int Nv; //

【algo&ds】8.最小生成树

怎甘沉沦 提交于 2019-12-05 11:37:09
1.最小生成树介绍 什么是最小生成树? 最小生成树(Minimum spanning tree,MST)是在一个给定的无向图G(V,E)中求一棵树T,使得这棵树拥有图G中的所有顶点,且所有边都是来自图G中的边,并且满足整棵树的边权值和最小。 2.prim算法 和Dijkstra算法很像!!请看如下Gif图,prim算法的核心思想是对图G(V,E)设置集合S,存放已被访问的顶点,然后每次从集合V-S中选择与集合S的最短距离最小的一个顶点(记为u),访问并加入集合S。之后,令顶点u为中间点,优化所有从u能到达的顶点v与集合s之间的最短距离。这样的操作执行n次,直到集合s中包含所有顶点。 不同的是,Dijkstra算法中的dist是从 源点s到顶点w的最短路径 ;而 prim算法中的dist是从集合S到顶点w的最短路径 ,以下是他们的伪码描述对比,关于Dijkstra算法的详细描述请 参考文章 算法实现: #include<iostream> #include<vector> #define INF 100000 #define MaxVertex 105 typedef int Vertex; int G[MaxVertex][MaxVertex]; int parent[MaxVertex]; // 并查集 int dist[MaxVertex]; // 距离 int Nv; //

【algo&ds】7.最短路径问题

此生再无相见时 提交于 2019-12-05 11:12:18
单源最短路径问题:从某固定源点出发,求其到所有其他顶点的最短路径 (有向)无权图:BFS (有向)有权图:Dijkstra算法 多源最短路径问题:求任意两顶点间的最短路径 直接将单源最短路算法调用|V|遍 Floyd算法 1.BFS算法求解单源无权图最短路径 1.1算法描述 广度优先搜索,开一个 额外的数组存储每一个结点的访问状态 ,一层一层(取出队首元素,遍历所有相邻且未被访问的结点)的 入队列 ,然后层数++ 这里的额外数组就是dist[w],指的是从源点到顶点w的最短路径长度,初始化为-1,判断未访问即==-1,如果未访问且存在边 G[v][w] 则dist[w] = dist[v] +1 ; path数组用于保存每一个顶点w的前驱顶点v,也即这条最短路径(s->w)必定是从(s->....->v->w),通过栈来逆序输出path[w] 、path[path[w]].... 更加详细的算法示例可以 参考视频 1.2代码实现 #include<iostream> #include<stdlib.h> #include<cstdlib> #include<queue> #include<stack> #define Init -1 #define MaxVertex 100 int path[MaxVertex]; // 存储路径,如果当前顶点v出队列,且存在顶点v->w的路径

leetcode 15三数之和 神仙做法?等再刷刷回头看

此生再无相见时 提交于 2019-12-03 10:51:23
class Solution { public List<List<Integer>> threeSum(int[] nums) { if (nums.length < 3) return Collections.emptyList(); List<List<Integer>> res = new ArrayList<>(); int minValue = Integer.MAX_VALUE; int maxValue = Integer.MIN_VALUE; int negSize = 0, posSize = 0; int zeroSize = 0; for (int v : nums) { if (v < minValue) minValue = v; if (v > maxValue) maxValue = v; if (v > 0) posSize++; else if (v < 0) negSize++; else zeroSize++; } if (zeroSize >= 3) res.add(Arrays.asList(0, 0, 0));//输出 三个 0 的情况 if (negSize == 0 || posSize == 0) return res; //此时minValue一定为负数,maxValue一定为正数 //如果maxValue > -2

hidden symbol &#039;__aeabi_atexit&#039; , is referenced by DSO ./obj../libcufft.so

匿名 (未验证) 提交于 2019-12-03 02:29:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I have posted a qustion "CUDA CUFFT on Shield Tablet", when I followed the suggestions, the errors are gone. But there is a warning called hidden symbol '__aeabi_atexit' , is referenced by DSO ./obj../libcufft.so. I googled it,it seems no good solution about this problem. Could anyone please help me and point me to right direction? Thanks a lot! Here is the content of Android.mk file ' LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := lib_boxfilter LOCAL_SRC_FILES := ../cuda/lib_boxfilter.a include $(PREBUILT_STATIC_LIBRARY)

Scikit Learn SVC decision_function and predict

匿名 (未验证) 提交于 2019-12-03 01:54:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I'm trying to understand the relationship between decision_function and predict, which are instance methods of SVC ( http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html ). So far I've gathered that decision function returns pairwise scores between classes. I was under the impression that predict chooses the class that maximizes its pairwise score, but I tested this out and got different results. Here's the code I was using to try and understand the relationship between the two. First I generated the pairwise score matrix,

POJ 3268 Silver Cow Party

匿名 (未验证) 提交于 2019-12-03 00:36:02
题意:给定顶点个数,边的个数,目的地,求顶点到边的往返最大距离 解题思路:目的地到顶点的是标准的Dijkstra,顶点到目的地的只需要把矩阵转置一下就OKay了 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #define MAXVERTEXNUM 1005 5 #define INF 1000000 6 using namespace std; 7 8 int Nv, Ne, Des; 9 int MGraph[MAXVERTEXNUM][MAXVERTEXNUM]; 10 int dist1[MAXVERTEXNUM], dist2[MAXVERTEXNUM]; 11 12 void Dijkstra() 13 { 14 int collected[MAXVERTEXNUM]; 15 memset(collected, 0 , sizeof (collected)); 16 collected[Des] = 1 ; 17 dist1[Des] = 0 ; 18 19 for ( int i = 1 ; i <= Nv; ++ i) 20 { 21 if (MGraph[Des][i] != INF) 22 dist1[i] = MGraph[Des][i]; 23 else 24