自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 收藏
  • 关注

原创 PTA数据结构与算法题目集(中文)7-38

非递增堆排序:#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<map>using namespace std;int size,m;int a[1000005];void Downlowd(int*pa,int pos,int size){ int p=pos,c=2*p+1; int temp=pa[pos]; wh

2021-02-28 10:10:38 130

原创 PTA数据结构与算法题目集(中文)7-37

排序问题:#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;const int maxn=100005;int n,c;struct stu{ char num[10]; char s[10]; int score;};stu st[maxn];int compare(stu a

2021-02-28 10:08:43 209

原创 PTA数据结构与算法题目集(中文)7-36

Floyd算法求解:#include<stdio.h>#include<stdlib.h>#include<math.h>#define max 50005int e[10005][10005];int d[10005][10005];int n,m,start,dest;int K;int flag=1;void init(){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if

2021-02-28 10:04:31 193

原创 PTA数据结构与算法题目集(中文)7-29

用哈夫曼树求解。#include<iostream>#include<algorithm>#include<cstring>#include<vector>#include<list>#include<iomanip>#include<fstream>using namespace std;template<class T>class Queue {private: list<T&g

2021-02-28 10:01:56 177

原创 PTA数据结构与算法题目集(中文)7-25

题意:找出M个俱乐部中最大朋友圈数量,朋友的朋友也朋友,所以可以采用并查集写此算法。开始自己把题目理解错了,最后看了大神的写法终于明白了。#include <iostream>#include <map>#include <vector>using namespace std;int par[100005];int n;void init(){ for(int i=0;i<=n;i++){ par[i]=i; }}int findPare

2021-02-28 09:59:44 296

原创 PTA数据结构与算法题目集(中文)7-24

map的应用:#include<iostream>#include<algorithm>#include<cmath>#include<map>#include<cstdio>#include<cstring>using namespace std;int main(){ int n; string s; map<string,int>mp; while(cin>>n){ getcha

2021-02-28 09:48:18 155

原创 PTA数据结构与算法题目集(中文)7-18

题意:有两个窗口A,B,题目给出A窗口处理完两个顾客,B窗口处理完一个顾客,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。我们可以给出两个队列q1,q2分别表示A,B窗口,编号为奇数的顾客存放到q1中,为偶数的顾客存放到q2中。#include<iostream>#include<algorithm>#include<queue>#include<cmath>#include<cstring>using namespace

2021-02-28 09:45:44 193

转载 poj1062

题意:很好理解,不多说了题解:求最短路,迪杰斯特拉算法,并且要枚举注意:有等级的限制,因此在初始化vis[]的时候根据等级先把不能交易的先处理:vis[I] = 1;#include <cstdio>#include <cstring>int map[105][105];int cost[105],dist[105],rank[105],vis[105];int max,n;int dijkstra()//迪杰斯特拉算法求最短路{ int i,j;

2021-02-28 09:36:10 316

原创 poj2253

这个题目要求求是青蛙距离,也就是求最小最大距离。#include<iostream>#include<algorithm>#include<cstring>#include<iomanip>#include<cmath>#include<queue>using namespace std;const int maxx=205;const double inf=0x3f3f3f3f;int n;double e[ma

2021-02-28 09:32:14 140

原创 PTA数据结构与算法题目集(中文)7-15

map的应用:#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<map>#include<cstdio>using namespace std;int main(){ map<long long int,string>mp; int n; string s="myQQ@qq.com"; strin

2021-02-28 09:25:23 179

原创 PTA数据结构与算法题目集(中文)7-14

map的应用:#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <map>using namespace std;int n;map<long long int ,int>mapp;int main(){ scanf("%d",&n); int maxx=-1; //记录电话狂人

2021-02-27 13:39:43 156

原创 PTA数据结构与算法题目集(中文)7-13

#include<stdio.h>int main(){ int N,i,j; int number[51]; scanf("%d",&N); for(i=0;i<51;i++) number[i]=0; for(i=0;i<N;i++){ scanf("%d",&j); number[j]++; } for(i=0;i<51;i++) if(number[

2021-02-27 13:38:20 187

原创 PTA数据结构与算法题目集(中文)7-12

