SDUT-2138_判断可达性】的更多相关文章

数据结构实验之图论三:判断可达性 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 在古老的魔兽传说中,有两个军团,一个叫天灾,一个叫近卫.在他们所在的地域,有n个隘口,编号为1..n,某些隘口之间是有通道连接的.其中近卫军团在1号隘口,天灾军团在n号隘口.某一天,天灾军团的领袖巫妖王决定派兵攻打近卫军团,天灾军团的部队如此庞大,甚至可以填江过河.但是巫妖王不想付出不必要的代价,他想知道在不修建任何通道的前提下,部队是…
#include <bits/stdc++.h> using namespace std; int gra[1002][1005]; int vis[1002]; int n,m; void dfs(int x) { vis[x] = 1; for(int i = 1; i <= n ; i ++) { if(gra[x][i] == 1 && !vis[i]) { dfs(i); } } } int main() { while(~scanf("%d%d&qu…
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2138 注意该图为有向图,1000个点应该最多有1000*999条边.在这跪了一下... #include<stdio.h> #include<string.h> #include<queue> using namespace std; ; int head[maxn],vis[maxn]; int n,m,cnt; s…
Gc如何判断对象可以被回收? 1 引用计数器 引用计数法的算法思路:给对象增加一个引用计数器,每当对象增加一个引用计数器+1,失去一个引用-1,所以当计数器是0的时候对象就没有引用了,就会被认为可回收垃圾 引用计数法,可能会出现A引用了B,B又引用了A,这时候就算他们都不再使用了,但因为他们相互引用,计数器=1,永远无法被回收,这是这种方法很大的劣势,但效率较高 在主流的JVM中没有选用引用计数法来管理内存(比如java),最主要的原因是引用计数法无法解决对象的循环引用问题. 在主流的JVM中没…
2016-05-31 22:01:16 题目链接: 砝码称重2 (Codevs No.2144) 题目大意: 给定N个砝码,求称出M的重量所需砝码最小个数 解法: 贪心 使砝码数量最小,当然是每个砝码越大越好 首先排序,从大砝码开始试,遇到的第一个解一定最优 需要注意的地方: 1.这道题的数据还是很给力的,裸贪心过不了,要加一个前缀和判断可达性进行优化 //砝码称重2 (Codevs No.2144) //贪心 #include<stdio.h> #include<algorithm&g…
我觉得他整理的有一些乱,我都改成插入代码了,看的顺眼一些 转载自http://blog.csdn.net/juststeps/article/details/8772755 下面的都是原文: 最短路径 之 SPFA算法 http://hi.baidu.com/southhill/item/ab26a342590a5aae60d7b967 求最短路径的算法有许多种,除了排序外,恐怕是OI界中解决同一类问题算法最多的了.最熟悉的无疑是Dijkstra,接着是Bellman-Ford,它们都可以求出由…
解法见网上参考 这种只判断可达性的DP一般用bool 除非int能得到更多的信息 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<string> #include<vector> #include<stack> #i…
f[i][j]表示第i首歌音量为j是否可能.若是将状态之间建边,那么答案就是max(j){f[i][j]==true&&0<=j<=limit}.于是就是图中dfs一遍判断可达性.(<--vis数组也叫记忆化?) #include<cstdio> using namespace std; ][],w[],limit,sta; void dfs(int cur,int now) { if(cur>n) return; vis[cur][now]=; ]&l…
1.内存管理模型 ①以对象的方式管理内存,每个对象占据内存中连续的一段,分配在堆中.对象引用可以指向堆中的其他对象.非基本数据类型的对象等价于数据引用. ②基于栈和堆的内存管理都是动态分配,即在运行时动态分配内存,建立新的内存对象.而静态内存分配在编译阶段就已经确定好了内存分配. ③每个线程都有其线程栈,各自管理,彼此之间不可见.多线程之间传递数据,通过复制而非引用.栈无法支持复杂的数据类型.所有的局部的基本数据类型都在栈上创建. ④本地方法栈.PC ⑤Method Area(hotspot中称…
题意:给你n个木棍(n<=40)每个木棍长度<=40,问用上所有的木棍拼成的三角形的面积的最大值,并输出面积*100的值(不四舍五入) 如果没有解,输出-1. 思路: 背包判断可达性. f[j][k]表示能拼成一个长度为j的边,一个长度为k的边. 所以 if(f[j][k]&&j+a[i]<=800&&k+a[i]<=800) f[j+a[i]][k]=f[j][k+a[i]]=1; 因为三角形的周长是一定的,可以求出剩下那条边的长度. 用余弦定理可…