自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 Sum of Consecutive Prime Numbers UVA - 1210

求素数前缀和,把输入的数字n当成连续的素数之和,必定会有sum1-sum2 = n,也就是说sum1和sum2都存在于前缀和数组中,统计sum1或者sum2的个数#include#include#include#includeusing namespace std;vector primes;const int MAXM = 1799800;bool is_prime[MAX

2018-04-27 07:44:36 164

原创 Prime Gap UVA - 1644

给出一个数,求出第一个小于该数的素数与第一个大于该数的素数之差,如果输入是素数,直接输出0筛法素数表#include#include#include#includeusing namespace std;vector primes;const int MAXM = 1799800;bool is_prime[MAXM];int main() { // 初始化

2018-04-27 07:11:24 178

原创 Fliptile POJ - 3279

搜索先枚举确定第一排,之后的都可以确定#include#includeusing namespace std;const int MAXN = 16;const int MAXM = 16;//邻接的格子的坐标const int dx[5] = {-1,0,0,0,1};const int dy[5] = {0,1,0,-1,0};//输入int M,N;int

2018-04-23 13:45:46 157

原创 Catch That Cow POJ - 3278

简单的BFS,注意边界学到了,队列的内存是分配在堆区的#include#include#include#includeusing namespace std;int n, k;const int MAXN = 100010;bool vis[MAXN];struct node { node(int pos_,int step_):step(step_),p

2018-04-21 13:59:02 131

原创 Dungeon Master POJ - 2251

简单搜索题,直接BFS#include #include #include using namespace std;int L, R, C;const int MAXN = 35;char maze[MAXN][MAXN][MAXN];int sx, sy, sz, ex, ey, ez;int dx[6] = {0, 0, -1, 1, 0, 0};int dy[6] =

2018-04-18 16:13:12 116

原创 棋盘问题 POJ - 1321

还算是一个比较简单的搜索题,直接DFS,然后标记一下。#include<cstdio>#include<cstring>const int MAXN = 10;char G[MAXN][MAXN];int vis[MAXN];int n, k, m, ans = 0;void dfs(int cur) { if (k == m) { ...

2018-03-25 16:11:40 147

原创 The Suspects POJ - 1611

#include #include using namespace std;const int MAXN = 30000 + 10;int fa[MAXN], rank[MAXN];void init(int n){ rank[0] = 1; for (int i = 1; i < n; ++i) { fa[i] = i; r

2017-12-01 09:29:07 137

原创 Intersecting Lines POJ - 1269

#include #include using namespace std;/*判断直线是否相交或者共线,并求出交点*/const double ESP = 1e-10;int dcmp(double x) { if (fabs(x) < ESP) { return 0; } else { return x < 0 ? -1 : 1;

2017-11-30 22:45:24 129

原创 How Many Tables HDU - 1213

#include using namespace std;const int MAXN = 1000 + 10;int fa[MAXN], rank[MAXN];int t, m, n;int find(int x) { return fa[x] == x ? x : fa[x] = find(fa[x]);}void init() { for (int i =

2017-11-30 22:43:34 167

原创 Segments POJ - 3304

判读线段与直线相交#include #include using namespace std;/*投影在一条线上,有交点,等价于有一条线可以穿过所有的线段读入所有线段,然后选取坐标原点以及一条线段,然后旋转,判断是否与其他的线段相交看了题解,枚举线段端点,如果有以其中任意两点为端点的线段与所有线段香蕉,就符合题意*/const double ESP = 1e-10;int

2017-11-30 07:55:20 203

原创 Wireless Network POJ - 2236

WA了一发,要注意合并节点a到集合b的时候,要将a的整棵树都合并到b,而不是仅仅把a的父节点设置为b的父节点#include#includeusing namespace std;const int MAXN = 1000 + 10;int fa[MAXN];int n, d;struct Computer { int x, y; int statu;//是否修

2017-11-24 19:38:46 179

原创 Toy Storage POJ - 2398

#include#include#includeusing namespace std;const int MAXN = 1000 + 10;int m, n;int x1, y1, x2, y2; //边界struct box { //每一个格子上的属性,右边界坐标以及玩具数量 int u, d

