算法
iboxty
https://tyliupku.github.io/
展开
-
2014年首届CCF软件能力认证试题第二题
题目 2 窗口 时间限制: 1 秒 空间限制: 256 MB 问题描述 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴 分别平行的矩形区域。窗口的边界上的点也属于该窗口。窗口之间有层次 的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的内 容。 当你点击屏幕上一个点的时候,你就选择了处于被点击位置的最顶层 窗口,并且这个窗口就会被移到所有窗口的最顶层,原创 2015-03-28 00:58:36 · 1386 阅读 · 0 评论 -
uva 712
水题一道,没有用到特别的方法。 根据 000,010,111,110 这些二进制数字转化为十进制得知该查询是哪一个叶子节点的值。#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;const int maxn = 10+2;int n,m;int labe原创 2015-05-24 00:13:02 · 1131 阅读 · 0 评论 -
uva 673
堆栈的应用,不是很困难但一开始WA了一次,原因是没有考虑到“( ”(左括号后面有一个空格)这种情况。AC代码:#include <iostream>#include <stack>#include <cstdio>#include <cstdlib>using namespace std;int main(){ stack<char> s; int T; string原创 2015-05-23 18:30:48 · 516 阅读 · 0 评论 -
uva 439
BFS稍微改变了一下,走的步法不一样了。 AC代码#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <queue>#include <vector>using namespace std;const int maxn = 10;int vis[maxn][maxn];in原创 2015-05-23 16:38:39 · 616 阅读 · 0 评论 -
uva 536
给出二叉树先序和中序遍历打印出后序遍历结果。 这一题跟之前的 uva 548有一些类似,可以对照着学习 代码如下,特备注意dfs的时候递归条件心里要清楚,否则出错很麻烦:#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <map>#include <set>using na原创 2015-05-23 16:26:42 · 612 阅读 · 0 评论 -
uva 12166 bfs
这一题与白书上的一题关于天平的题目有些相似 uva839#include <iostream>#include <cstdio>#include <cstring>using namespace std;bool solve(int& w){ int w1,w2,d1,d2; cin >> w1 >> d1 >> w2 >> d2; bool b1 = true,b2原创 2015-05-23 14:58:54 · 628 阅读 · 0 评论 -
uva 140
就是一道 DFS剪枝+枚举全排列 的题目 我用了vector来存点对的,不用考虑越界的问题。不过效率貌似不如直接用数组高。 WA了三次,花了好长时间找原因╮(╯▽╰)╭ 多么弱智的错误啊=。= WA代码#include <iostream>#include <algorithm>#include <cstdio>#include <cstdlib>#include <vector>原创 2015-06-02 00:26:30 · 634 阅读 · 0 评论 -
hdu 5246
注意精度。因为大于int范围,应该用LL。#include <iostream>#include <cstdio>#include <cstdlib>#include <vector>#include <algorithm>#include <cstring>using namespace std;const int maxn = 10000 + 20;long long r[maxn原创 2015-05-31 12:00:20 · 783 阅读 · 0 评论 -
uva 129
dfs 的题目。感觉还是比较难的。看了解题思路。 对于一个新加入的字母来说,每次判断只要保证含有这个字母的后缀子串没有重复即可。 比如说: 原先的串是:ACB 当新加入一个字母C后构成串ACBC,我们只需要看新加入的后缀C 和 他前一个字母B 是否构成重复字串;然后看一下含有两个字母的后缀 BC 和之前的 AC串是否构成重复字串。这也是dfs过程中最主要的那个循环的意思。#include <原创 2015-05-28 22:13:59 · 864 阅读 · 0 评论 -
uva 1593
一道字符串处理的题目,用len数组记录每一列单词所占的格子数。然后使用一个vector数组保存所有的单词,依照每一列所占的大小输出。#include <iostream>#include <sstream>#include <vector>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;ve原创 2015-05-24 11:20:30 · 922 阅读 · 0 评论 -
uva 1594
运用set判断是否重复就可以简单求解。 之前WA了一次 因为最后写了if(T) cout<<endl;//不用判断是不是最后一行,因为题目说所有结果都要独占一行AC代码:#include <iostream>#include <cstdio>#include <cstdlib>#include <vector>#include <set>#include <math.h>using原创 2015-05-24 12:56:45 · 966 阅读 · 0 评论 -
Ilya and Escalator-python
题目Ilya got tired of sports programming, left university and got a job in the subway. He was given the task to determine the escalator load factor.Let’s assume that n people stand in the queue for the e原创 2016-04-05 12:59:11 · 540 阅读 · 0 评论 -
uva 1595
一道关于stl map的习题,并不是很复杂。 关于是否对称,我是先把所有坐标y值一样的存起来,用vector保存相应x的值。 然后遍历整个map,对于每一组y坐标一样的点,对其x值进行排序。 将x的最大值和最小值相加作为竖线的x值(的2倍),看看这条直线是否满足要求即可。#include <iostream>#include <cstdio>#include <vector>#inclu原创 2015-05-25 10:55:08 · 858 阅读 · 0 评论 -
uva 725
暴力法枚举,五重循环。 一开始因为空格问题WA了,要注意#include <iostream>#include <set>#include <cstdio>using namespace std;int main(){ int a,b,c,d,e,f,g,h,i,j,n; int cnt = 0; int div = 0,res; set<int> num;原创 2015-05-25 18:11:07 · 615 阅读 · 0 评论 -
uva 10976
枚举法 水题#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;const int maxn = 1000 + 5; int main(){ int k,x,y,cnt; int xx[maxn],yy[maxn]; bool flag; while(cin >>原创 2015-05-25 17:57:55 · 737 阅读 · 0 评论 -
uva 10391
一道关于set的水题,按输入顺序遍历就可以按照字典序输出 一开始用了二重循环结果TLE了。 后来发现可以直接一重循环搞定。TLE代码:#include <iostream>#include <cstdio>#include <cstring>#include <set>#include <vector>using namespace std;set<string> s; vector原创 2015-05-24 23:35:34 · 534 阅读 · 0 评论 -
uva 12100
一道关于stl 队列的题目,比较简单。#include <iostream>#include <queue>#include <cstring>#include <cstdio>using namespace std;struct node { int seq; int pri; node(int s,int p):seq(s),pri(p){}}; queue<n原创 2015-05-25 12:10:34 · 814 阅读 · 0 评论 -
uva 10763
一道关于stl map的题目,水题。 一开始WA一次因为map 没有清空另关于map,没有出现的key对应的value都是0,应该可以认为一开始初始化为0,这样就可以十分方便的进行加减操作。如下代码。 map<vector<int>,int> tt; vector<int> v;v.push_back(0); tt[v]++; cout<<tt[v]<<endl;AC原创 2015-05-24 23:04:32 · 638 阅读 · 0 评论 -
uva 10935
stl 队列的水题。#include <iostream>#include <cstdio>#include <queue>using namespace std;int main(){ int n; while(cin >> n && n!=0){ queue<int> q; for(int i = 1;i <=n;i++) q.push(i)原创 2015-05-24 20:05:02 · 497 阅读 · 0 评论 -
uva 524
dfs 确定每一个位置上填写的数字#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <math.h>using namespace std;int n;int A[18];int p[40];int vis[18];int is_prime(int n){ for(原创 2015-05-28 21:36:54 · 736 阅读 · 0 评论 -
uva 816 BFS迷宫
这是一道比较复杂的BFS迷宫问题,状态由普通的迷宫问题的坐标(x,y)变为三个变量的状态(r,c,dir)其中dir是到达(r,c)两点的方向,这个变量非常重要,导致了这题比普通的BFS迷宫问题要更加复杂。 普通BFS解法 http://blog.csdn.net/iboxty/article/details/45888923BFS是用队列实现的,很重要并且要理解的是:每一个节点只访问一次,而且每原创 2015-05-21 18:30:44 · 1141 阅读 · 0 评论 -
uva 253
枚举,确定哪一个面朝上之后旋转4次判断两个结果一不一样。#include <cstdio>#include <cstring>#include <iostream>#define maxn 25using namespace std;int dir[6][6] = { {1,2,3,4,5,6},{2,6,3,4,1,5},{3,2,6,1,5,4},{4,2,1,6,5,3},{5,1,3原创 2015-04-29 16:16:17 · 389 阅读 · 0 评论 -
uva 213
字符串处理问题 单个字符的处理,略过换行符直接读取内容。#include<stdio.h>#include<string.h>int code[8][1<<8];int readchar(){ while(1){ int ch = getchar(); if(ch!='\n'&&ch!='\r') return ch; }}int readint原创 2015-04-25 23:52:39 · 761 阅读 · 0 评论 -
2014蓝桥杯编程第一题
记录每一时刻蚂蚁的状态,较简单的一题。#include <cstdio>#include <cmath>#include <iostream>using namespace std;struct T{bool ill;int pos; };T ant[100];int size = 0;int main(){ int n,t; int ans = 0; c原创 2015-04-10 23:40:05 · 585 阅读 · 0 评论 -
C++ string类的用法
标准C++中的string类的用法总结相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C+转载 2015-04-04 18:27:15 · 373 阅读 · 0 评论 -
STL MAP用法详解
说明:如果你具备一定的C++ template知识,即使你没有接触过STL,这个文章你也应该可能较轻易的看懂。本人水平有限,不当之处,望大家辅正。 一.Map概述 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里转载 2015-04-04 10:24:43 · 356 阅读 · 0 评论 -
2014年首届CCF软件能力认证试题第三题
题目3 命令行选项 时间限制: 1 秒 空间限制: 256 MB 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项。 每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔。这些字 符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序不用 对它进行处理。在工具名字之后可能会包含若干选项,然后可能会包含一 些不是选项的参数。 选项有两类:带参数的选项和原创 2015-03-28 14:10:14 · 1740 阅读 · 0 评论 -
poj1661 并查集简单运用
题目来源:题目在学习并查集,自己在总结。关于算法的原理推荐这里,讲得很生动形象,很好懂。 这道题就是一个简单应用,就是套模版的。需要记录每个根节点下面元素的数量。可能算法还能更加优化。#include <iostream>#include <cstdlib>#include <cstdio>#include <map>#include <vector>#include <string>原创 2015-04-01 13:11:46 · 523 阅读 · 0 评论 -
2014年首届CCF软件能力认证试题第一题
题目 1 相反数 时间限制: 1 秒 空间限制: 256 MB 问题描述 有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对 相反数(a 和 −a 为一对相反数)。 输入格式 第一行包含一个正整数 N。(1 ≤ N ≤ 500)。 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过 1 000,保证这些整数各不相同。 输出格式 只输出一个整数,即这 N原创 2015-03-28 01:04:17 · 649 阅读 · 0 评论 -
uva 201
简单模拟题,在处理坐标上需要更加谨慎防止出错。#include <cstdio>#include <cstring>#include <iostream>#define maxn 15using namespace std;int H[maxn][maxn];int V[maxn][maxn];int n,m;bool issquare(int a,int b,int k){原创 2015-04-29 12:29:21 · 447 阅读 · 0 评论 -
uva 512
这是一道字符串处理的题目。但通过自己写的和书上写的代码对比,也是学到一些东西。 我一开始想存储一个点变换后的坐标需要两个值(x,y),再加上一个bool类型的变量判断这个点有没有被删去即可。因此写出代码如下:#include<stdio.h>#include<string.h>#define maxn 55struct point{ int ansx; int ansy;原创 2015-04-26 23:03:51 · 795 阅读 · 0 评论 -
BFS 基础
做一道题复习一下BFS迷宫=http://hncu.acmclub.com/index.php?app=problem_title&id=111&problem_id=1102 题目描述 小明置身于一个迷宫,请你帮小明找出从起点到终点的最短路程。 小明只能向上下左右四个方向移动。 输入格式 输入包含多组测试数据。输入的第一行是一个整数T,表示有T组测试数据。 每组输入的第一行是两个整数N原创 2015-05-21 10:58:34 · 1651 阅读 · 0 评论 -
fgets和fputs、fread和fwrite、fscanf和fprintf用法
字符串读写函数fgets和fputs一、读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志”。例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入 字符数组str中。转载 2015-05-21 11:07:33 · 1133 阅读 · 0 评论 -
uva 699
用一个int 变量 p 记录一下树中节点的位置,边输入就可以建树。 用flag 变量记录是否初始化。#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>using namespace std;const int maxn = 10000;int tree[maxn]; bool flag = t原创 2015-05-20 11:54:43 · 348 阅读 · 0 评论 -
uva 297
四分树,递归画出四块区域#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;const int len = 32;const int maxn = 1024 + 20; int square[len][len],cnt;char s[maxn];void原创 2015-05-20 12:22:38 · 440 阅读 · 0 评论 -
uva 572
DFS#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;const int maxn = 105;int idx[maxn][maxn];char input[maxn][maxn];int cnt;void dfs(int m,int n,int x,int原创 2015-05-18 22:24:38 · 383 阅读 · 0 评论 -
uva 548
根据中序遍历和后序遍历构建树#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <sstream> using namespace std;const int maxv = 10000+10;int in_order[maxv],post原创 2015-05-20 11:18:25 · 725 阅读 · 0 评论 -
uva 101
uva 老是打不开,代码没有提交成功。但应该是对的。。。 一道模拟题,用vector做的。#include <cstdio>#include <cstring>#include <iostream>#include <vector>using namespace std;const int maxn = 26;int n;vector<int> stat[maxn];void move原创 2015-05-01 20:41:47 · 366 阅读 · 0 评论 -
uva 1592
一开始写的是这样: 用了书上写的ID函数,然后存二元组使用的大数相乘的方法,因为看错题目BIG一开始定义为10010,错了好几次找了半天错误=.= 后来发现存二元组也可以用make_pair(x,y)#include <cstdio>#include <cstring>#include <iostream>#include <vector>#include <map>#define B原创 2015-05-03 14:21:13 · 1036 阅读 · 0 评论 -
uva352 The Seasonal War-python
计算连通块,dfsMAXN = 26dirs = [[1, 0], [0, 1], [-1, 0], [0, -1], [1, 1], [1, -1], [-1, 1], [-1, -1]]cnt = 0def dfs(x, y, m, n): flag[x][y] = 1 for d in dirs: nx = x + d[0] ny = y原创 2016-04-05 14:09:17 · 982 阅读 · 0 评论