自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 收藏
  • 关注

原创 练习三 1014

概述:n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,求N条线可以将平面分成几部分。思路:做题的时候没有图,所以做起来一点思路也没有,只能上网Copy一个图了,顺便看了一下别人的思路。从图中可以看出,每增加一个节点,就增加4(n-1)+1个面,可得出递推公式f(n)=f(n-1)+4*(n-1)+1,根据数列的关系,可以递推出o(1)的公式。

2016-04-28 22:35:04 414

原创 练习三 1013

概述:有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?思路:这道题是去年某一次的C++作业,当时没有系统的学习动态规划,也不懂什么递归,做了很久,至今记忆犹新啊。感想:无。#includeusing namespace std;long long dp[50];int main(){ //ifs

2016-04-28 22:27:17 359

原创 练习三 1012

概述:在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数。思路:此题做法与1012完全相同,详情见1012。感想:有些题其实是相通的。#includeusing namespace std;long long dp[50];int main(){ //ifstream cin("aaa.txt"); int n; dp[1] = 1;

2016-04-28 22:24:25 330

原创 练习三 1010

概述:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?思路:对于两层楼梯,你可以选择一步跨上,也可以选择分两步跨上去,一共这两种方法,所以对于N层台阶,就有f(n)=f(n-1)+f(n-2).感想:无。#include using namespace std;int main(){ long long dp[45];

2016-04-28 22:21:45 465

原创 练习三 1006

概述:数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?思路:做这个题,有两种思路,一是自上而下(也是大多数人的做法),二是从下向上反推。因为塔顶只有一个元素,显然从下向上递归比较方便,因为都会递归到一个元素上。感想:要从多种解题方法中“寻找最优解”。#include#include#include#includeusing namespa

2016-04-28 22:18:05 536

原创 1009

概述:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线的转折次数不超过两次,那么这两个棋子就可以在棋盘上消去。并且,棋子不能在棋盘外面走,你要做的是,给你一盘棋,请你判断给定的两个棋是否能消除。思路:DFS,搜的过程要合理的“剪枝”,否则会超时,搜的时候,遇到不是同种的,或者都是0之类的可以直接PASS掉,以节约时间。感想:不是特别

2016-04-23 15:14:31 565

原创 1006

概述:给你两条直线和走在两条直线上的速度,以及横穿两条直线的速度,让你求出从一条直线的下端,到另一条直线上端所需要的最短时间思路:此题的本意是考察三分搜索,但是公式的确定也很重要。我们从一点开始,向上慢慢试即可。感想:算法和数学的关系真的很大!!#include#includedouble p,q,rr;struct Point{ double x,y;};dou

2016-04-23 14:44:28 405

原创 1026

概述:数独游戏,给你一个数独游戏盘,让你求解思路:把数字1-9填写到空格当中,并且使方格的每一行和每一列中都包含1-9这九个数字。同时还要保证,空格中用粗线划分成9个3x3的方格也同时包含1-9这九个数字。这样的话,很容易就联想到DFS搜索,所以,我们采取搜索,遇到“?”就尝试求解。感想:不是很难- =#include#include#include#include#inclu

2016-04-23 14:37:08 369

转载 1023

概述:输入8个数 表示 图中a b c d e f g h的位置的值只能为1-8的数 然后相邻的不能是连续的数 即绝对值不能为1  有些数是0 将为0的填成1-8中未使用的数有多少种方法  如果仅有一种 输出它   有多种输出 Not unique,没有输出No answer。思路:典型的DFS,思路比较单调,但是一一对应的关系比较复杂,这里我找到了一张网上的关系图,可供参考。

2016-04-19 08:27:16 424

原创 1015

概述:国际象棋中的马和中国象棋的马一样都是走 日,现给定马的初始位置,和另一个坐标,问马最少走几步可以到达终点。思路:典型的BFS问题,分析可知,马可以走八个方向,所以把这八个方向分别表示出来,并入队,然后从队列中抽取元素,再模拟出它的八个方向,再次入队,以此类推,每次取出元素的时候,也要做一下检验,只要与终点相吻合,就结束循环。感想:和上课讲的一模一样!!!#include #in

2016-04-12 15:17:03 523

转载 用Python写一个文本转HTML的脚本

