![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
scriptkids
a normal university student
展开
-
zoj 1797 python
<br />这个。。输入输出。。zoj上的只支持sys.stdin有点小麻烦。。<br />import sysdef readNum(): line = sys.stdin.readline() a = line.split() n = int (a[0]) return ndef gcd(x,y): if x<y: tmp=x x=y y=tmp if y==0:原创 2011-05-11 13:58:00 · 965 阅读 · 0 评论 -
zoj 1027 dp
<br /> 这个跟最长公共子序列差不多..每次都有三种情况(1,匹配,2,第一个用'-'代替,3第二个用'-'代替)....只能挑选一种(子问题独立)..然后让你选择...有点小郁闷刚开始想错的地方就是<br />注释的那点..总是弄反,其实举个例子就能推翻 <br />第一个序列 1 A-<br />第二个序列 2 BA <br />当假设这样匹配的时候,,匹配到第二个位置,显然dp[i][j]=dp[i][j-1]+map['-'][ b[j] ],刚开始想反了..然后它给的数据刚好一组过,一原创 2011-03-26 02:50:00 · 1110 阅读 · 1 评论 -
zoj 2401 dp
<br />赶紧睡觉,,明天马拉松.....要早起....五点半!!!!!也就高三的时候五点半起过吧...- -<br />懒得整理了..发现动态规划的边界真的很扯淡..很多都是好想好写,,不容易对.......... - - <br />#include <stdio.h>#include <string.h>#define MAX 404int main(void){ bool dp[MAX][MAX]; //第一个的第i个字母和第二个第j个字母能否都成i+j个 //dp[i][原创 2011-03-26 22:30:00 · 795 阅读 · 0 评论 -
zoj 1392
<br />import sys for L in sys.stdin: line=L.split() if line[0]=='ENDOFINPUT' and len(line)==1: break if line[0]=='START' and len(line)==1: continue if line[0]=='END' and len(line)==1: continue for i in原创 2011-05-15 01:06:00 · 610 阅读 · 0 评论 -
zoj 1970
<br />import sysfor line in sys.stdin: line=line.split() count = 0 for i in line[1]: if line[0][count]==i: count+=1 if count>=len(line[0]): break if count>=len(line[0]): pri原创 2011-05-16 10:35:00 · 676 阅读 · 0 评论 -
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 · 466 阅读 · 0 评论 -
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 · 610 阅读 · 0 评论 -
zoj 1711 dfs
<br /> 给出一个数,然后还有好几个数,让你求出来。怎么从后边的这些数相加得到给出的这个数。<br />/*dfs 仅仅找出答案比较容易,判重的话,可以把所有搜到的答案都存下来。然后判断输出。 * 这个是看到别人的方法。每次把这个结点和上一个叶子结点做比较。如果相同的,是相同解。就要省略掉。 * * */#include <stdio.h>#include <iostream>#include <string.h>using namespace std;#defi原创 2011-04-02 22:05:00 · 760 阅读 · 0 评论 -
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 · 463 阅读 · 0 评论 -
zoj 2191
<br /> 校园网到期了。。。。网通访问csdn 无限的400 。。所以这几天就没写blog<br />import sysfor line in sys.stdin: line=line.split() a=int(line[0]) b=int(line[1]) c=int(line[2]) print a-3*b+3*c,3*a-8*b+6*c,6*a-15*b+10*c<br />原创 2011-05-21 12:21:00 · 631 阅读 · 0 评论 -
zoj 2358 水题.
<br /> 好吧..0!=1,,我竟然忘了...看一个数能否被写成几个数的阶乘..刚开始看的时候不知道怎么做..后来写了几个数之后发现..<br />1!=1 2!=2 3!=6 4!=24 5 != 120 阶乘的增加速度是非常快的..几倍几倍的增加..而且一个数..如果它能够写成阶乘相加的形式.那么,其中必然有刚好比他小的第一个阶乘数..恩..这样递推下去就是一道水题.. 但是呢.写完之后wa了..让我疑惑是否正确了..网上搜了下..哦..原来0!=1..- -我竟然忘了...修改一下..AC<b原创 2011-03-28 23:07:00 · 903 阅读 · 0 评论 -
zoj 1109
<br />import sysD={}count=0for line in sys.stdin: line=line.split() #print line if len(line)==0: #print line count+=1 continue if count==0: #tmp='line[1]' D[line[1]]=line[0] #原创 2011-05-15 00:25:00 · 757 阅读 · 0 评论 -
zoj 1577
<br />超时数次。。终于900ms过了。。。<br />import sysimport mathdef GCD(x,y): if y==0: return x else: return GCD(y,x%y)for line in sys.stdin: line=line.split() count=0 n1=int(line[0]) n2=int(line[1]) if n1==n2:原创 2011-05-15 02:32:00 · 621 阅读 · 0 评论 -
zoj 1045 python
<br />import sysi=1L=[]tmp=0while i<500: i+=1 tmp=tmp+1.0/i L.append(tmp)for line in sys.stdin: n = line.split() if((float)(n[0])==0.00): break for i in range(480): if L[i]>(float)(n[0]): print i+1, break print "card(s原创 2011-05-11 13:59:00 · 668 阅读 · 0 评论 -
zoj 1745 有点YM 依然水水水
<br /> 水题,,但是做的很郁闷..先是在win下做的...发现竟然木装Dev cpp..囧死了..用codeblocks,然后发现..找不到GCC更囧..,我是多久木用过wn写代码了阿.....懒得管了,换到linux开始做..做好之后怎么提交都是wa...这个什么破玩意..我重写了三遍..纠结阿..<br /><br /><br />然后就是发现...linux下的abs()函数是在stdlib里边..原来一直以为无法使用math的问题解决了..<br /><br /><br />#includ原创 2011-03-21 18:03:00 · 688 阅读 · 0 评论 -
zoj 2744 DP做法
<br /> 这个题还是有点纠结...刚开始的时候超内存....后来把int 改为bool 不超内存了..改超时了... 这个看了半天觉的动态规划做法也没什么好优化的了(其实是我不会),,把那个初始化memset 挪到循环外边..每次手动只初始化已经改动了的数组的值..然后不超时了...改WA了..<br /> 纠结..后来发现是dp[i][j]写反了..更YM...本来是在自习室了看了三道题回来觉的一会儿就能A完的..这下到现在才两题..纠结..<br /><br /><br />看了排行..不晓得原创 2011-03-22 01:57:00 · 500 阅读 · 0 评论 -
用gcc编译c++
<br />这是写给自己看的..请忽略...<br />gcc -lstdc++<br /><br />原创 2011-03-21 23:38:00 · 378 阅读 · 0 评论 -
zoj 2704 dp
其实这个题显然是模拟桟的操作的..但是在写模拟之前.没有好好想想各种特殊情况,就导致了后来无数次的修改代码...最终没办法..把起始点都存了起来..答案是正确了..可是显然是要超时的...后来想阿,感觉这题用dp不是也能做么..就用了dp,,用dp之前,认真想了想各种情况..果真.只要分析的详细了..就能省好多事... 在算法课上把代码写了写..中途下课的时候赶紧跑回来敲了敲..ac了..下节课要开始了...上机组课去...恩赶紧上课去...#include #include #de原创 2011-03-24 15:38:00 · 721 阅读 · 0 评论 -
zoj 1738 dp
<br /> 这个,,,,这个..原来想错了..一直没做.. 今天看下..原来这样...<br />就写了<br />#include <stdio.h>#include <string.h>#include <math.h>#define MAX 300int max =32769;int s[MAX]={0};int dp[6][32769];int limit = 0;void init(){ for(limit=1;limit<20000;limit++)原创 2011-03-25 12:31:00 · 635 阅读 · 0 评论 -
zoj 2829 python
<br />import sysK=[]i=3def readNum(): l=sys.stdin.readline() l.split() return int(l[0])while True: if i%3==0 or i%5==0: K.append(i) i+=1 if len(K)>=100002: breakfor line in sys.stdin.readlines():原创 2011-05-11 23:37:00 · 979 阅读 · 0 评论 -
zoj 1295 python
<br /> 好吧。。才知道zoj的题目ac人数的排名是一页一页算的。。。这么水的题俺竟然木作。。<br />import sysl=sys.stdin.readline()k=l.split()n=int(k[0])for i in range(n): l=sys.stdin.readline() for j in range(len(l)): sys.stdout.write(l[len(l)-j-2])<br />用了分片的代码。<br />im原创 2011-05-12 01:15:00 · 573 阅读 · 0 评论 -
zoj 1025 python
<br /> 好吧。。才知道zoj的题目ac人数的排名是一页一页算的。。。这么水的题俺竟然木作。。<br />import sysl=sys.stdin.readline()k=l.split()n=int(k[0])for i in range(n): l=sys.stdin.readline() for j in range(len(l)): sys.stdout.write(l[len(l)-j-2])<br />用了分片的代码。<br />im原创 2011-05-12 01:16:00 · 604 阅读 · 0 评论 -
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 · 657 阅读 · 1 评论 -
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 · 424 阅读 · 0 评论 -
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 · 478 阅读 · 0 评论 -
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 · 558 阅读 · 0 评论 -
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 · 816 阅读 · 0 评论 -
zoj 1093 dp Monkey and Banana
<br /> 原来老早看了..觉得麻烦后来发现是自己想麻烦了..没有我想的那种情况..原来想的可能存在一边相等,另一边比底下放好的小的情况...这样一层一层往上加箱子还可能存在就根楼梯那种情况..还要保存那条边是相等的.那条边是可以上的....今天自己看了下.原来根本就不存在这种情况,,只需要满足上边的箱子两条边都要比下边的箱子小就行了...<br /> 由于箱子是无限的..每个箱子可以有六种摆放的方法..可以看作6*n个方向固定的箱子..然后按照最长xx序列的方法做就可以了..<br />#incl原创 2011-04-28 22:41:00 · 655 阅读 · 0 评论 -
zoj 2727 list the books
<br /> 水题。。不会函数重载。。写了三个cmp。。<br />#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;struct type { char name[105]; int year; int price;};int cmp1(struct type a,struct type b){ if(strcmp(a原创 2011-05-01 15:48:00 · 577 阅读 · 0 评论 -
zoj 1973 水题。。。
<br />#include <cstdio>#include <iostream>#include <cstring>#define MAXN 1005using namespace std;int main(void){ int n; double a[MAXN],b[MAXN]; while (cin>>n) { cout<<n<<" "; for(int i=0;i<n;i++) //cin>>a[i]>>b[i]; scanf("原创 2011-05-01 17:30:00 · 456 阅读 · 0 评论 -
zoj 3504 水题
<br />水题,,就是输入有点纠结。。。<br />#include <cstdio>#include <algorithm>#include <cstring>#include <cstdlib>#include <iostream>#include <cmath>using namespace std;#define MAXN 6000int judge(char *x,char *y){ int len = strlen(x); int cou原创 2011-05-03 20:07:00 · 769 阅读 · 0 评论 -
zoj 2443 水题。。。
某啥说的。。#include #include #include #include #include using namespace std;#define MAXN 105struct type{ char name[MAXN]; int time[MAXN]; int num[MAXN]; //在第几次解决了问题; int status[MAXN];};struct type duiwu[105];int count0;int main(原创 2011-05-04 00:47:00 · 504 阅读 · 0 评论 -
zoj 2433
<br /> 其实就是找出线段中最短的那一段,,不能在线段的两端找。。<br />#include <cstdio>#include <climits>#include <cstring>#include <iostream>using namespace std;int main(void){ int ncase,n; int a[51000]; while(cin>>ncase) { while(ncase--) { cin>>n;原创 2011-05-04 11:52:00 · 730 阅读 · 0 评论 -
zoj 2520
<br /> 额。。这个,有点纠结。。刚开始看错题了。。。纠结了半天。。郁闷阿。a了之后打表交了一道。。多次实验范围在前21;<br /> <br /> <br />#include <cstdio>#include <iostream>#include <cstring>#include <cmath>using namespace std;typedef struct label{int x,y;}type;int yinshu(int n){ int sum原创 2011-05-04 18:35:00 · 794 阅读 · 0 评论 -
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 · 466 阅读 · 0 评论 -
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 · 474 阅读 · 0 评论 -
zoj 3418
#include #include #include #include #include #define MAXN 300using namespace std;int judge(int n,int m){ int count = 0,tmp1,tmp2; while(n||m) { tmp1=n%2; n/=2; tmp2=m%2;原创 2011-06-05 16:35:00 · 663 阅读 · 0 评论 -
zoj 1101 额。。
<br /> 这个题的意思就是让你从一组数中挑出一个数,这个数满足三个其他的数相加之和。。。如果有多个这样的数,则输出最大的哪一个。。<br />好吧。。刚开始是用dfs做的。。但是无论怎么优化都是超时。。后来网上搜了一下。。发现大家都是用的暴搜。。囧。。没办法自己写一个。。从数组中任意挑出一个数然后让分别间两个数,之后剩余的值用二分在数组中搜。。。<br /> 好吧。。很快写完了代码。。这下不tle了。。陷入了wa了深渊。。。只好找别人的代码对拍,,发现也某有问题阿。。。后来才想到加入负数试试。。原创 2011-04-06 19:03:00 · 456 阅读 · 0 评论 -
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 · 493 阅读 · 0 评论 -
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 · 711 阅读 · 0 评论