2017-11-24 13:06:57 169

原创 TOYS POJ - 2318

#include#includeusing namespace std;const int MAXN = 5000 + 10;int m, n;int x1, y1, x2, y2; //边界struct box { //每一个格子上的属性,右边界坐标以及玩具数量 int u, d, cnt;};

2017-11-24 07:30:31 167

原创 7-15(查找) 航空公司VIP客户查询(25 分)

7-15(查找) 航空公司VIP客户查询(25 分)不少航空公司都会提供优惠的会员服务,当某顾客飞行里程累积达到一定数量后,可以使用里程积分直接兑换奖励机票或奖励升舱等服务。现给定某航空公司全体会员的飞行记录,要求实现根据身份证号码快速查询会员里程积分的功能。输入格式:输入首先给出两个正整数N(≤10​5​​)和K(≤500)。其中K是最低里程,即为照顾乘坐短程航班的会员,

2017-11-23 20:11:37 4378

原创 7-2 是否完全二叉搜索树(30 分)

7-2 是否完全二叉搜索树(30 分)将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。输入格式:输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。输出格式:将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输

2017-11-20 23:25:18 668 1

原创 7-1 是否同一棵二叉搜索树(25 分)

7-1 是否同一棵二叉搜索树(25 分)给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正

2017-11-20 21:57:39 3320

原创 Fill the Square UVA - 11520

根据题目给的格子,因为要满足上下左右四个方向的字母都不相同,如果答案不唯一的话,输出字典序最小的答案,只要对每一个没有字母的格子,从A到Z枚举,只要合适就填入该字母,并开始下一个空格子的填写,执行完输出二维数组。#include#includeusing namespace std;const int maxn = 10 + 5;char grid[maxn][maxn];int n

2017-10-08 19:56:14 250

原创 Image Is Everything UVALive - 2995

建立一个体积为n*n*n的正方体,由六视图,删除#include#include#include#include#includeusing namespace std;#define REP(i, n) for(int i = 0; i < (n); ++i)const int MAXN = 10;int n;char pos[MAXN][MAXN][MAXN];char

2017-09-28 20:51:19 176

原创 Even Parity UVA - 11464

#include#include#include#includeusing namespace std;const int MAXN = 20;const int INF = 1000000000;int n, A[MAXN][MAXN], B[MAXN][MAXN]; //原始数组,枚举数组(终态数组)int check(int s) { memset(

2017-09-28 19:28:05 176

原创 Piotr's Ants UVA - 10881

当蚂蚁A与蚂蚁B碰头时,A与B都要切换方向,考虑个体难以实现,用整体考虑,A与B相遇之后,可以认为A,B直接穿过对方,order数组用来存储输入顺序在排序后的数组的下标#include#include#include#includeusing namespace std;const int MAXN = 10000 + 5;struct Ant { int id;

2017-09-27 22:48:52 183

原创 Open Credit System UVA - 11078

因为i总是小于j的,所以扫描一遍,就可以直到j前面的最大值,然后用此最大值减去当前值(j)来更新答案#include#includeusing namespace std;int main() { int t, n, min, max, ans; scanf("%d", &t); while(t--) { scanf("%d", &n);

2017-09-26 22:56:48 162

原创 The Trip, 2007 UVA - 11100

最后的包数取决于所有包中出现最多的那一种规格输出的时候,每次选取ans+1为下一个位置#include#include#includeusing namespace std;int arr[10000 + 10], cnt[1000000 + 10];int main() { int n, tmp, ans, firstcase = 1; while(scan

2017-09-26 18:21:34 221

原创 Children's Game UVA - 10905

贪心,主要是排序的方法,自己想了好久,没想出来,看了题解,恍然大悟,原来还能这样写,又新学到了一个技能点O(∩_∩)O哈哈~#include#include#include#include#includeusing namespace std;string strs[55];bool cmp(string a, string b) { return a + b >

2017-09-26 17:12:11 225

原创 子集生成 增量构造法 位向量法 二进制法