在 实验楼 上看的,自己看了一下感觉用处很大,代码也不难懂,特分享一下。给定一个.txt文件,将其转换成HTML网页。我们先来编写代码:#!/usr/bin/python# encoding: utf-8#util.pydef lines(file): """ 生成器,在文本最后加一空行 """ for line in file: yield

2016-04-10 21:03:04 7637 2

原创 1020

概述:质数环问题,输入一n,求出从一开始,将[1:n+1]排列,并连成一个环,要求环任意两个元素的和为质数,列出所有的组合,思路:DFS问题,从1开始,找出下一个+1为质数的数,再以此类推,直到最后一个数,并且还要保证最后一个数加上1也是质数,如果中途出现无法继续找的情况,就将这次舍掉,从新找出下一个组合,直到将所有的组合遍历完为止。感想:难度大大的!!!!!#include#inc

2016-04-10 16:47:35 447

原创 1016

概述:Red and Black ,给出一个 W 乘 H 的矩阵,矩阵中有 . # @三种元素,你从@出发,可以上下左右走,只能走# ,问能经过的 # 的数量思路:DFS,从@ 开始,向上下左右四个方向分别递归,并再那四个方向的基础上再分出四个方向递归,以此类推,当遇到 不符合条件的点或者墙时,舍掉,最后,将所有的步数加到一起即可,感想:做这种题最重要的是找出递归的规律,并且还要找出排除的

2016-04-10 16:36:14 498

原创 利用爬虫抓取百度贴吧的图片

