acm
文章平均质量分 69
francis_zhaogf
淡定
展开
-
杭电acm 题目分类
基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、1194、1原创 2016-03-17 10:37:14 · 303 阅读 · 0 评论 -
hdu 杭电 1016 Prime Ring Problem
ac代码: View Code #include using namespace std; int map[61]; int use[21]; int ss[22]; int n; void dfs(int i) { if(i==n&&map[ss[i-1]+1]==0) { for(int l=0;l1;l++)原创 2016-03-17 10:38:15 · 182 阅读 · 0 评论 -
hdu 杭电 1045 Fire Net
题意:地图中最多能放多少炮台。 解法:深搜。 ac代码: View Code #include using namespace std; char map[8][8]; int sum,maxi,n; bool check(int x,int y) { if(map[x][y]=='X')return 0; int i;原创 2016-03-17 10:38:11 · 225 阅读 · 0 评论 -
hdu 杭电 1242 Rescue
题意:从a开始,找到r所需的时间(r可以有多个,找到第一个输出所需的时间即可),‘#’是墙不可走, 经过‘.’时间加1,经过‘x’时间加2. 解法:广搜,使用优先队列,队列中的首元素都为队列中step最小的一个元素。 注意:r可以有多个。 ac代码: View Code #include #include using namespace std;原创 2016-03-17 10:38:07 · 212 阅读 · 0 评论 -
hdu 杭电 1262 寻找素数对
题意:找一对最接近的素数(素数对可以相等)其和等于给出的偶数。 解法:prim[10001]数组中不是素数标记为1,从prim[]下标为n/2开始搜. 注意:素数对可以相等。 ac代码: View Code #include using namespace std; const int m=10000+1; bool prim[m]; int m原创 2016-03-17 10:38:03 · 292 阅读 · 0 评论 -
hdu 杭电 2216 Game III
题意:Z每走一步S就要往相反的方向走一步(所走的那步假如是墙,或者出界,S不动)如果能找到S请输出最小的步数,不能输出“Bad Luck!” 解发:广搜,vis[][][][]标记Z,S已走过的路。 注意:特别要注意,此题的地图必须用gets()或scanf(“%s”)输入,其中的缘由本人也不知,但我已经故意尝试用cin输入地图,但结果是wa。代码后有大量的测试数据,测试结果运行我原创 2016-03-17 10:37:59 · 203 阅读 · 0 评论 -
hdu 杭电 1312 Red and Black
题意:W H分别代表图的列与行,图中有'.' '#' '@' 从@的位置出发最多能搜到多少个‘.’,‘#’为障碍物。 解法:广搜 ac代码: View Code #include #include using namespace std; const int M=20+3; char map[M][M];//地图 bool use[M][M];//用作标记原创 2016-03-17 10:37:54 · 202 阅读 · 0 评论 -
hdu 杭电 1241 Oil Deposits
题意:找图中没有连在一起的'@'的个数。 解法:广搜 ac代码: View Code #include #include using namespace std; const int M=100+10; char map[M][M];//地图 bool use[M][M];//用作标记 int vec[8][2]={-1, 0, -1,-1, 0,-1原创 2016-03-17 10:37:50 · 209 阅读 · 0 评论 -
hdu 杭电 1002 A + B Problem II
题意:给你两个数,求和。很明显无论是int(最多能装10位的数),还是__int64(最多能装20位的数)都装不起1000位的数,所以必须用字符串装要相加的数。 解法:使用strrev()把字符串中的元素倒过来,如:a[3]="abc",strrev(a),数组a中的元素循序为"cba" 注意:输入的两个数都为0的情况,或一个数为0的情况。 ac代码: View Code原创 2016-03-17 10:37:45 · 230 阅读 · 0 评论 -
hdu 杭电 1495 非常可乐
题意:容量分别是N 毫升和M 毫升 可乐的体积为S (S 解法:广搜,每一个队头元素都要进行6次操作,如图进行了n->m一次操作: 对应的6中操作(S->N,S->M,N->S,N->M,M->S,M->N)此图必须注意:n,m的意思为:瓶子n中此刻存在的可乐量为n,瓶子m中此刻存在的可乐量为m 注意:从一个瓶倒进另一个瓶时必须分两种情况,1:能装满2:不能装满 ac原创 2016-03-17 10:37:41 · 387 阅读 · 0 评论 -
数组结构体中排序
//sort排序用法 //函数原型: void sort(iterator begin, iterator end); //将[begin,end) 之间的元素使用默认的 #include // 包含头文件 //自定义排序函数 bool cmp(const int a,const int b) { return a > b;} int main() {原创 2016-03-17 10:37:37 · 283 阅读 · 0 评论 -
hdu 杭电 1728 逃离迷宫
题意:m × n (m行, n列)的迷宫,给你两个坐标A(x1,y1),B(x2,y2),从A->B转过的最少弯数是否满足条件 满足输出“yes”,否输出“no” 解法:广搜, 特别注意:走过的点绝不可以标记,原因:如图三点1,2,3,假设1转弯数为5方向向下,2的转弯数为6方向向右,假设此时点2在队头,点2先搜到点3,如果把3标记,点3的转弯数为6,点1不能搜到点3,导致点原创 2016-03-17 10:37:33 · 539 阅读 · 0 评论 -
并查集模板
并查集学习:下面附模板代码 l 并查集:(union-find sets) 一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树。 l 并查集的精髓(即它的三种操作,结合实现代码模板进行理解): 1、Make_Set(x)原创 2016-03-17 10:37:29 · 174 阅读 · 0 评论 -
hdu 杭电 1253 胜利大逃亡
题意:从,左上后角->右上前角,的最短时间是否满足题目给出的时间,满足输出最短时间,否输出-1. 输入数据比较难理解: A B C可以理解为对应输入的A->x轴的单位长度,B->z轴的单位长度(方向向向下),C->y轴的单位长度. 注:左上后角作为坐标原点。 3 3 4 200 1 1 10 0 1 10 1 1 1 //第一块1 1 1 11 0 0原创 2016-03-17 10:37:26 · 237 阅读 · 0 评论 -
优先队列用法
第一种方法: 在优先队列中,优先级高的元素先出队列。 标准库默认使用元素类型的操作符来确定它们之间的优先级关系。 优先队列的第一种用法,也是最常用的用法: priority_queueint> qi; 通过操作符可知在整数中元素大的优先级高。 故示例1中输出结果为:9 6 5 3 2 第二种方法: 在示例1中,如果我们要把元素从小到大输出怎么办呢? 这时我们可以传入一原创 2016-03-17 10:38:19 · 198 阅读 · 0 评论 -
字符串全集
c语言字符串函数详解 void *memset(void *dest, int c, size_t count); 将dest前面count个字符置为字符c. 返回dest的值. void *memmove(void *dest, const void *src, size_t count); 从src复制count字节的字符到dest. 如果src原创 2016-03-17 10:38:23 · 175 阅读 · 0 评论 -
hdu 1284
此题我觉得非常的亢爹,用while(cin>>n)输入肯定wa,原因不详,所以此题只能用while(scanf("%d",&n)!=EOF),作为输入语句。 ac代码: View Code #include using namespace std; const int M=38000; int dp[M]; int main() { /*freopen原创 2016-03-17 10:39:15 · 347 阅读 · 0 评论 -
hdu 1426
题意:中文题,此处省。 ac代码: View Code #include using namespace std; int map[12][12]; int k; int foat; struct tree { int i; int j; }node[90]; int check(struct tree n,int p) {原创 2016-03-17 10:39:11 · 350 阅读 · 0 评论 -
hdu 1258
题意:中文题,省。 ac代码: View Code #include #includestring.h> #include using namespace std; int a[15]; int use[15]; int foat;//判断是否要输出“NONE” int t,n; int k;//use[]数组中使用 bool cmp(int a,in原创 2016-03-17 10:39:07 · 272 阅读 · 0 评论 -
hdu 1166
题意:中文题,省。 解法:线段树。 注意:输入,输出最后用scanf(),printf(),其他的可能超时。 ac代码: View Code //线段树,节点更新,区间求和 #include #includestring> using namespace std; const int M=50000+10;//最大区间 int num[M];//原创 2016-03-17 10:39:03 · 193 阅读 · 0 评论 -
hdu 1556
View Code #include using namespace std; const int M=100000+9; struct treenode { int left;//左区间 int right;//右区间 int sum; //区间之和 }node[M*3];//节点数大约是最大区间的3被 void build(in原创 2016-03-17 10:39:00 · 206 阅读 · 0 评论 -
hdu 1160 题意
题意:第1列单调递增,第2列单调递减,满足这两个要求最长的子序列。 ac代码: View Code #include #include #include using namespace std; struct node{ int num;//记录输入的顺序 int weight; int rate; const bool ope原创 2016-03-17 10:38:55 · 325 阅读 · 0 评论 -
hdu 1228 A+B
题意:如题。 ac代码: #include #includestring> using namespace std; int change(string ch) { /*switch(ch) { case "zero":return 0; }*/ if(ch=="zero") return 0原创 2016-03-17 10:38:51 · 245 阅读 · 0 评论 -
hdu 1003 Max Sum
题意:输出最大子序列和。 解法:DP ac代码: #include using namespace std; #define mem(x,y) memset(x,y,sizeof(x)); const int M=100099; int a[M];//存储输入的数 int sum[M];//sum[i]代表第i个为结尾的最大和 int front[M];/原创 2016-03-17 10:38:48 · 190 阅读 · 0 评论 -
hdu 1254 需注意的地方
题意:如题所说。 注意:1.要考虑人是否能走到推箱子的地方 2.箱子经过的格子可以再次经过,而箱子经过同一个格子从同一个方向来的只能有一次 3.人不能穿过箱子 解法:BFS+BFS AC代码: View Code //bfs+bfs #include #include using namespace std; #define mem(x原创 2016-03-17 10:38:44 · 436 阅读 · 0 评论 -
hdu 1385 题意 测试数据
题意:两点间的最短距离,并输出路径(按字典序排列),如何理解字典序,如:1>4>5>6的值等于1>2>5>6的值而且都为最短路径, 此时必须输出:1>2>5>6 解法:floyd ac代码: View Code #include using namespace std; const int INT=0x7fffff; const int M=1000+99;原创 2016-03-17 10:38:40 · 320 阅读 · 0 评论 -
hdu 1690 题意 Bus System floyd
题意:此题唯一亢爹的就是,输入的站号可能是负数,但是起点到终点的站号不可能是负数,下面举个例你就清楚了, 如输入站号顺序为:-1 ,-2, -3, -4, 1, 2, 3, 4. 若L1-L4,C1-C4分别为1 2 3 4 1 3 5 7,问1到5的最短路径, 答案:3.很多我想你会认为不能到达,但最短路径确是3. 原因是:-1(代号为1),-2(代号为2), -3(代号为3), -4(原创 2016-03-17 10:38:36 · 192 阅读 · 0 评论 -
hdu 杭电 1690 题意 Bus System dijkstar
题意:此题唯一亢爹的就是,输入的站号可能是负数,但是起点到终点的站号不可能是负数,下面举个例你就清楚了,如输入站号顺序为:-1 ,-2, -3, -4, 1, 2, 3, 4. 若L1-L4,C1-C4分别为1 2 3 4 1 3 5 7,问1到5的最短路径, 答案:3.很多我想你会认为不能到达,但最短路径确是3. 原因是:-1(代号为1),-2(代号为2), -3(代号为3), -4(代号原创 2016-03-17 10:38:31 · 188 阅读 · 0 评论 -
vs2008 快捷键大全
VS2008快捷键大全 VS2008 快捷键大全[转帖] Ctrl+m+Crtr+o折叠所有大纲 Ctrl+M+Crtr+P: 停止大纲显示 Ctrl+K+Crtr+C: 注释选定内容 Ctrl+K+Crtr+U: 取消选定注释内容 Ctrl+J : 列出成员 智能感知 Shift+Alt+Enter: 切换全屏编辑 Ctrl+B,T / Ctr原创 2016-03-17 10:38:27 · 228 阅读 · 0 评论 -
hdu 杭电 2473 Junk-Mail Filter
题意:输入N M,N代表开始时存在N种不同的集合数从0~(N-1),M代表有M行输入。 M X Y 代表X与Y的内容相同并在一个集合中。 S X 代表要从X当前的集合中脱离出来成为一个独立的集合。 最后要求的是不同集合数的个数。 输入数据比较大,这题最好用scanf();printf()输入 输出。 解法:并查集,在集合中删除元素,用N原创 2016-03-17 10:37:22 · 202 阅读 · 0 评论