堆排序:#include<stdio.h>void PercolateDown(int*pa,int pos,int size){ int p=pos,c=2*p+1; int temp=pa[p]; while(c<size){ if(c+1<size&&pa[c+1]>pa[c]){ c++; } if(temp>=pa[c]){ break; }else{ pa[p]=pa[c]; p=c;

2021-02-27 13:36:49 158

原创 PTA数据结构与算法题目集(中文)7-7

#include<iostream>#include<algorithm>#include<cmath>#include<cstring>#include<list>#define inf 0x3f3f3f3fusing namespace std;int n,m;int start,dest;int e[3305][3305];int d[3305][3305];int dist[1005];int maxn[1005];

2021-02-27 13:35:13 175

原创 PTA数据结构与算法题目集(中文)7-10

#include<stdio.h>#include<stdlib.h>#define max 0x3f3f3f3fint d[1005][1005];int e[1005][1005];int n,m;int start,dest;int cost;int p[1005];void init(){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i==j){ e[i][j]=0;

2021-02-27 13:33:59 128

原创 PTA数据结构与算法题目集(中文)7-1

7-1 最大子列和问题#include<stdio.h>int main(){ int n; int sum=0;; int item; int max=0; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&item); sum+=item; if(sum<0){ sum=0; } if(sum>=max){ max=sum; } } printf("%d

2021-02-27 13:32:49 507

原创 poj1789

题意:一个字符串之间的不同字母数转换为字母之间的距离,即可求解出最小Q。思路:求解出最高质量为1/Q,即Q最下的时候才是最高质量,即采用最小生成树Prim算法。#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;const in

2021-02-27 13:20:01 71

原创 poj2485

题意:要求村庄都连接在一起,并且这个值是最小的。思路:最小生成树Prim算法。#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=505;const int inf=0x3f3f3f3f;int e[maxx][maxx];int n;int vis[maxx];int dist[maxx];int p[maxx];int

2021-02-27 13:13:59 130

原创 poj1258

题意:连接整个农场所需的最小光纤长度之和。思路:采用最小生成树Prim算法。#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=505;const int inf=100000;int e[maxx][maxx];int n;int vis[maxx];int dist[maxx];int p[maxx];int minc

2021-02-27 13:11:27 72

原创 poj3026

Prim求解最小生成树。#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<queue>using namespace std;const int maxx=205;const int inf=0x3f3f3f3f;int n,m;int e[maxx][maxx];int cost[maxx][maxx];int d[m

2021-02-27 13:09:06 160

原创 poj1611

题意:首先给出学生0位嫌疑犯,然后该处几组数据,代表这几个学生之间的关系,判断学生之间嫌疑犯的数量。#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=30005;int pre[maxx];int rank[maxx];int a[maxx];int n,k,m;void init(int n){ for(int i=0;i

2021-02-26 21:09:39 140

原创 poj1703

题意:A-代表查询两个人是否属于同一个帮派;D-代表由你决定两个人属于不同的帮派,通过并查集算法求解#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;const int maxx=1e5+10;;int pre[2*maxx];int rank[2*maxx];int a[2*maxx];int n,m;cha

2021-02-26 21:06:24 149

原创 poj2524

题意:给出几组数据,代表学生之间的宗教信仰是一样的,现在要求出最大的学生宗教信仰数。并查集算法:#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=5e4+10;int pre[maxx];int rank[maxx];int a[maxx];int n,m;int vis[maxx];int ans;struct nod

2021-02-26 21:01:17 135

原创 poj1182

分为三种动物:A,B,C;规则是A->B,B->C,C->A构成食物链。 #include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=9e5+10;int pre[maxx];int rank[maxx];int a[maxx];int n,m;void init(int n){ for(int i=0;i<=

2021-02-26 20:58:13 85

原创 HDU1213

题意:认识的人可以待在一张卓子上,不认识的人得在另一张卓子上。并查集算法:#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx = 1e3 + 10;int pre[maxx];int ranks[maxx];int a[maxx];int n, m;int table;void init(int n) { for (int

2021-02-26 20:57:22 128

原创 HDU1232

题意:认识的人可以待在一张卓子上,不认识的人得在另一张卓子上。并查集算法:#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx = 1e3 + 10;int pre[maxx];int ranks[maxx];int a[maxx];int n, m;int table;void init(int n) { for (int

2021-02-26 20:54:19 158

原创 HDU1272