增量构造法参考//此算法仅仅是输出下标,实际应用应输入另一个数组来进行存储数据//这三种方式,为了理解这个花费了最长的时间,太纠结于细节了,刘汝佳写的不是特别清楚//这三种方式的话,都可以理解为输出0 - n-1的这n个数字的子集//疑问就是我的数列并不是单纯的0 - n-1, 如果不是这种情况,那该怎么办,//所以说,可以定义一个数据数组,这三种方式所直接输出的集合就是数...

2017-08-09 13:02:19 2800 4

原创 Help is needed for Dexter UVA - 11384

找规律的一个题数列长度为奇数1 2 3 4 5 6 7 从4开始,后面的都减去4变成1 2 3 0 1 2 3 然后考虑1 2 3继续以上思想,直到数列长度为0数列长度为偶数1 2 3 4 5 6 7 8从5开始,后面的都减去4变成1 2 3 4 1 2 3 4然后考虑1 2 3 4继续以上思想,直

2017-07-24 12:30:37 204

转载 快速幂讲解

转自http://www.cnblogs.com/CXCXCXC/p/4641812.html快速幂这个东西比较好理解,但实现起来到不老好办,记了几次老是忘,今天把它系统的总结一下防止忘记。  首先,快速幂的目的就是做到快速求幂,假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b)也即是O(n)级别,快速幂能做到O(logn),快了好多好多。它的原理如

2017-07-23 08:24:17 239

原创 Uva - 1588 - Kickdown

Wrong Anwser:#include#include#define MAX_LEN 233int main (){ int i,j,lm,lp,min1,min2,slocation; char tbottom[MAX_LEN],ttop[MAX_LEN],temp[MAX_LEN]; while( scanf("%s",tbottom) != EOF )

2017-05-06 16:24:40 226

原创 Uva--815--Flooded!

#include#define MAX 30int main () { int box[MAX*MAX]; int i,j,k,m,n,all,region=0; double leftwater,fadepercent,waterlevel,averange,sum; while( scanf("%d%d",&m,&n) != EOF ) {

2017-05-06 16:15:59 352

原创 201--Squares--Uva

#include#include#define MAX 36using namespace std;char temp,board[MAX][MAX];bool square(int y,int x,int k) { //判断是否存在四条线 for(int i=(2*x-1); i<=(2*(x+k)

2017-04-07 22:46:15 208

原创 10763--Foreign Exchange--Uva

1.第一反应是用map,结果Wrong Answer,检查漏了花括号,加上之后依然Wrong Answer2.数据会有重复的,不能用map,::>_3.不再考虑排序,找到一个,剔除一个,避免重复查找,Accepted思路:用两个multimap A、B,正序反序分别存入,如果可行两者完全相等(不考虑顺序),遍历A,在B中找完全相同的元素并erase掉,找不到直接退出遍历代码:

2017-04-05 11:26:23 183

原创 253--Cube painting--Uva

1.模拟旋转2.情况有24种思路:确定顶面和底面(3种情况),侧面旋转四次并比较,颠倒底面顶面,继续旋转四次并比较代码:#include#includevoid swapchar(char *a, char *b){ char c = *a; *a = *b; *b = c;}int main (){ int i,j,

2017-03-30 22:18:12 177

原创 10474--Where is the Marble?--Uva

1.一开始没考虑到全部小于要找的数思路:排序,搜索代码:#include#include#define MAX 10000using namespace std;int main (){ int n,i,q,x,number[MAX],cases = 0; while((cin >> n >> q ) && n && q) {

2017-03-28 22:23:56 164

原创 1589--Xiangqi--Uva

1.模拟棋盘2.一开始只用了一个棋盘,后来发现有些麻烦,又添加了一个3.一直以为帅是可以斜着走的((吐血@##4.做了两天,10小时左右5.不算太难,但是特别琐碎,要考虑到将可以吃掉我方棋子6.使用了本帖 http://tieba.baidu.com/p/3680935088 的测试数据,非常感谢思路:模拟棋盘,对我方的每个棋子可攻击的坐标标记在棋盘上,判断对方将是

2017-03-27 16:21:11 245

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除