
搜索
文章平均质量分 65
nash142857
这个作者很懒,什么都没留下…
展开
-
ZOJ1101 搜索
#include#includeint n;int a[1010];int psort(int a[],int s,int t){ int key=a[t]; int i=s-1,j; for(j=s;j<t;j++) { if(a[j]<=key) { i++; int temp=a[i]; a[i]=a[j]; a[j]=temp; }原创 2012-09-02 19:11:46 · 676 阅读 · 0 评论 -
ZOJ 1013
总觉得不科学、、、写了5个循环,,总觉得危险,,,竟然只跑了550ms。。。。亮瞎,果然各种break导致下来复杂度其实没那么高做法、、dp[i][j][k]记录 前i个车,装了j个1号,k个2号,最多装几个3号、、、然后就随便搞了、、、开始还以为会超时 真是亮瞎。。#include#include#includeusing namespace std;int n,w[3],s[3]原创 2012-12-01 13:59:36 · 1036 阅读 · 0 评论 -
POJ2286+IDA*算法
IDA*算法搞下 就行,hash不了,只需要剪枝,前一移动顺序不是现在移动的逆过程就ok/*IDA*算法*/#include#include#include#includeusing namespace std;int a[25],depth;bool ok(int * p){ int k=p[7]; return (k==p[8])&&(k==p[9])&&(k==p[12]原创 2012-11-14 10:28:55 · 1647 阅读 · 0 评论 -
HDU 1430+BFS
这道题一看,暴力bfs去搞,超时,康拓hash下还是超时,结果看大牛博客,才知道。。对于一个状态到另一个状态都可以转化为12345678到另一个状态,中间只需置换下即可,这样的话,只要一次bfs预处理出所有情况就可以了。。不需要每个case都搜一遍。。。#include#include#include#include#include#includeusing namespace std原创 2012-11-13 13:36:25 · 1279 阅读 · 0 评论 -
ZOJ2477
IDA搜索。。。。想法不难,难在,旋转的时候每个点对应哪个点要改变、、、wa了5次,写的泪奔了。。。change函数是相邻4个面的变化,rotate是自转#include#include#includechar mp[6][3][3],s[2];int T,ansx[10],ansy[10];int judge(char mp[6][3][3]){ for(int i=0;i<6;i原创 2012-11-25 23:09:56 · 942 阅读 · 0 评论 -
POJ1184
荒废了好久的时间啊,刷了一会博弈后就天天酱油好久了,昨天继续ACM之旅,刷到POJ1184,觉得好难啊,看了别人的思路,才会写的、、直接上代码,(无力了).BFS#include#include#include #include #include#define N 10000using namespace std;int sign[10][6]={ 1,0,0,0,0,原创 2012-10-17 14:49:09 · 1237 阅读 · 0 评论 -
ZOJ1039
字典树+搜索时用dfs#include#include#include#includeusing namespace std;int T,n,m;char s[110];vectorvt[9];struct trie{ int cnt; trie * nxt[26];};trie * init(int num){ trie * p=new trie; p->cnt=原创 2012-09-24 21:34:59 · 564 阅读 · 0 评论 -
LCA+RMQ
转个链接:点击打开链接原创 2012-09-16 01:03:34 · 435 阅读 · 0 评论 -
ZOJ1067
简单题,我用dfs求关系的,没用栈的非递归方式,最后想说一句网上看到的读取一个数字的方式sscanf(str+pos,"%d%n",&sum,&n)...其中%n表示至此已读入的字符数,在这道题中比较有用,学到了~#include#includeint n;int g[52][52],d[52];char s[300];int cnt;void dfs(int x){原创 2012-09-10 22:50:16 · 940 阅读 · 0 评论 -
ZOJ1144
不错的题目,看了解题报告才会的,开始本来想用dfs搞的,结果爆栈了,想了也是,没有visit数组,只要限制一小绝对爆栈,看了别人的解题报告才知道,由于这题只需记录每个时刻每个点的状态,无需点dfs,因为不需要路径,只需要知道可否到,所以floodfill从前到后再从后到前即可。开始没看清题,抢匪每步可以停留一下,因此wa了2次,汗~~#include#includeint w,h,t;原创 2012-08-28 23:48:24 · 595 阅读 · 0 评论 -
ZOJ1031
这题目不会做,看了网上别人写的代码,发现使用DFS+剪枝完成,把火柴看成一个集合A,把正方形看成集合B,火柴在正方形上,就连边,然后就用最少的火彩覆盖所有B的正方形,果断DFS,但有剪枝,1.按在正方形数多 从大到小排序。2.去掉效果一样的火柴。3.judge下,看后面火柴全取到不到的了res,不行就剪掉。#include#include#include#incl原创 2012-08-25 18:51:59 · 638 阅读 · 0 评论 -
ZOJ1136
比较简单,但被坑了好久,开始没用字符串,直接判定队列首元素大于2000000000,return 0..这题关键还是用mark数组记录余数达到优化。。搓的死,跑了500ms。#include#include#include#include#include#includeusing namespace std;int n,m;int p[12];int nu[6000];stru原创 2012-09-05 20:05:51 · 1065 阅读 · 0 评论 -
ZOJ1204
简单dfs,由于输出要按长以枚举长度为2-n-1dfs即可#include#include#includeusing namespace std;int t,n,maxn;int p[30];int v[30];int flag;int search(int va){ int l=0,r=n-1; while(l<=r) { int m=(l+r)>>1; i原创 2012-09-04 23:46:36 · 1749 阅读 · 0 评论 -
搜索题目推荐及解题报告
搜索题目推荐及解题报告(8.28更新)2008-06-28 14:31以前的帖子要么太分散,要么太凌乱,故现在开始,对每一个分类做一个长期更新的汇总贴。格式说明:题目名后面列出个人此题的大致难度(对菜鸟而言)POJ 1069 -The Bermuda Triangle(难)http://acm.pku.edu.cn/JudgeOnline/problem转载 2012-08-26 19:49:19 · 513 阅读 · 0 评论 -
中国邮路问题 ZOJ1903
方法就是构造最小包含G的欧拉图,首先得出所有奇点,然后用最短路匹配,所以要先floyd处理,得出最优匹配我的方法比较搓,是直接枚举的。。#include#includeconst int inf=99999999;int n,m;int u[20],d[20],mp[20][20];int min(int a,int b){ return a<b?a:b;}void floyd(原创 2012-09-03 11:09:24 · 2012 阅读 · 0 评论 -
CF div #151 E题
题目:点击打开链接大意是给出一个树,每个节点有个名字,求一个节点,所有k-child,有多少个不同name,首先记录每个层次的节点,但怎么知道某个节点是不是对应的k-child,这里应该dfs预处理的时候记录,每个节点,进入 出来的时间,然后二分下界,就可以得到自身k-child的范围,set搞一下就行了。。跑了890ms,估计是cin cout太慢了吧#include#include#i原创 2012-11-23 12:34:01 · 599 阅读 · 0 评论