2 华zyh

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 21w+

Dijkstra+DFS模板(PAT1030 Travel Plan (30分))

#include<iostream>#include<vector>#include<algorithm>using namespace std;const int INF = 10000000;int dis[501][501];int cost[501][501];int dest[501];bool visited[501] = {false};vector<int> paths[501];int N,M,S,T; void

2020-07-03 23:19:37

Java中的clone简单探索总结,深拷贝与浅拷贝

package test;import java.util.Iterator;import java.util.Vector;class AA implements Cloneable{//如果不实现这个接口,即使覆盖了clone,编译无措,运行抛异常 int a; BB d = new BB(2021); AA(int a){ this.a = a; } @Override protected Object clone() throws CloneNotSupportedExce

2020-07-03 21:32:08

C++类的对象成员不可以显式初始化[Error] expected identifier before string constant

#include<string>#include<iostream>using namespace std;class B{ public: B(int a){} B(){}};class A{ public: int i = 2020; const int ci = 2020; //基本数据类型可以 static int si; //初始化只能在类外 //static int si = 2021; //[Error] ISO C+

2020-07-03 21:05:45

C++字符串的输入和用getline输入遇到的问题

C++中的字符串读入我们通常是用 cin>>str; 它只要碰到空格或者换行符就意味着本字符串读取结束,且不会读取空格和换行符(相当于丢掉)。而getline函数读取一行,可以读入空格,遇到换行符结束(从输入流中丢掉该换行符)。但是,注意一点就是:如果只读入了一个换行符(敲了回车),这个换行符虽然不会被读入,但是它会被当作结束符,这个时候什么也没有读入。举例:#include<string>#include<iostream>using namespace st

2020-07-01 18:38:59

dijskra最短路径模板(结合优先队列)

struct node{ int from,to; int time; node(int a, int b, int c): from(a),to(b),time(c){ }};int N,M,SP,CMAX;vector<node> edge[501];int dist[501] = {0},bike[501];int path[501];bool visited[501] = {false};struct comp{bool operator() (const pai

2020-07-01 15:12:35

整数划分问题和集合划分问题的区别

整数划分#include <iostream>using namespace std;int f(int n,int m){ if(n==0 || m==1) return 1; if(n<m) return f(n,n); else return f(n,m-1) + f(n-m,m);}int main(){ ios::sync_with_stdio(0); int num;

2020-06-30 22:15:18

浅析C++强制类型转换运算符的重载,解释while输入流能够判断文件结束的原因

我们在C++中,读取文件时经常这样写假设文件中全是一系列整数int i;while(cin>>i){ ......}这个时候爱动脑筋的你不免有这样的疑惑,在标准C++中重载的>>右移运算符不是应该返回输入流的引用嘛,像下面这样:#include<iostream>using namespace std;class A{ public: int v1,v2; A(int x, int y):v1(x),v2(y){} operator

2020-06-16 22:23:47

Java的上转型对象调用的非覆盖函数(非覆盖函数内部调用了覆盖函数)

package test;public class test_default_equals { int val; public static void main(String[] args) { // TODO Auto-generated method stub //A a = new A() String str1="zyh"; A a = new A(100); A b = new A(100); if(a.equals(b)) System.out.print

2020-06-15 21:53:16

kruskal算法基于并查集的实现

#include<iostream>#include<algorithm>#include<set>#include<vector>using namespace std;/*并查集*/ struct UF{ UF * parent; UF():parent(NULL){ }};UF* find(UF* c){ if(c->parent == NULL) return c; set<UF*> s; w

2020-06-14 13:52:06

基于类的并查集

/*===并查集===*/class Node {public: Node *parent; Node() : parent(NULL) {}};Node *find(Node *x) { Node *p = x; if (p->parent == NULL)return p; set<Node *> path; while (p->parent != NULL) { path.insert(p);

2020-06-13 21:17:06

为什么非静态实名内部类不能有静态方法且静态域必须是final

首先,我们要先知道下面两点:非静态实名内部类可以访问所在外部类的非静态成员及方法;静态实名内部类不可以访问所在外部类的非静态成员及方法;非静态实名内部类依赖于外部类所创建的对象而存在,为什么非静态实名内部类不能有静态方法且静态域必须是final?原因就在于它能访问外部类的非静态成员和方法。这些非静态成员和方法是属于外部类的实例对象,既然非静态实名内部类有这么大的能耐,假如能够在它内部定义静态方法,那这些静态方法自然能够访问到外部类的非静态成员与方法,但是这些非静态成员与方法是属于外部类的实例对

2020-06-03 16:59:16

Java覆盖机制探析,动态绑定机制探析

public class InheritTest { private int prvalue = 100; public int puvalue = 100; private void method1() { System.out.println("父类的私有方法"); } public void method2() { System.out.println("父类的公有方法"); } public static void main(String[] args) { // TO.

2020-05-21 15:10:17

C++构造函数析构函数拷贝赋值构造函数拷贝赋值运算符样例分析

练习13.13:理解拷贝控制成员和构造函数的一个好方法是定义一个简单的类,为该类定义这些成员,每个成员都打印出自己的名字:struct X{X() { std::cout << “X()” << std::endl; }X( const X& ) { std::cout << “X( const X&)” << std::end...

2020-05-04 21:27:41

差分数组总结

前缀和: 可以在常数时间内求出区段和,常用于为了提高算法效率做预处理,但是修改元素平均时间复杂度为线性的。差分数组: 可以在常数时间内修改一段一段区间的和,但是查询一段区间和的时间复杂度是线性的,要先做前缀和处理,在与原数组相加,得出若干变化后的数组。...

2020-05-04 16:08:46

线段树以及树状数组模板( 智乃与无意义的题目 西北工业大学程序挑战赛)

线段树与树状数组是什么?线段树与树状数组都是用来解决数组的更新和区间查询问题,比如说一段数组a[n], 现在要求下标 [i,j] 区间的和,如果按照传统的遍历,则时间复杂度就是线性的,如果我们组织成树状结构,那么复杂度就可以降为log级别。相比较而言,线段树更好理解但代码量较大,树状数组代码量小但不好理解。 我总结了这两个模板,如果需要的话,直接使用这两个模板就可以,线段树我封装成了一个模...

2020-05-04 15:42:08

树状数组精巧使用模板(快速更新,快速查找)

int n;int a[1005],c[1005]; //对应原数组和树状数组int lowbit(int x){ return x&(-x);}void updata(int i,int k){ //在i位置加上k while(i <= n){ c[i] += k; i += lowbit(i); }}...

2020-05-03 21:57:46

快速幂通解以及矩阵快速幂通解

求一个数的n次方,如果是累计遍历,那么就是线性级别的复杂度,在这个过程实际上我们做了很多重复运算,比如求3^6 我们完全可以先求出来3^3 ,然后再对 3^3 平方得出解,这样我们就可以通过二分分治的方法将复杂度降到 log n。对于一个矩阵的n次幂同样如此,通过分治的方法,减少运算量。如果采用二分分治的方法,那么这是一个递归的方法,我们考虑能不能转化为非递归做法,这里用到了一些技巧,如下:...

2020-04-27 18:14:29

2018蓝桥杯倍数问题C++快速解法

标题:倍数问题【题目描述】众所周知,小葱同学擅长计算,尤其擅长计算一个数是否是另外一个数的倍数。但小葱只擅长两个数的情况,当有很多个数之后就会比较苦恼。现在小葱给了你 n 个数,希望你从这 n 个数中找到三个数,使得这三个数的和是 K 的倍数,且这个和最大。数据保证一定有解。【输入格式】从标准输入读入数据。第一行包括 2 个正整数 n, K。第二行 n 个正整数,代表给定的 n 个...

2020-04-27 13:49:29

C++的map(映射对象为自定义数据类型)在使用[ ]时遇到的问题

struct node{ int x,y; node(int a, int b): x(a),y(b){ } node(): x(0),y(0){ }};map<int,node> s;映射对象为一个类,这时如果不写默认构造函数,那么在使用下标运算符时会编译报错,原因是map在不存在这样的键时,要自动创建此对象,如果没有默认构造函数,那么它不知道如何创建。**注意...

2020-04-25 11:23:56

C++的const类型的引用问题

int ac = 10; int &ay = ac; const int &acy = ac; const int acc = 10; const int &acy1 = acy;//正确 int &acy2 = acc;//编译错误,被引用的类型是const,那么引用类型也必须是const上面的例子也解释了,在set或者map模板参数是自定义类...

2020-04-22 13:47:47

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。