「近年来,百度贴吧已经成为一些同学生活中必不可少的一部分,利用空闲时间刷刷贴吧、看看帖子也成为一些人的日常。同学们经常会遇到这样一个问题,有一个图片帖,帖子中有大量自己喜欢的图片(如http://tieba.baidu.com/p/3242594565),于是便想把图图片保存到自己的电脑上以便以后之需,可是由于一个帖子中的图片实在太多(多达几百张),逐张保存非常耗费时间和精力,这时大家就希望有一种

2016-04-08 22:11:50 2059 2

原创 1017

概述:大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S思路:BFS求解,题目不难,但是十分的冗杂,做起来很费事,我参考了课件和其他人的代码才能写出来。感想:烦

2016-04-08 22:05:13 339

原创 1019

概述:非常经典的八皇后问题,输入皇后数,求解。思路:DFS。感想:有幸用C++写一次八皇后。#include#include#include#includeusing namespace std;const int MAX = 12;int queen[MAX];//棋盘int ans;//解的个数bool check(int x)//检查{ for (int i

2016-04-08 22:02:24 605

原创 1005

概述:一辆车要转弯,给出以下条件,问是否能转过弯。思路:要使汽车能转过此弯道,那么就是汽车的左边尽量贴着那个直角点,而汽车的右下后方的点尽量贴着最下面的边。感想:学好高中物理很重要。#include #include #include #include const double PI = 3

2016-04-08 21:16:32 353

原创 1024 & 1025

概述:给出一行数,求给定个数的递增子串。思路:DFS,没啥说的。感想:无。#include #include #include #include using namespace std;int n, p, len, Count;int num[1001];bool flag;struct Tem{ int n, pos;};Tem tem[1001];b

2016-04-08 21:08:38 745

原创 1004

概述:一支箭从原点以速度V发射,发射角任意,对于给定点(x,y),求这只箭能否射中该点,如果能射中,输出射中时的最小仰角,否则,输出-1.思路:如果射的箭能够达到点(x,y)且到达的角度最小,那么到达这个点的竖直方向上的速度必然是0,将速度分解为Vx和Vy,用x/Vx求出时间t,再用t求出Y,与y来比较,如果Y==y时,输出,求解的过程是一个二分的过程。感想:看来学好高中物理很重要。#

2016-04-08 21:02:11 678

原创 1013 & 1014

概述:楼梯可UP可DOWN,每个楼层上都标有一个数字X,每次只能UP或者DOWN X个单位,给定一个起始位置和一个终止位置,求起始位置到终止位置所需的最小步数。思路:DFS,没啥好说的。感想:无。#include #include #include using namespace std;const int MAX = 300;int f[MAX];bool visit[M

2016-04-05 22:06:38 600

原创 1011

非常经典的DFS题目。#include#include#includeusing namespace std;int m, n;const int MAX = 500;const int dir[8][2] = { { -1,0 },{ 1,0 },{ 0,1 },{ 0,-1 },{ -1,-1 },{ -1,1 },{ 1,-1 },{ 1,1 } };char chess[

2016-04-05 22:02:55 506

原创 1008

思路:最优就是按2^n-1猜#include#includeusing namespace std;int main(){ int sum,n; cin >> sum; while (sum--) { cin >> n; long long max = pow(2, n) - 1; cout << max << endl; } return 0;}

2016-04-05 21:58:18 398

原创 1003

概述:给出n个蛋糕的半径,还有m+1个人,每个人的馅饼必须是整块的,不能拼接,求最大的。思路:所以直接在最大那块的面积与0之间二分求即可。(注:PI的值要尽量精确)感想:有点难啊。#include #include #include const double PI = 3.14159265358979323849;const double P = 1e-6;using nam

2016-04-05 21:55:06 704

原创 1002

概述:给定一个函数 Z=f(x,y),单调性未知,给定y,求Z的最小值思路:对函数求导得到单调性,根据单调性确定取最小值时的条件。感受:做这道题的时候要学会转变思路,对于单调性不明的函数要求导。#include#include#includeusing namespace std;inline double f(double x, double y){ return 6 *

2016-04-05 21:50:00 440

原创 1001

概述:给定一个函数y=f(x),给定y的值,在1-100的范围内,求x的值。思路:二分搜索即可。感想:无。#include#include#includeusing namespace std;inline double f(double x){ return 8 * pow(x, 4) + 7 * pow(x, 3) + 2 * pow(x, 2) + 3 * x + 6

2016-04-05 21:45:38 604

原创 Problem H

水题,考察数位分离,和格式控制,没什么做的必要。#includeint main(){ int n; double d; int num; char h, MinA, MinB, SecA, SecB; scanf("%d", &n); scanf("%lf", &d); while (scanf("%d", &num) != EOF) { printf("%3d:

2016-03-24 21:53:00 347

原创 Problem F

概述:给定一个书的价格和各种面值的纸币个数,求买这本书需要的最小纸币数和最大纸币数。思路:最小数的求解思路是从面值大的开始贪心,直到花完钱为止,最大值运用转换思维,转化为总钱数减去书钱,求这些钱的最小值,即为所需纸币的最大值。感想: 以后要多学学转换思维。#include#include#include#includeusing namespace std;const int c

2016-03-24 21:51:05 566

原创 Problem N

概述:微软公司从第五个月开始每个月都会统计以本月为基准,前5个月的财报,财务只会盈利或亏空,并且所有的赢利月的盈利值都相等,所有的亏空月的亏空值都相等,并且每次财报都显示亏空,问,年总利润能否大于零,如果大于,输出可盈利的最大值,否则输出Default。思路:让被统计次数最多的月份亏空,其他月盈利,做一次假设,即00001 00001 00,再让被统计次数最多的前两名月份亏空,其他月盈利,再做

2016-03-21 11:46:06 498

原创 Problem M

概述:求n的几次方等于p思路:出题人的本意可能是想考察大数类,结果弄巧成拙,用Double型就能完全表示计算结果。感想:无。#include#include#include using namespace std;int main(){ //ifstream cin("aaa.txt"); double n; double s; while (cin >> n >>

2016-03-21 11:27:28 398

原创 Problem O

概述:m个车过河,一个船一次能载n个车,过一次河时长为t,求所有车渡河的最短时间(time)和船渡河的最小次数(sum)思路:将time和sum分开考虑。sum很简单,让每一船装满即可。对于time,在船装满的前提下,就判断渡船装满时的时间和装入的最后一辆车到达的时间比较。最后一次过河不用回来。感想:做了周一整整一个上午!!!!! What‘s the Fuck !!! #includ

2016-03-21 11:14:28 638

原创 Problem P

概述:有n天,第i天生产的费用是c[i],要生产y[i]个产品,可以用当天的也可以用以前的(多生产的)。每单位产品保存一天的费用是s。求最小费用。思路:显然贪心,每次查找之前有没有哪一天保存到现在的价值最小,然后比较更新。感想:题好难读啊!!!是时候学一波英语了。#include#include #include#includeusing namespace std;int

2016-03-20 19:25:40 508

原创 Problem K

概述:给你要求所需要的染料,最大只有50ML,也就是说,超过了50ML之后,就要再继续使用下一个Kit(工具箱),这个时候,可以根据最大需求的染料数量(ml为单位的),来进行规定所需要的染料桶的个数的最小值思路:按从大到小排列,每次将最大的三个进行减少1,这样就可以最后得到最大。感想:难度不大,但是很难读懂题目。#include#include#include#includeu

2016-03-20 18:59:56 404

原创 Problem D & Problem J

概述:一个字符用8位表示,给出一个字符串,求出这个字符串的所占的位和压缩后所占的位以及压缩比。思路:哈夫曼树问题,建立哈夫曼模型,求解即可。感想:这题真的好难好难,自己做根本做不出来,后来问了其他同学,才知道这是个哈夫曼树的典型例题,当时一听就蒙了,这是个什么东东??于是我查询了一下资料并且上网学习了一下才豁然开朗。。哎,学无止境。#include#include#include

2016-03-20 17:56:51 457

原创 Problem C

概述:田忌赛马问题,Tian(田忌)赢一局得200分,King赢一局得200分,求最后Tian的得分。思路:从Tian的角度出发,用自己的弱马,去抵消King的强马,一步步贪心,实现利益最大化。首先将Tian和King的马按照战力从大到小排列,从Tian战力最小的马开始挑战,如果King的马中有有其能战胜的马,就用它去战胜该马,并+200分,如果没有它能战胜的马,就用它去抵消掉King战力最强

2016-03-20 17:45:10 506

原创 Problem A

概述:一个走廊南北两排各有200个房间,最近,公司要做一次装修,需要在各个办公室之间搬运办公桌,由于走廊狭窄,办公桌都很大,走廊里一次只能通过一张办公桌。 合理安排,求出完成搬运的最短时间。思路:将房间号简化为走廊号,不重叠的区域可以并行搬运,重叠的区域需要串行搬运,模拟搬运过程,得出每个走廊号被使用的次数,次数的最大值就是就是最短时间。感想:本来这道题一直没有思路,老师上课讲了之后就

2016-03-20 17:43:36 558

原创 Problem B & Problem I

概述:加工零件,如果后一个零件的长度和重量大于前一个,则不计时间,求所用的最少时间。思路和感想:形如Problem E,思路十分相似。但是有一些细节性的问题需要仔细斟酌。#include#include#include#includeusing namespace std;struct Stick{ int length, weight; bool flag=0; boo

2016-03-14 22:02:07 436

原创 Problem R

概述:有一种6*6的箱子,有1*1, 2*2, 3*3, 4*4, 5*5, 6*6类型的货物,问给定的货物最少需要多少箱子才能全部装上。思路:1个6*6,5*5,4*4的货物占用1个箱子,4个3*3的货物占1个箱子,9个2*2的货物占1个箱子,36个1*1的货物占1个箱子.。先计算6,5,4的货物占用的箱子,在计算3占用的箱子,并记录下多余出的3,然后用3和4余出的空位填2,然后用所有的空位

2016-03-14 21:59:16 473

原创 Problem Q

概述:输入一串数,取中间值。思路:将串的大小记为n,按照升序排列,如果n为奇数,则取n/2的值,如果n为偶数,则取n/2和n/2-1的平均值。感想:读题的时候有点小困难,差点误解了题。#include#include#include#includeusing namespace std;int main(){ //ifstream cin("aaa.txt"); in

2016-03-14 21:44:34 572

原创 Problem G

概述:初始在0层,上一层需要6秒,下一层需要4秒,在每一层停靠5秒。思路:按部就班的计算即可。感想:相对于其他题来讲,很简单。#include#include#includeusing namespace std;int main(){ //ifstream cin("aaa.txt"); int n; vectorv; int floor,sum; while

2016-03-14 21:36:49 495

原创 Problem E

概述:输入若干个节目的起始时间,选出能完整观看的节目的最大数。思路:贪心算法问题,解题的关键是在有限的时间内安排尽量多的节目。所以将节目按开始的时间排序,然后遍历所有节目,将前一个的结束时间与下一个节目开始时间冲突的节目排除,随后统计结果。感想:第一个AC的题,非常简单。#include#include#include#includeusing namespace std;s

2016-03-14 21:23:50 537

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除