
dfs
blue_sister
这个作者很懒,什么都没留下…
展开
-
1103 Integer Factorization (30 分)
1.dfs2.剪枝#include <bits/stdc++.h>using namespace std;int n,k,p;vector<int > v,ans,tpans;int maxn=-1;void inits(){ int tp=0,index=1; while(tp<=n){ v.push_back(tp); tp =(int)pow(index,p); index++; }原创 2021-04-17 22:44:52 · 70 阅读 · 0 评论 -
1087 All Roads Lead to Rome (30 分)
1.djkstra2.记录全部路径+dfs3.维护点权4.注意方法二路径的维护迭代#include<bits/stdc++.h>using namespace std;const int inf = 0x3f3f3f3f;int grape[205][205];//存边权bool vis[205];int cost[205];//存花费,即最短路int happy[205];//点权map<string,int > stoid;map<int ,stri原创 2021-04-07 20:17:12 · 170 阅读 · 0 评论 -
1079 Total Sales of Supply Chain (25 分)
1.dfs2.dfs记录深度#include<bits/stdc++.h>using namespace std;//存储关系网 vector<vector<int > > tree;//存储根节点对应的权值(零售商所买的物品数) map<int ,int > mp;int n;double p,k,sum=0.0;void dfs(int id,int step){ if(tree[id].size()==0){原创 2021-03-31 20:33:42 · 61 阅读 · 0 评论 -
1056 Mice and Rice (25 分)
传送门dfs+模拟回溯:维护rank按权值排序STL:a.insert(a.end(),b.begin(),b.end()); 将一个容器拼接到另一容器尾部#include<bits/stdc++.h>using namespace std;int n ,m,ranks=0;vector<int > ans, weight,indexs;bool cmp(int a,int b){ return weight[a] < weight[b];}//原创 2021-03-23 23:47:06 · 80 阅读 · 0 评论 -
传统的延续————浙江农林大学第二十届程序设计竞赛暨团体程序设计天梯赛选拔赛(同步赛)
传送门题目描述题目背景 在一个神秘的古老国度有着这样的一个传统,如果一个城市曾向另一个城市宣誓,那么这个城市的最高建筑不得高于效忠的城市,一个城市最多只会宣誓一次。 特别的如果城市A曾向B宣誓,B城市曾向C城市宣誓,那么我们会认为城市A也会向城市C效忠。 由于国家的快速发展,不断有新的城市出现,也就不断有新的效忠关系出现,关系实在是错综复杂。 所以现在请你写一个程序来判断有多少个城市对之间的关系任然是合法的。 一对城市的关系被看作是合法的当且仅当城市之间存在效忠关系,且附属原创 2021-03-21 21:09:23 · 280 阅读 · 0 评论 -
1053 Path of Equal Weight (30 分)
传送门1.树的遍历2.dfs3.按权值排序#include<bits/stdc++.h>using namespace std;vector<vector < int > > tree,ans;vector<int > weight,tpans;vector<bool > vis; int n,m;long long val;bool cmp(int a,int b){//为保证输出是按路径权值降序的 return原创 2021-03-20 21:01:00 · 96 阅读 · 0 评论 -
1034 Head of a Gang (30 分)
题目地址1.hash2.并查集3.父节点的维护4.连通块的计算ac代码#include<bits/stdc++.h>using namespace std;//离线存储数据struct Data{ int id1,id2; int val;}data[20000];//存储每个集合的的数据struct node{ int id = 20000; //父节点 int people; //统计该集合节点数 int val;原创 2021-03-15 21:04:23 · 99 阅读 · 0 评论 -
1021 Deepest Root (25 分) dfs + 连通块的计算 + 邻接表
题目地址1:图的dfs遍历2:图中维护最大高度3:邻接矩阵4:图中连通块的计算#include<bits/stdc++.h>using namespace std;vector<vector<int > > grape;bool vis[10005];int maxheight = 0,n;vector<int > temp;set<int > s;void dfs(int u,int height){ if(he原创 2021-03-08 09:33:25 · 62 阅读 · 0 评论 -
Fliptile POJ - 3279
给你一个01矩阵,矩阵大小为M x N。(1 <= M , N <= 15)每次操作选择一个格子,使得该格子与上下左右四个格子的值翻转。至少多少次操作可以使得矩阵中所有的值变为0?请输出翻转方案,若没有方案,输出"IMPOSSIBLE” 。若有多种方案符合题意,请首先输出翻转次数最少的方案;若方案个数仍不唯一,则输出字典序最小的方案。Input第一行输入两个数:M和N。(1 <= M , N <= 15)接下来M行,每行N个数,其值只为0或1。Output输出M行,每行原创 2020-12-13 14:58:30 · 99 阅读 · 0 评论 -
棋盘问题POJ - 1321
题意:给定两个数n,k。分别表示棋盘的大小(可能不规则)和要放的棋子,要求棋盘的每行每列仅能放一个棋子,求每个样例摆放的可能性。多组样例输入。输入:对于每个样例有n行n列#表示可以放棋子.表示不能放k==-1&&n==-1时结束输入。Sampe Input2 1#..#4 4…#…#..#…#…-1 -1Sample Output21思路:一般想找规律,发现找不到~~典型的dfs题注意回溯的写法ac代码#include<bits/stdc++原创 2020-12-11 23:04:38 · 156 阅读 · 0 评论