ACM
文章平均质量分 85
asure__cpp
这个作者很懒,什么都没留下…
展开
-
hdu 1254 推箱子(两次广搜)
/*这题一个下午了,现在终于过了;用了两次广搜,一次搜箱子到目标地,第二次搜人是可以到推动箱子的地方,要注意的是箱子可能会阻挡人,也可以来回的推。给几组数据就知道了(这题数据都是后面讨论版中提供的)104 30 0 00 0 10 2 31 4 1 5 50 3 0 0 01 0 1 4 00 0 1 0 01 0 2 0 00 0原创 2014-02-08 19:55:23 · 547 阅读 · 0 评论 -
hdu 1253 胜利大逃亡(广搜)
/*三维广搜100726012014-02-08 14:14:15Accepted12531093MS1424K1337 BC++*/#include#include#define N 52using namespace std;int n, m, h, mark[N][N][N], dir[6][3] =原创 2014-02-08 14:17:01 · 681 阅读 · 0 评论 -
hdu 1238 Substrings(暴力枚举)
/*题意:输出最长公共子串的长度*/#include#include#include#define N 110using namespace std;int n;char str[N][N];int work(char ch[]){ int i, len = strlen(ch); char cpy[N]; strrev原创 2014-02-06 19:08:44 · 632 阅读 · 0 评论 -
hdu 变形课(简单搜索)
/*用二位数组保存数据,接着一行一行搜*/#include#include#includeusing namespace std;int mark[30][30], dis[30];bool p = false;void work(int ch){ int i; if(ch == 12) p = true; for( i=0; i < 26; i++ ) {原创 2014-02-05 17:59:13 · 778 阅读 · 0 评论 -
hdu 1240 Asteroids! (广搜)
/*最简单广搜多了一维而已,杭电这题代码数据实在是太弱了,估计就一组,各种错误代码都过了。有兴趣的可以去提交北大poj2225*/#include#include#include#include#include#define N 22#define max 999999#define min(a, b) (a>b?b:a) using namespace std;in原创 2014-02-03 16:36:53 · 534 阅读 · 0 评论 -
hdu 1072 Nightmare (广搜)
/*题意: 2为起点,3为终点,开始时间为6,没走一步减1; 遇到4时重新计时,可重复走。解题:就是普通的广搜,唯一不同的是路可重复走,将标记是否走过的mark数组,标记为走过一次加1,每一个位子最多可走8次即可。*/#include#includeusing namespace std;int n, m, s[10][10], mark[10][10], dir[4原创 2014-02-02 20:53:48 · 511 阅读 · 0 评论 -
hdu 1026 Ignatius and the Princess I(广搜+优先队列)
/*题意:输出点(0,0)到(n-1,m-1)的最短路径。有数字的地方表示停留的时间。解题:简单的广搜,就是多了一个路径的保存。在搜素的过程中用标记数组mark表示是否经过,顺便保存方向*/#include#include#include#includeusing namespace std;#define inf = 0xffffffconst int N=110;原创 2014-02-01 23:03:46 · 578 阅读 · 0 评论 -
hdu Find a way(广搜)
/*题意:题意:Y和M要在KFC约会,地图上有多个KFC,求在哪个KFC两人所走总距离最短,(注意KFC可以当做路)*/#include#include#define N 210#define inf 0xffffffusing namespace std;int flag, n, m, dis[N][N][2], dir[4][2]={1,0, -1,0, 0,1, 0,-原创 2014-01-29 23:54:03 · 485 阅读 · 0 评论 -
hdu 1016 Prime Ring Problem(回溯)
/*题意:素数环,相邻的两个数的和为素数。*/#includeusing namespace std;int ans[21], n;bool a[40], b[21];void work(int k){ int i; if(k==n+1) { if(!a[ans[1]+ans[n]]) return; bool pp=false; for(i=1;原创 2014-01-26 19:44:37 · 488 阅读 · 0 评论 -
hdu 1085 Holding Bin-Laden Captive! 母函数
#includeusing namespace std;const int Max = 1000 + 1000*2 + 1000*5 + 10;int c1[Max], c2[Max], c3[Max];int main(){ int a, b, c; while(scanf("%d%d%d", &a, &b, &c) && (a||b||c) ) { memset(c1,原创 2013-10-23 19:56:39 · 431 阅读 · 0 评论 -
hud 1509 Windows Message Queue 简单优先队列
#include#include#include#includeusing namespace std;struct node{ char str[100]; int cc, num, id;//num编号,id优先级 friend bool operator < ( node x, node y) { if(x.id == y.id) return x.num >原创 2013-10-07 19:44:01 · 536 阅读 · 0 评论 -
hdu 4211 Refrigerator Magnets 简单字符串
#include#include#includeusing namespace std;int main(){ char str[100]; int a[200]; while(gets(str) != NULL) { if(strcmp(str, "END") == 0) break; int l=strlen(str); int i; memset(a原创 2013-09-29 20:27:59 · 566 阅读 · 0 评论 -
uva Lining Up
暴力求解#include#include#include#includeusing namespace std;int main(){ int n; scanf("%d%*c", &n); char c=getchar(); while(n--) { char str[100]; int x[702], y[702]; int i=0, j, k;原创 2013-09-28 20:16:56 · 461 阅读 · 0 评论 -
uva 972 Horizon Line 扫描线
题意:给你两个脉冲f(x)和g(x),这两个脉冲的最大值形成h(x),求解h(x)中达到的最小值。//扫描线#include#include#include#define max(a, b) (a>b?a:b)#define min(a, b) (a>b?b:a)using namespace std;int n, m, pt[105], wt[105];double an原创 2013-09-25 19:49:29 · 580 阅读 · 0 评论 -
hdu 2036 改革春风吹满地 任意多边形面积的求解
向量的叉乘求解任意多边形的面积,给出的点坐标要顺时针(结果为负)或逆时针(结果为正)//任意多边形面积=向量的叉乘//#include #include using namespace std;typedef struct node{ double x, y;}Tpoint;double polygonArea( Tpoint p[], int n ){ doub原创 2013-09-24 19:40:22 · 814 阅读 · 0 评论 -
hdu 4450 Draw Something
/*~太水了*/#includeusing namespace std;int main(){ int n; while(scanf("%d", &n) && n) { int i, t, ans=0; for( i=0; i < n; i++ ) { scanf("%d", &t); ans += t*t; } printf("%d\n"原创 2013-08-11 21:45:41 · 428 阅读 · 0 评论 -
hdu 4350 card
/*题意:模拟一个洗牌的过程,将第L张到R张牌放到最上面,重复N次。每次洗牌后,前R张牌的顺序是不变的(把前R张牌看做一个环)。比如1 2 3 4 5 6一共6张牌,L=3, R=6,洗一次牌为3 4 5 6 1 2,再洗一次5 6 1 2 3 4。。。。。。。。开始一直找规律要求解循环的次数,没找到,后来直接弄while循环,每次都找循环的次数。 找到循环次数,对N取余,以此找到原创 2013-08-11 21:26:15 · 548 阅读 · 0 评论 -
hdu 3543 Roba number
/*题意:求在3*10^7和4*10^7之间的所有素数。思路:打表。怎么打表呢,首先判断一个比较小的数是否为素数,是的话,它的倍数都不是素数。这个较小的数要枚举到多大呢,题目中给定最大数是40000000,那么它的最大素因子是sqrt(40000000)。也就是说,在3*10^7至4*10^7范围内,最大素数不会超过sqrt(40000000)。参考:http://blog原创 2013-08-05 15:37:59 · 610 阅读 · 0 评论 -
hdu 1114 Piggy-Bank
//多重背包,刚好放满的情况//价值达到最小的情况//hdu 1114#includeusing namespace std;int v[10005], w[10005], dp[10005];//int main(){ int T; scanf("%d", &T); while(T--) { //memset(dp, 0, sizeof(dp));//①达到最大原创 2013-07-31 09:16:24 · 448 阅读 · 0 评论 -
hdu 1025 Constructing Roads In JGShining's Kingdom 最长上升序列
//dp+二分//最长上升序列#include#define Max 500005using namespace std;int a[Max], dp[Max];int n;int A()//这个模块是用来节省时间的x=A()相当于scanf("%d", x);{ char c; int temp = 0; while((c=g原创 2013-07-30 10:01:45 · 550 阅读 · 0 评论 -
hdu 1863 畅通工程
/*就是1232,,133的组合*/#include#include#includeusing namespace std;int ch[102];struct Line{ int s, e; int v;}L;vector vec;bool cmp(Line x, Line y) { return x.v < y.v; }int Find(int x)原创 2013-07-17 14:48:04 · 471 阅读 · 0 评论 -
hdu 还是畅通工程
/*这题就是在1232的基础上加了一个容器*/#include#include#includeusing namespace std;int ch[102];struct Line{ int s, e; int len;}L;vector vec;int Find(int x){ while(x != ch[x])//一直向上寻找到x=ch[x]原创 2013-07-17 11:20:01 · 553 阅读 · 0 评论 -
hdu 1232 畅通工程 并查集
#includeusing namespace std;int ch[1005];void run(int n){ for( int i=0; i <= n; i++ ) ch[i] = i;}int Find(int x){ while(ch[x] != x) x = ch[x]; return x;}void Uion(int x, int y){ x原创 2013-07-17 09:18:24 · 467 阅读 · 0 评论 -
hdu 1228 A + B
//水题#include#includeusing namespace std;char str[50];int main(){ int a=0, b=0, t=0; while(scanf("%s", str) != EOF ) { if(!strcmp(str, "zero")) t *= 10; else if(!strcmp(str, "one"))原创 2013-07-16 16:50:58 · 459 阅读 · 0 评论 -
hdu 1859 最小长方形
//水题#includeusing namespace std;int main(){ int a, b, max1, max2, min1, min2; while(cin >> a >> b && (a||b)) { max1 = min1 = a; max2 = min2 = b; while(cin >> a >> b ) { if(a==0 && b原创 2013-07-16 14:53:06 · 639 阅读 · 0 评论 -
hdu 3791 二叉搜索树 叉排
/*二叉查找树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。题意就是判断两个序列是否代表同一棵树;*///二叉搜索树 叉排#include#includeu原创 2013-07-16 11:27:49 · 588 阅读 · 0 评论 -
hdu 1022 Train Problem I 简单堆栈
#include#include#includeusing namespace std;int main(){ int n, i, j, k; bool p[102];//0出桟1进桟 char c1[102], c2[102];//c1进桟序列,c2出栈序列 while(cin >> n >> c1 >> c2) { i=j=k=0; stacktrain; w原创 2013-07-14 14:51:22 · 479 阅读 · 0 评论 -
hdu 1873 看病要排队 优先队列
//优先队列#include#include#includeusing namespace std;struct node{ int num, id;//num优先级,id编号 friend bool operator < (node x, node y) { if(x.num == y.num) return x.id > y.id; else retur原创 2013-07-12 20:22:53 · 528 阅读 · 0 评论 -
hdu 1714 排列2
//注意格式#include#includeusing namespace std;int main(){ int a[5], ch[30]; int i, j; bool p = false; while(scanf("%d%d%d%d", &a[0], &a[1], &a[2], &a[3]) && (a[0]||a[1]||a[2]||a[3])) { if(p)原创 2013-07-10 13:53:23 · 695 阅读 · 0 评论 -
康托展开式
如我想知道321是{1,2,3}中第几个大的数可以这样考虑 :第一位是3,当第一位的数小于3时,那排列数小于321 如 123、 213 ,小于3的数有1、2 。所以有2*2!个。再看小于第二位2的:小于2的数只有一个就是1 ,所以有1*1!=1 所以小于321的{1,2,3}排列数有2*2!+1*1!=5个。所以321是第6个大的数。 2*2!+1*1!+0*0!就是康托展开。再举个例子原创 2013-07-09 15:06:52 · 645 阅读 · 0 评论 -
hdu 1027 Ignatius and the Princess II 康托展开式的逆过程
康托展开式的逆过程//康托展开式(不懂百度百科,写的很详细)这题是一个逆过程//8位的数一共有40000多种排序远大于题目要求的10000;//所以八位以前的数不变。#includeusing namespace std;__int64 fac[]={1,1,2,6,24,120,720,5040,40320,362880,362880};int ch[1000];int n,原创 2013-07-09 15:04:06 · 846 阅读 · 0 评论 -
hdu1405 The Last Practice
/*水题,输出有点坑,输出的最后是有一个空格的*/#include#include#define Max 65535using namespace std;int pr[Max/2+5], dp[Max+1];void ss(){ memset(dp, 0, sizeof(dp)); int i, j; for( i=2; i <= Max/2 ; i++ ) {原创 2013-07-07 17:33:26 · 444 阅读 · 0 评论 -
hdu 1412 {A} + {B}
set做法 141215MS868K515 BC++#include#includeusing namespace std;int main(){ int n, m, t; while(scanf("%d%d", &n, &m) != EOF ) { int i, j; setctr; set::iterator原创 2013-06-20 21:10:26 · 550 阅读 · 0 评论 -
hdu 1042 N!
//hdu1042//N! 10000以内的阶乘//375MS#include#include#define N 10001using namespace std;int f[N];int main(){ int n; while(scanf("%d", &n) != EOF) { int i, j, m原创 2013-06-04 20:40:47 · 442 阅读 · 0 评论 -
hdu 1010 Tempter of the Bone
/*参考http://www.cnblogs.com/ACMan/archive/2012/05/21/2512295.htmldfs */#include#include#include#includeusing namespace std;char ch[10][10];int ok = 0, cnt[5][2] = {{0, 1}, {0, -1}, {-1, 0},原创 2013-05-21 16:15:32 · 424 阅读 · 0 评论 -
hdu 1241 Oil Deposits 简单dfs
搜索入门题//简单dfs#include#include#includeusing namespace std;char gir[105][105];int temp[8][2] = {{-1, -1}, {-1, 0}, {-1, 1}, {0, 1}, {0, -1}, {1, 1}, {1, 0}, {1, -1}};int n, m;void dfs(int x,原创 2013-05-19 20:43:47 · 478 阅读 · 0 评论 -
hdu 3555 Bomb 数位dp
/*hdu 2089的简化 */#includeusing namespace std;__int64 dp[22][3];void run1(){ int i; dp[0][0] = 1; dp[0][1] = dp[0][2] = 0; for( i=1; i <= 21; i++ ) { dp[i][0] = dp[i-1][0]*10 - dp[i-1][原创 2013-05-16 20:45:44 · 542 阅读 · 0 评论 -
hdu 2089 不要62 数位dp
/*参考http://www.cnblogs.com/kuangbin/archive/2013/04/30/3052424.html数位dp;也可以暴力打表;*/#include#includeusing namespace std;int dp[10][3];/*dp[i][0] 代表不存在不吉利的数字;dp[i][1] 代表不存在不吉利的数字,但是首位为2;dp[原创 2013-05-15 19:25:35 · 500 阅读 · 0 评论 -
hdu 3519 Lucky Coins Sequence
//参考文献http://blog.sina.com.cn/s/blog_83ccc39d0101jv6d.html//代码参考http://blog.csdn.net/acm_davidcn/article/details/5819193//矩阵快速幂#include#define MOD 10007using namespace std;int f[4][4], res[4][4]原创 2013-04-19 15:42:50 · 592 阅读 · 0 评论 -
hdu 2964 Prime Bases
/*题意:将一个32位的数n, 拆分成从小到大的素数的乘积(如果乘积不超过n),再乘上n除去素数积的的值 ,以此类推,把n分解完;*/#includeusing namespace std;int a[11][2];int prime[12] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31};int t;int A(int x原创 2013-04-16 20:46:18 · 457 阅读 · 0 评论