ACM回顾
文章平均质量分 57
若寒hqq
大学生,自学web开发
展开
-
ZOJ 3475(机智的暴力)
ZOJ 3475(机智的暴力)原创 2015-05-24 15:19:04 · 578 阅读 · 0 评论 -
hdu1207汉诺塔II
问题描述:在经典汉诺塔的基础上加一个条件,即,如果再加一根柱子(即现在有四根柱子a,b,c,d),计算将n个盘从第一根柱子(a)全部移到最后一根柱子(d)上所需的最少步数,当然,也不能够出现大的盘子放在小的盘子上面。注:1分析:设F[n]为所求的最小步数,显然,当n=1时,F[n]=1;当n=2时,F[n]=3;如同经典汉诺塔一样,我们将移完盘子的任务分为三步:(1)将x(1原创 2015-05-24 16:04:43 · 457 阅读 · 0 评论 -
UVA 11111 - Generalized Matrioshkas
相当于括号匹配问题,负数入栈,正数出栈并定义一个数组level存当前的数(外层减去里层数)。思考了好久,终于。。。AC#include #include #include #include #include #include #include #include #include using namespace std;int a[30000],level[30000];i原创 2015-05-24 16:14:40 · 356 阅读 · 0 评论 -
UVA 10305 - Ordering Tasks
好开心的水了这道题,没用bfs和dfs,嘿嘿#include #include #include #include #include using namespace std;int order[110],n,m;int find_i(int x){ for(int i=0;i<n;i++) { if(order[i]==x)原创 2015-05-24 16:15:59 · 323 阅读 · 0 评论 -
439 - Knight Moves
bfs解决问题:(1)广度搜索,按先后顺序进入队列;(2)先判断是否走到终点,再依次搜索;(3)做好标记数组,其中数组还可以记录走过的路径。#include #include #include using namespace std;int vis[10][10];char start[10],end[10];char horse_step[8][2]={{-2,1},{-原创 2015-05-24 16:15:16 · 343 阅读 · 0 评论 -
ACMer
ACMer一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。下面给个计划练练: 第一阶段:练经典常用算法,下面的每个算法打上十到二十遍,同时自己精简代码。因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短路原创 2015-05-24 16:17:54 · 482 阅读 · 0 评论 -
uva 10714 - Ants
#include #include #include #include using namespace std;int N,d,i,n,a[1000005];int main(){ cin>>N; while(N--) { int large=0; int small=1000001; cin>>d>>n;原创 2015-05-24 16:19:41 · 373 阅读 · 0 评论 -
uva 11879 - Multiple of 17
//注意大数取余的部分#include#include#include#includeusing namespace std;#define M 205char s[M];int main(){ int i,sum; while(cin>>s) { if(s[0]=='0') break; sum=0;原创 2015-05-24 16:21:24 · 531 阅读 · 0 评论 -
uva 10098 - Generating Fast
全排列,真好用---------729也是#include#include#includeusing namespace std;int main(){ int n; char str[1000]; cin>>n; while(n--) { cin>>str; sort(str,str+strlen(st原创 2015-05-24 16:22:26 · 395 阅读 · 0 评论 -
POJ-3191(负进制那点事儿)
负数进制和正数进制类似。对于负数进制,每次取的余数保证在0~-m-1之间。(例如m=-16,则余数应该在0~15)就可以直接输出。 所以用系统的“mod”运算符的时候必须注意检查是不是在该范围(可能在m+1~0),否则就调整。调整的方法是:if 余数begin余数=余数-m;商=商+1;end;#include "iostream"#include原创 2015-05-24 15:27:40 · 954 阅读 · 1 评论 -
UVA 699 - The Falling Leaves(从中间向两边递归perfect)
#include #include #include #include #include #include #include #include using namespace std;#define M 1000+10typedef struct TNode{ int data; TNode *lchild,*rchild;} TNode,*BiTree;原创 2015-05-24 15:45:04 · 354 阅读 · 0 评论 -
DAG模型简单题
【题意】有n个矩形,每个矩形都有长和宽,表示为a和b矩形X(a,b)可以镶嵌在矩形Y(c,d)中当且仅当a求出能嵌套在一个里面的最多数 【思路】这是DP里的一种,先排序,在搜的时候记录深度,当找到可以嵌套的矩形时直接返回值时间复杂度为O(n*n)矩形的长和宽按照长>宽排列#include #include原创 2015-05-24 15:56:17 · 306 阅读 · 0 评论 -
codeforces34D--Road Map
#include #include #include #include #include #include #include #include #define LL long long#define M 50010using namespace std;int p[M];bool vis[M];vector v[M];void dfs(int k)//树的遍历{原创 2015-05-24 16:08:46 · 506 阅读 · 0 评论 -
查找子字符串的个数(二分法查找)
题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28723#problem/D#include #include #include #include #include #include #include #define LL long longusing namespace std;char str1[5000原创 2015-05-24 16:08:24 · 1352 阅读 · 0 评论 -
典型的最小生成树题
题目http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28723#problem/C #include #include #include #include #include #include #include #define LL long longusing namespace std;struct point{原创 2015-05-24 16:09:29 · 503 阅读 · 0 评论 -
hdu 2141(二分查找,合并数组)
http://acm.hdu.edu.cn/showproblem.php?pid=2141#include //2141...2199...2899...2578#include #include #include #include #include #include #include #define LL long long#define M 510usin原创 2015-05-24 16:03:10 · 433 阅读 · 0 评论 -
hdu 2899(方程题,二分查找)
#include #include #include #include using namespace std;double y;double f(double x)//导函数{ return 42*pow(x,6)+48*pow(x,5)+21*pow(x,2)+10*x-y;}double g(double x)//原函数{ return 6*pow(x,7原创 2015-05-24 16:03:56 · 492 阅读 · 0 评论 -
UVA 106(费马定理&毕达哥拉斯定理)
#include #include #include #include #include #define M 1000010using namespace std;int gcd(int a,int b){ if(b==0)return a; return gcd(b,a%b);}bool flag[M];int main(){ int N,x,y,原创 2015-05-24 15:36:29 · 543 阅读 · 0 评论 -
UVA 297 - Quadtrees(建树)
比较麻烦做了一下午,主要是先建好这两棵树,然后在创建最后的树时顺便求出节点的面积。收获挺大的!#include #include #include using namespace std;#define M 1000char str1[M],str2[M];typedef struct treenode{ int data; treenode *a,*b,*c,*原创 2015-05-24 15:41:56 · 466 阅读 · 0 评论 -
UVA 839 - Not so Mobile(dfs就可以)
#include int ok;int dfs(){ int w1,d1,w2,d2; scanf("%d%d%d%d",&w1,&d1,&w2,&d2); if(w1 && w2 && d1 && d2) { if( (w1*d1) != (w2*d2) ) {ok=0; return 0;} else return原创 2015-05-24 15:41:29 · 387 阅读 · 0 评论 -
UVA 327 - Evaluating Simple C Expressions(枚举就OK)
#include #include #include #include #include #include #include #include using namespace std;#define M 10000char str[M];int len=0;map m;stack s;void initmap(){ for(char x='a'; x<='z'原创 2015-05-24 15:45:01 · 446 阅读 · 0 评论 -
UVA 10130 - SuperSale(0-1背包问题)
#include #include #include #include #define M 1000+10using namespace std;int p[M],w[M],dp[M];int main(){ int T,n,m,c; cin>>T; while(T--) { cin>>n; for(int i=0;原创 2015-05-24 15:47:22 · 414 阅读 · 0 评论 -
UVA 11137 - Ingenuous Cubrency(简单背包问题)
#include #include #include #include #define M 10000+10using namespace std;long long C,v[M],dp[M];void solve(){ memset(dp,0,sizeof(dp)); dp[0]=1; for(int i=1; i<=21; i++) {原创 2015-05-24 15:49:18 · 299 阅读 · 0 评论 -
欧拉函数模板
#include #include #include #include #include #include #include #define LL long longusing namespace std;int phi[50010];int ans;void euler(int n){ int m=sqrt(n+0.5); ans=n; for(i原创 2015-05-24 15:52:11 · 307 阅读 · 0 评论 -
UVA 10791 Minimum Sum LCM(素因子)
//题意:求几个最小公倍数为n的数的最小和//1、每个素因子组成的最大数加,如:12=(2*2)+ 3//2、区分单个素因子16=(2*2*2*2)+1//3、素因子只有1和本身的7=1+7=8,即本身是素数。#include #include #include #include #include #include #include using namespace std;原创 2015-05-24 15:52:19 · 323 阅读 · 0 评论 -
uva 10341 - Solve It(二分)
#include#include#include #include #include #include #define M 100010using namespace std;double p, q, r, s, t, u, flag;double fun(double x){ return p*exp(-x)+q*sin(x)+r*cos(x)+s*tan(x)+t原创 2015-05-24 15:53:20 · 339 阅读 · 0 评论 -
hdu 1007最近点对
#include#include#include #include #include #include #define M 100010using namespace std;int n;struct point{ double x,y;}p[M];int a[M];double cmp(point aa,point bb){ return aa.x<b原创 2015-05-24 15:54:05 · 319 阅读 · 0 评论 -
hdu 1285(拓扑排序)
#include #include #include using namespace std;#define M 505int map[M][M],degree[M],len[M];int n,m,a,b;int main(){ while(scanf("%d%d",&n,&m)==2) { memset(len,0,sizeof(len));原创 2015-05-24 15:56:45 · 309 阅读 · 0 评论 -
uva465 overflow
#include #include int main() { char str1[1001],str2[1001],c; double a,b; while(scanf("%s %c %s",str1,&c,str2)!=EOF) { a=atof(str1); b=atof(str2);原创 2015-05-24 15:59:52 · 548 阅读 · 0 评论 -
UVA 10465 - Homer Simpson(贪心-考察代码能力哦)
#include#include#include#include#include#define MAXN 10010using namespace std;int main(){ int n,m,t,beer_time,maxx; while(scanf("%d%d%d",&m,&n,&t)==3) { if(m>n)swap(m,n);原创 2015-05-24 15:59:14 · 448 阅读 · 0 评论 -
素数打表
#include #include #include #include #include #include #include #include #define LL long long#define MAX 10000using namespace std;int x[MAX];int main(){ memset(x,0,sizeof(x)); for(int i=原创 2015-05-24 16:02:02 · 320 阅读 · 0 评论 -
hdu 2578
#include //二分+排序。。。简单题#include #include #include #include #include #include #include #define LL long long#define M 100000+10using namespace std;int a[M];int main(){ int t; scanf("原创 2015-05-24 16:03:02 · 598 阅读 · 0 评论 -
UVA 784 - Maze Exploration
找了半天错误,竟然是dir[4][2]={-1,0,0,1,1,0,0,-1}; 错了,之前每两个上括的是(),应该是{ }啊,无语。。。。。。#include #include #include #include #include #include #include using namespace std;int line,dir[4][2]={-1,0,0,1,1,0,0原创 2015-05-24 16:13:34 · 475 阅读 · 0 评论