- 博客(22)
- 收藏
- 关注
原创 zoj 1093 dp Monkey and Banana
<br /> 原来老早看了..觉得麻烦后来发现是自己想麻烦了..没有我想的那种情况..原来想的可能存在一边相等,另一边比底下放好的小的情况...这样一层一层往上加箱子还可能存在就根楼梯那种情况..还要保存那条边是相等的.那条边是可以上的....今天自己看了下.原来根本就不存在这种情况,,只需要满足上边的箱子两条边都要比下边的箱子小就行了...<br /> 由于箱子是无限的..每个箱子可以有六种摆放的方法..可以看作6*n个方向固定的箱子..然后按照最长xx序列的方法做就可以了..<br />#incl
2011-04-28 22:41:00 665
原创 zoj 1095 丑数
<br /> 这个题看似容易但是也让我纠结了一下...最后还是借鉴别人的思路解决的问题...弱爆了...<br /> 如果一个数的质因数只有 2 5 3 7 那么它就是一个丑数..给你一个数n,让你找出第n个丑数..这个显然打表,但是刚开始我做的打表竟然也超时了....于是网上看的思路,分别给2 5 3 7 设置一个计数器.然后相乘,每次找出其中的最小值..并且用了那个就把那个+1,直到达到题目要求的最大值; 注意相乘之后要判断一下.以免出现 2*3=6 和3*2=6,造成重复.<br /> 然后就是输
2011-04-26 21:52:00 827
原创 zoj 1154
<br />#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int main(void){ int ncase,b,n; char num[100]; cin>>ncase; while(ncase--) { while(scanf("%d",&b)&&b) { scanf("%s",num); n = 0;int sum = 0
2011-04-26 16:05:00 567
原创 zoj 1089
<br />dfs<br />#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int num[14];int n;int count,a[7];void dfs(int i){ if(count==6) { //output(); for(int j=0;j<5;j++) printf("%d ",a[j]);; cout<<a[5]<<e
2011-04-26 15:04:00 477
原创 1090
<br /> 1482 过不了...不知道为啥...切道水题..给不在直线上的三个点的坐标..求外接圆的周长... 其实就是考公式呢..<br />#include <stdio.h>#include <string.h>#include <math.h>#include <iostream>#define PI 3.141592653589793using namespace std;int main(void){ double x1,x2,x3,y1,y2,y3;
2011-04-26 01:10:00 483
原创 zoj 2146
<br /> 简单广搜...set好用..恩.<br />#include <cstdio>#include <iostream>#include <queue>#include <set>using namespace std;struct paipai{ int num; int step;};queue<struct paipai>q;set<int> used;int a[5],b[5];int T,from,to; void ito
2011-04-21 20:14:00 480
原创 zoj 2229 贪心..
<br />注意最后那个输出即可,,,<br /> <br />/*贪心,骑车问题.. * * * */#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int main(void){ int n,speed;double time; double min; while(cin>>n) { if(!n) break; min = 999
2011-04-13 01:19:00 528
原创 zoj 2540 判断是否为正方形
<br />先排序,再判断即可..<br />#include <stdio.h>#include <algorithm>#include <stdlib.h>#include <math.h>#include<iostream>using namespace std;struct square{ int x; int y;}s[5];int cmp(square a,square b){ if(a.x==b.x) ret
2011-04-12 00:35:00 518
原创 zoj 1720 模拟
<br />简单模拟..没啥 说的..细节多.烦人..<br />#include <stdio.h>#include <iostream>using namespace std;int main(void){ // freopen("in","r",stdin); // freopen("out_my","w",stdout); int a[10]; while(cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]
2011-04-11 00:12:00 506
原创 zoj 2679 水题
<br />补全一个五位数,使这个数能够除尽它前边给你的数.<br />#include <stdio.h>#include<iostream>using namespace std;int main(void){ int T,x,y,z,n,flag; cin>>T; while(T--) { flag = 0; scanf("%d %d %d %d",&n,&x,&y,&z); int tmp
2011-04-10 21:32:00 519
原创 zoj 2271 Chance to Encounter a Girl
<br /> 这是大黄dp分类里边的。。概率dp。。。但是看完之后我决定硬搞。。。。<br />#include <cstdio>#include <cstring>#include <iostream>#define MAXN 102using namespace std;double tmp[MAXN][MAXN];double dp[MAXN][MAXN];double mpy[MAXN][MAXN];int n;void init(){ double
2011-04-08 00:09:00 720
原创 zoj 2545
<br /> 说的是随着计算机的发站。处理器的位数也在不断增加。。10年增加一倍。。现在给你了一种判断增长等级的办法,,让你用这种办法来判断这个数。。其实就是如果这个计算机的位数是32位那么找出一个n是n!小于2的32次方。其实可以把所有的都求出来之后交。<br />#include <stdio.h>int main(void){ int k[]={3,5,8,12,20,34,57,98,170,300,536,966,1754,3210,5910,10944,20366,3806
2011-04-07 20:39:00 503
原创 zoj 1204 dfs
这题是说的给你一组数,让你找出其中一个是另外的N个数之和(N>=2)。然后按照N的大小输出,,如果N相同。。按照字典序输出。。就是这个N相同按照字典序输出相当扯淡。。不按照字典序的很快就写好了。。但是按照字典序的输出就不会了。。本来搜索就学的不顺。。没办法,,当N相同的时候存到一个二维数组里边。。但是呢。。二维数组我又不会很快的给进行排序。。纠结死了。。没办法。。网上搜代码吧。。。最后找到一个代码。。哇!原来这样就好了阿。。重新了一个。。 我发现这个数据不试很全面。。如果里边有0的话,我的代码就过不了
2011-04-07 00:43:00 1051
原创 zoj 1101 额。。
<br /> 这个题的意思就是让你从一组数中挑出一个数,这个数满足三个其他的数相加之和。。。如果有多个这样的数,则输出最大的哪一个。。<br />好吧。。刚开始是用dfs做的。。但是无论怎么优化都是超时。。后来网上搜了一下。。发现大家都是用的暴搜。。囧。。没办法自己写一个。。从数组中任意挑出一个数然后让分别间两个数,之后剩余的值用二分在数组中搜。。。<br /> 好吧。。很快写完了代码。。这下不tle了。。陷入了wa了深渊。。。只好找别人的代码对拍,,发现也某有问题阿。。。后来才想到加入负数试试。。
2011-04-06 19:03:00 639
原创 zoj 1101 额。。
<br /> 这个题的意思就是让你从一组数中挑出一个数,这个数满足三个其他的数相加之和。。。如果有多个这样的数,则输出最大的哪一个。。<br />好吧。。刚开始是用dfs做的。。但是无论怎么优化都是超时。。后来网上搜了一下。。发现大家都是用的暴搜。。囧。。没办法自己写一个。。从数组中任意挑出一个数然后让分别间两个数,之后剩余的值用二分在数组中搜。。。<br /> 好吧。。很快写完了代码。。这下不tle了。。陷入了wa了深渊。。。只好找别人的代码对拍,,发现也某有问题阿。。。后来才想到加入负数试试。。
2011-04-06 19:03:00 468
原创 zoj 2061
<br /> 这个是大黄dp分类里边的..这是非dp做法..找出一个公式. (m+n)!*(m-n+1)/(m+1)<br />刚开始没有处理不能排队的情况..wa了几次..用dev写的代码..忘记去掉system了..re了两次<br />明天试试用dp写一个..<br />#include <stdio.h>#include <string.h>#define MAXN 10000#include <stdlib.h>int num[MAXN]={0};int main(voi
2011-04-05 01:52:00 491
原创 zoj 3432 神奇的位运算。。
<br />不得不说。。。这个真的很神奇。。又学会一招。<br />#include <stdio.h>#include <string.h>char str[8];char str1[8];int main(void){ int n; while (scanf("%d",&n)!=EOF) { int nn = n*2-2; getchar(); gets(str); for(int i=0;i<nn;i++) { //getchar(
2011-04-04 17:06:00 429
原创 zoj 11th programing contest
<br />c题。。给出一个人的年龄让你求出这个人有多少岁,水题不解释。。。倒是这个虚岁让我想起了那个笑话。哈哈!!<br />#include <stdio.h>#include <string.h>int main(void){ char shuxiang[][8] = { "Rabbit", "Tiger","Ox","Rat","Pig", "Dog","Rooster","Monkey","Ram","Horse","Snake","Dragon",}; int ncase
2011-04-03 16:19:00 665 1
原创 zoj 1091 广搜。
属于比较水的广搜。。第一个是自己写的队列。。第二个用的STL的队列。。#include #include #define MAXN 100000int xx[]={-2,-1,-2,-1,1,2,+1,+2};int yy[]={-1,-2,+1,+2,2,1,-2,-1};char tmp1[3],tmp2[3];int count;int visit[10][10];int i;struct lab{ int x; int y; int step;};
2011-04-03 01:31:00 470
原创 zoj 1711 dfs
<br /> 给出一个数,然后还有好几个数,让你求出来。怎么从后边的这些数相加得到给出的这个数。<br />/*dfs 仅仅找出答案比较容易,判重的话,可以把所有搜到的答案都存下来。然后判断输出。 * 这个是看到别人的方法。每次把这个结点和上一个叶子结点做比较。如果相同的,是相同解。就要省略掉。 * * */#include <stdio.h>#include <iostream>#include <string.h>using namespace std;#defi
2011-04-02 22:05:00 766
原创 zoj 2100 dfs
<br /> 写的有点艰难。。。<br />/* dfs 判断结束条件 * 1,已经播好。 * 2,石头 * 3,越界 * 4,全部播完。 * 播的种子其实可以看作石头。 * * */#include <stdio.h>#include <string.h>#include <iostream>#define MAX 1000int done;int n,m;int flag;using namespace
2011-04-01 23:58:00 618
原创 zoj 1457 dfs水题
<br />#include <stdio.h>#include <string.h>#include <math.h>int n;int vis[200];int isp[200];int a[200];int is_prime[20000];void dfs(int cur){ if(cur == n&& is_prime[a[0]+a[n-1]]) { for(int i=0;i<n-1;i++) printf("%d ",a[i]);
2011-04-01 22:45:00 477
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人