采用并查集求解Kruskal算法:#include<iostream>#include<algorithm>#include<cstring>#include<set>using namespace std;const int maxx = 1e5 + 10;int pre[maxx];int ranks[maxx];int a[maxx];int vis[maxx];int n, m;int flag;struct node {

2021-02-26 20:45:29 154

原创 poj2513

这是在看了大神之后敲出来的 #include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=2e6+55000;char s[maxx],s1[maxx];int cnt;int pre[maxx];int rank[maxx];int a[maxx];int vis[maxx];int indegree[maxx];void ini

2021-02-26 20:41:08 153

原创 poj3624

纯背包问题:找到最大的价值。方法一(Accept) #include<iostream>#include<algorithm>#include<cstring>using namespace std;int w[3403];int val[3403];int c[12881];int main(){ int n,m; while(cin>>n>>m){ memset(w,0,sizeof(w)); memset(val

2021-02-26 20:39:14 225

原创 poj1014

题意:背包问题,转换为二进制方法求解:#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;int W,n;int w[7],v[7];int value[2005];int dp[200005];int num[7];struct node{ int value; int cnt;}p[205];int

2021-02-26 20:36:09 198

原创 poj1276

题意:其实就是一个背包问题,我采用的是转换为二进制方法求解:#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=1e5+10;int val[maxx];int w[maxx];int v[maxx];int dp[maxx];int n,sum;int main(){ while(cin>>sum>&gt

2021-02-25 09:33:50 166

原创 poj2184

题意:就是保证TS和TF之和最大的同时,TS,TF要都要大于零。dfs超时。此代码超时:#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=1e3+10;int dp[maxx];int n;int cnt;int vis[maxx];struct node{ int x,y;}num[maxx];int cmp(nod

2021-02-25 09:29:07 121

原创 poj3176

动态规划dp;方法一(超时): #include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=500;int d[maxx][maxx];int a[maxx][maxx];int n,m;int dfs(int x,int y){ if(d[x][y]==0){ d[x][y]=a[x][y]+max(dfs(x+1,y),dfs

2021-02-25 09:19:19 133

原创 poj1936

匹配子串:#include<iostream>#include<algorithm>#include<cstring>const long maxn=1e5+5;const int minx=-99999999;using namespace std;char X[maxn],Y[maxn];long n,m;int c[510][510];int main(){ while(cin>>X>>Y){ long n=strl

2021-02-25 09:15:58 141

原创 poj1159

这道题是在看了网上大神的思路自后才想起来的:求最长公共子序列的长度,就是将原串和反串求解最长公共子序列长度c[temp][n]之后,n-c[temp][n],则为要求的值。#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxx=5010;char a[maxx],b[maxx];int c[5][maxx];int main(){

2021-02-24 00:20:36 95

原创 poj2031

题意:一行中是球心的坐标和球的半径:就是将球之间链接起来,找到最短的距离,可以采用Dijstra算法求解。但是在求解两个球心之间的距离时,如果球心的距离小于两个球半径之和,则视为零。#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<iomanip>using namespace std;const int maxx=1e2+10;

2021-02-24 00:16:42 155

原创 HDU2036

求多边形的面积(模版):#include<iostream>#include<algorithm>#include<cmath>#include<iomanip>using namespace std;const int maxx=105;int n;struct node{ double x,y;}num[maxx];double Area(node*p,int n){ double sum=0; if(n<3)return

2021-02-24 00:11:11 65

原创 HDU2034(set的应用)

就是用A集合减去B集合,A-B等于属于A集合但不属于B集合:#include<iostream>#include<algorithm>#include<cstring>#include<set>using namespace std;const int maxx=105;int n,m;int main(){ while(cin>>n>>m){ set<int>st; if(n==0&&am

2021-02-24 00:10:07 140

原创 HDU2037(会场安排)

#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int maxx=105;int n;struct node{ int stime,etime;}num[maxx];int cmp(node a,node b){ if(a.etime==b.etime){ return a.stime<b.stime; } return a.e

2021-02-24 00:06:04 119

原创 poj1654

方法一(超出内存限制)#include<iostream>#include<algorithm>#include<cmath>#include<cstring>using namespace std;typedef long long ll;const int maxx=1e3+5;int n;struct node{ double x,y;}num[maxx];double Area(node*p,int n){ if(n<3

2021-02-24 00:04:45 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除