- 浏览: 508915 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jkxydp:
算法运行的结果根本就不对。
BM算法. -
soarwindzhang:
感谢博主的分享,我今天看了您的UFSET非递归的路径压缩时感觉 ...
并查集 -
zhangning290:
楼主好像只考虑了坏字符规则,。没有考虑好后缀
BM算法. -
lsm0622:
文字描述有错误 误导新学者
求有向图的强连通分量(scc):Tarjan算法 -
knightchen:
博主,你太强了!这篇文章对我学习C++多线程很有帮助!谢谢
并发学习之一_windows下ZThread在CodeBlocks上的安装与配置
1,题意:
给定一个整数序列1到n.
给m个连边的命令(s,e):表示:第s个到第e个之间的最大和最小数连起来.
k个询问:(x,y)点x和y是否连通.
2,解题思路:
(1)RMQ问题,求出s和e
(2)并查集:Union(s,e)
(3)结果:Find_Set(x)==Find_Set(y)?
3,严重超时??????
给定一个整数序列1到n.
给m个连边的命令(s,e):表示:第s个到第e个之间的最大和最小数连起来.
k个询问:(x,y)点x和y是否连通.
2,解题思路:
(1)RMQ问题,求出s和e
(2)并查集:Union(s,e)
(3)结果:Find_Set(x)==Find_Set(y)?
3,严重超时??????
#include <iostream> #include <cstdio> #include<cmath> #include<algorithm> #include<cstring> using namespace std; #define VMAX 101100 //节点个数 int father[VMAX]; //father[x]:元素x的父节点 int rank[VMAX]; //rank[x]:x元素的秩 int input[VMAX]; //输入的序列 //并查集的相关操作 //初始化操作 void Make_Set(int x) { father[x]=x; rank[x]=0; } //递归实现 int Find_Set_R(int x) { if(x!=father[x]) //通过回溯,完成路径压缩 father[x]=Find_Set_R(father[x]); return father[x]; } //非递归实现 int Find_Set(int x) { int r=x; while(r!=father[r]) r=father[r]; //路径压缩:把x上面的所有节点的父节点都指向祖先节点 int temp; while(x!=r) { temp=father[x]; father[temp]=r; x=temp; } return r; } void Union(int x,int y) { x=Find_Set(x); y=Find_Set(y); if( rank[x]>rank[y]) //通常将元素少的集合合并到元素多的集合 father[y]=x; else father[x]=y; if( rank[x]==rank[y] ) rank[y]++; } //RMQ的相关操作 int dpmax[VMAX][20]; int getmax(int a,int b) { return a>b? a:b; } void make_max_rmq(int n,int b[]) { memset(dpmax, 0, sizeof(dpmax)); int i,j; for(i=0;i<n;i++) dpmax[i][0]=b[i]; for(j=1;(1<<j)<=n;j++) for(i=0;i+(1<<j)-1<n;i++) dpmax[i][j]=getmax(dpmax[i][j-1],dpmax[i+(1<<(j-1))][j-1]); } int get_max_rmq(int s,int v) { int k=(int)(log((v-s+1)*1.0)/log(2.0)); return getmax(dpmax[s][k],dpmax[v-(1<<k)+1][k]); } int dpmin[VMAX][20]; int getmin(int a,int b) { return a<b? a:b; } void make_min_rmq(int n,int b[]) { memset(dpmin, 0, sizeof(dpmin)); int i,j; for(i=0;i<n;i++) dpmin[i][0]=b[i]; for(j=1;(1<<j)<=n;j++) for(i=0;i+(1<<j)-1<n;i++) dpmin[i][j]=getmin(dpmin[i][j-1],dpmin[i+(1<<(j-1))][j-1]); } int get_min_rmq(int s,int v) { int k=(int)(log((v-s+1)*1.0)/log(2.0)); return getmin(dpmin[s][k],dpmin[v-(1<<k)+1][k]); } int main() { int n; //顶点个数 int c=0; //测试次数 int m;//边数 int u,v;//边的两个端点 int k; //询问次数 freopen("5.8.in","r",stdin); while (cin>>n) { if (c != 0) cout<<endl; c++; cout << "CASE " << c << endl; for(int i = 0; i < n; i++) { cin >> input[i];//输入序列 input[i]--; //换成0到n-1; Make_Set(input[i]); //并查集初始化 } cin >> m; make_min_rmq(n,input); make_max_rmq(n,input); for(int i = 0; i < m; i++) { cin >> u >> v; u--,v--; u = get_min_rmq(u, v); v = get_max_rmq(u, v); Union(u,v); } cin >> k; for (int i = 0; i < k; i++) { cin >> u >> v; u--,v--; //if(Find_Set(u)==Find_Set(v)) if (Find_Set_R(u) == Find_Set_R(v)) cout << "YES" << endl; else cout << "NO" << endl; } } }
- 5.8.rar (2.3 MB)
- 下载次数: 1
发表评论
-
称球问题
2010-12-16 14:13 1264[节选]http://mindhacks.cn/2008/06 ... -
平均要取到第几个随机数才会让序列第一次下降
2010-12-15 12:05 1284[转载]http://www.matrix67.com/blo ... -
输出一个数列的逆序数
2010-12-10 20:39 26781,这个问题算法导论讲归并排序时,提到过。 找到一个实现代码, ... -
给出前序和中序序列,输出后序序列
2010-12-10 11:46 15121,给出一个实现代码: #include <stdi ... -
输入是一个n*m的矩阵,要求找到其中最大的全0字矩阵
2010-11-25 12:16 15201,分析: 这个题其实就是最大子矩阵,只不过把0的权设为1,其 ... -
一些常见的海量数据处理题目
2010-11-25 11:23 1592很长时间没有更新blog了,先唠叨两句. 这段时间发生了几件不 ... -
不限数目的1、5、10、20、50面额的纸币,有多少种方法凑出100元
2010-09-21 17:22 20091,有不限数目的1、5、10、20、50面额的纸币,有多少种方 ... -
输出1到最大的N位数
2010-09-01 14:23 13231,题意: 输入数字n,按顺序输出从1最大的n位10进制数。比 ... -
找出数组中两个只出现一次的数字
2010-08-26 13:13 18451,题意: 一个整型数组里除了两个数字之外,其他的数字都出现了 ... -
字符串的逆序
2010-08-26 11:23 8211,老题目了,给个自己的版本. #include < ... -
寻找丑数
2010-08-26 10:57 31121,题意: 把只包含质因子2、3和5的数称作丑数(Ugly N ... -
寻找连续序列,使其和等于n
2010-08-26 10:15 11741,分析: 首尾两个游标. 如果当前sum < n, 尾 ... -
n个筛子的和出项的次数
2010-08-25 15:47 8361, 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S ... -
从文件中随即提取一个字符串
2010-05-12 12:54 763算法思路: 读入第一个:概率1保留。 读入第二个:1/2保留上 ... -
编写一些代码,确定一个变量是有符号数还是无符号数。
2010-05-12 12:53 9391,参数是一个值: #define ISUNSIGNED(va ... -
寻找移位有序数组的转折点
2010-05-09 00:22 14331,题意: 原来一个有序数组,分成前后两部分并将两部分交换得到 ... -
递归返回最大值
2010-05-06 19:20 7971,实例代码: #include<iostream& ... -
设定哨兵,返回最大值
2010-05-06 19:16 10231,精炼的代码总是那么迷人. 实例代码: #include ... -
最长平台
2010-05-06 19:01 9821,已知一个已经从小到大排序的数组,这个数组中的一个平台(Pl ... -
返回'+','-'表达式的计算结果
2010-05-04 17:07 7391,实例代码: #include <iostream ...
相关推荐
《国际大学生程序设计竞赛例题解.三:图论、动态规划算法、综合题专集》是一本专门针对编程竞赛中的重要算法与问题解决策略的书籍。它涵盖了图论、动态规划以及综合题型,这些都是在竞赛中经常遇到并且至关重要的...
本系列丛书包括《ACM国际大学生程序设计竞赛:知识与入门》、《ACM国际大学生程序设计竞赛:算法与实现》、《ACM国际大学生程序设计竞赛:题目与解读》、《ACM国际大学生程序设计竞赛:比赛与思考》等4册,其中《ACM...
国际大学生程序设计竞赛例题解(六) 广东省大学生程序设计竞赛例题解析
### 国际大学生程序设计竞赛教程知识点概览 #### 一、国际大学生程序设计竞赛(ACM/ICPC)概述 - **主办单位**: ACM/ICPC由国际计算机学会(Association for Computer Machinery, ACM)主办,该学会是全球历史最...
第二本:国际大学生程序设计竞赛例题解 2 广东省大学生程序设计竞赛试题 2003-2005年 第三本:国际大学生程序设计竞赛例题解 3 图论·动态规划算法·综合题专集 第四本:国际大学生程序设计竞赛例题解 4 广东省...
此资源压缩包分为两卷,此卷为part1。 《ACM国际大学生程序设计竞赛:题目与解读》讲述了ACM国际大学生程序设计竞赛(ACM—...《ACM国际大学生程序设计竞赛:题目与解读》为各类算法配备经典例题及题库,并提供解题思路。
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
《国际大学生程序设计竞赛例题解》是针对ACM(国际大学生程序设计竞赛)和信息学竞赛精心编纂的一份参考资料,尤其适用于广东省大学生程序设计竞赛的参赛者。该资源包含了一系列精选的竞赛题目,旨在帮助参赛者提升...
这个压缩包“国际大学生程序设计竞赛例题解二”显然是一个关于该竞赛的解题集,包含了解决过去竞赛题目的一些策略和方法。 在ICPC中,参赛队伍需要解决一系列复杂的算法问题,在限时内提交正确答案。这些题目通常...
- **国际大学生程序设计竞赛例题解系列**(郭嵩山):提供多种题型的解决方案,帮助学生拓宽解题思路。 - 在线编程平台如ZJU Online Judge、POJ、Codeforces等,提供了丰富的题库供学生练习。 #### 五、训练规范与...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
可以看出《国际大学生程序设计竞赛辅导教程》是一本内容丰富、实用性极强的教材,不仅能够帮助读者系统掌握各种算法知识,还能通过大量的实战案例学习到解决问题的具体方法,对于准备参加国际大学生程序设计竞赛的...
算法参考资料国际大学生程序设计竞赛例题解数论、计算几何、搜索算法专集
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
国际大学生程序设计竞赛(ICPC,International Collegiate Programming Contest)是一项全球性的计算机编程竞赛,旨在提升大学生的算法设计和问题解决能力。本压缩包“国际大学生程序设计竞赛例题解”包含了图论、...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
国际大学生程序设计竞赛(ICPC,International Collegiate Programming Contest)是一项全球性的计算机编程赛事,旨在提升大学生的算法设计、问题解决以及团队合作能力。本压缩包“竞赛例题解(六)光盘”包含了该赛事...
2005年》一书,主要为那些准备参加国际大学生程序设计竞赛(ICPC)以及广东省大学生程序设计竞赛的读者提供了过去竞赛中的一些例题以及解题方法。书中不仅包括了国际赛题,还特别针对广东省的比赛提供了解题资源,...