2011年12月24日
摘要: 题目描述给定一个正整数(<=255位),从中删去n位后,使得剩下的数字组成的新数最小。输入格式第一行,要处理的正整数第二行,一个整数n (n<255)输出格式仅一行,组成的最小的新数代码实现:—————————————————————————————————————————————————#include<iostream>using namespace std;int a[257],n,l;void dfs(int i){ int j; for(j=i+1;j<=l;j++) if(a[j]!=-1) break; if(a[j]>=a[i]) dfs(j 阅读全文
posted @ 2011-12-24 20:46 怡红公子 阅读(249) 评论(0) 推荐(0) 编辑
  2011年12月21日
摘要: 题目描述背景:雅礼中学信息组那英俊潇洒风流倜傥身高五尺玉树临风的汪老师要结婚的消息,如一重磅炸弹在众人耳旁炸响。但他的学生们却早已在阴影中悄悄策划了一个天大的阴谋….. 话说汪老师正喜气洋洋的在婚礼上傻笑,突然从门外冲进了N个他的学生:zhangrunzhou、yiming94、jimmyandhxm、pc、zw7840、行云流水、chensqi……大牛们每人手中都拿着一个臭不可闻的鸡蛋,向汪老师掷去。幸好英明神武的汪老师早就安排了间谍(yiming94),于是他老人家不慌不忙地从身后拿出N个刚从地摊上买来的盾牌,以防护学生扔来的臭鸡蛋。但因为各人的力量不同,且汪老师盾牌的质量也不同(谁叫他贪 阅读全文
posted @ 2011-12-21 21:32 怡红公子 阅读(306) 评论(0) 推荐(1) 编辑
摘要: 题目描述每一本正式出版的图书都有一个ISBN号码之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版设,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在该出版社的编号;最后一位为识别码。识别码计算方法如下:首位数字乘以1加上次位数字乘以2……以此类推,所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字 阅读全文
posted @ 2011-12-21 17:19 怡红公子 阅读(615) 评论(0) 推荐(0) 编辑
  2011年12月20日
摘要: 题目描述笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。输入格式输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。输出格式输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”; 阅读全文
posted @ 2011-12-20 23:54 怡红公子 阅读(311) 评论(0) 推荐(1) 编辑
  2011年12月19日
摘要: 我是菜鸟,只会学习DFS算法,就是DFS算法我也学了好长时间。#include<iostream>#include <iomanip>#define n 8using namespace std;int a[n+1],total=0,l;int cheak(int i){ int k; for(k=1;k<i;k++) if(abs(a[i]-a[k])==abs(i-k)||a[i]==a[k]) return 0; return 1; }void dfs(int i){ int j; if(i==n+1) {cout<<"第"& 阅读全文
posted @ 2011-12-19 00:46 怡红公子 阅读(297) 评论(0) 推荐(1) 编辑
  2011年12月17日
摘要: 题目描述京京接受了一个用染色法测定平面内分子团数量的工作。已知没有分子的位置用0表示。被染色的部分根据其染色深度用1~9表示。由于这些分子具有特殊性,它的延展方向在平面内只有前、后、左、右4个方向。在延伸方向上相互接触的分子构成一个分子团。在一个M×N的矩形区域内,请你帮他统计出分子团的数量(X)。输入格式第一行 M N (2<=[M,N]<=100)第二行 N个0~9之间的数字……第M+1行 N个0~9之间的数字输出格式X分析:———————————————————————————————————————————————————做的题目太少了,这种题是第一次做,竟花了我 阅读全文
posted @ 2011-12-17 21:17 怡红公子 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 题目描述已知一个数列a1,a2,a3,a4...an.求有多少个逆序三元组。逆序三元组:d1,d2,d3,1.d1>d2>d32.在数组中的下标p1,p2,p3;p1>p2>p3;(n<=2500 ai<=2^31)输入格式第一行是n第二行是n个数输出格式多少个逆序三元组。(结果小于2^61)分析:———————————————————————————————————————————————————题意虽较紊乱,但还是可以看懂的,主要是叫我们求一列数中有多少个单调递减的三元组。我已开始用的时DFS,但可以确定的是一定会超时,事实是只过了5的点,经tld大牛的 阅读全文
posted @ 2011-12-17 19:47 怡红公子 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 题目描述为了增加顾客,Sally的店铺决定提供免费午餐,顿时门庭若市,但是不久Sally的原材料不足了….因此Sally决定公布一项决定:凡是来本店吃免费午餐的,一天吃能吃一次,吃的数量必须比上一次吃的少, 点的必须在上一次后面,且免费午餐将只有N个种类任君选择,为了能吃到最多的免费午餐,你将如何安排每日吃的数量呢?输入格式第一行一个数N,表示免费午餐的种类(0<=N<=100000)第二行N个数,表示每个免费午餐的数量(0<=数量<=100000)输出格式一个数,表示最多能吃多少天.分析:典型的DP,但朴素的DP已不能满足该题的数据,因此就用到了刚才写的求最大不降序列 阅读全文
posted @ 2011-12-17 18:32 怡红公子 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 刚学习的新方法,求最长不下降子序列是DP等经典问题,本来O(n*n)的算法已经是够强了,但还存在O(n*logn)的算法。~\(≧▽≦)/~。分析如下:O(nlogn)的算法关键是它建立了一个数组c[],c[i]表示长度为i的不下降序列中结尾元素的最小值,用K表示数组目前的长度,算法完成后K的值即为最长不下降子序列的长度。 具体点来讲: 设当前的以求出的长度为K,则判断a[i]和c[k]: 1.如果a[i]>=c[k],即a[i]大于长度为K的序列中的最后一个元素,这样就可以使序列的长度增加1,即K=K+1,然后现在的c[k]=a[i]; 2.如果a[i]<c[k],那么就在c[1 阅读全文
posted @ 2011-12-17 18:25 怡红公子 阅读(1513) 评论(0) 推荐(1) 编辑
  2011年12月16日
摘要: 题目描述猩猩来到一个点(1,1),想吃右下角(N,N)的香蕉,规定只能往下走或者往右走,试问有多少种走法?输入格式第一行为一个整数N(N<=20)以下是一个N*N的正方形表示迷宫输出格式仅有一个数,表示路径总数,如果走不通,则输出0题解:———————————————————————————————————————————————————本题有两种解法,第一种就是dfs,但我以身试法,有一个点不能过,超时!但对于新手来说,这种方法是不得不掌握的。DFS代码实现:#include<iostream>using namespace std;int total=0,n,map[21 阅读全文
posted @ 2011-12-16 23:00 怡红公子 阅读(365) 评论(0) 推荐(1) 编辑