数据结构题
文章平均质量分 51
skajre
这个作者很懒,什么都没留下…
展开
-
uva 679 Dropping Balls
思维方式值得学习。#include#includeusing namespace std;int main(){ int t; while(scanf("%d",&t)&&t!=-1) { while(t--) { int D,I; while(scanf("%d%d",&D,&I)原创 2016-05-24 19:07:43 · 190 阅读 · 0 评论 -
UVA 11136 Hoax or what(multiset)
set实质上是颗BST。#include#include#include#include#includeusing namespace std;multiset s;multiset::iterator it;#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define ss(x) scanf("%d",&x)int main(){原创 2016-11-01 19:45:30 · 181 阅读 · 0 评论 -
uva 11988 Broken Keyboard (a.k.a. Beiju Text)
以前看这题看不懂,现在终于自己写出来了。。。#include#include#includeconst int MAXN=100000+10;char s[MAXN];int last,cur,next[MAXN];int main(){ while(scanf("%s",s+1)==1) { last=cur=0; next[0]原创 2016-05-23 22:00:41 · 198 阅读 · 0 评论 -
uva 816 Abbott's Revenge
#include#include#include#include#includeusing namespace std;struct Node{ int r,c,dir; Node(int r=0,int c=0,int dir=0): r(r),c(c),dir(dir) {};};const int maxn=100;const char *dirs="NES原创 2016-05-26 09:22:05 · 231 阅读 · 0 评论 -
uva 572 Oil Deposits
#include#include#includeusing namespace std;const int maxn=100+5;char pic[maxn][maxn];int buf[maxn][maxn];int m,n;void dfs(int r,int c,int id){ if(r=m||c=n) return ; if(pic[r][c]!='@'原创 2016-05-25 19:45:42 · 181 阅读 · 0 评论 -
uva 297 Quadtrees
本题关键点在于每一个黑色格子占一个像素,像题目里的图一个黑色格子由64个黑色像素组成,所以数组中有,64个1。#include#include#includeusing namespace std;const int len=32;const int maxn=1024+10;char s[maxn];int buf[len][len];int cnt=0;void draw原创 2016-05-25 19:24:18 · 191 阅读 · 0 评论 -
uva 699 The Falling Leaves
#include#include#includeusing namespace std;const int MAXN=1000+10;int sum[MAXN];void build(int p){ int v; scanf("%d",&v); if(v==-1) return ; sum[p]+=v; build(p-1); buil原创 2016-05-25 18:37:20 · 181 阅读 · 0 评论 -
uva 839 Not so Mobile
#include#includeusing namespace std;bool solve(int &W){ int w1,d1,w2,d2; bool b1=true,b2=true; scanf("%d%d%d%d",&w1,&d1,&w2,&d2); if(!w1) b1=solve(w1); if(!w2) b2=solve(w2);原创 2016-05-25 09:34:23 · 244 阅读 · 0 评论 -
uva 548 Tree
#include#include#includeusing namespace std;const int maxv=10000+10;int in_order[maxv],post_order[maxv],lch[maxv],rch[maxv];int n;bool read_list(int *a){ string line; if(!getline(cin,l原创 2016-05-25 08:44:34 · 187 阅读 · 0 评论 -
uva 122 Trees on the level
#include#include#include#include#includeconst int MAXN=256+10;using namespace std;struct Node{ bool have_value; int v; Node *left,*right; Node():have_value(false),left(NULL),rig原创 2016-05-24 21:15:30 · 198 阅读 · 0 评论 -
最小生成树Kruskal算法+并查集实现
今天刚掌握Kruskal算法,写下随笔。对于稀疏图来说,用Kruskal写最小生成树效率更好,加上并查集,可对其进行优化。Kruskal算法的步骤:1.对所有边进行从小到大的排序。2.每次选一条边(最小的边),如果如果形成环,就不加入(u,v)中,否则加入。那么加入的(u,v)一定是最佳的。并查集:我们可以把每个连通分量看成一个集合,该集合包含了连通分量原创 2016-05-07 21:48:34 · 810 阅读 · 1 评论