自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (1)
  • 收藏
  • 关注

原创 poj解题报告——2014

题意,将矩形放到框里(框的最大宽度给出),放不下,就放下一行。注意这里不能旋转,这也就成为水题模拟题的原因,也不让求最大最小,就是模拟最终的状态。不能旋转,直接放。代码如下#includeint max(int a,int b){ return a>b?a:b;}void main(){ int m,w,h; int wnow=0,hnow=0,wmax=0,hmax=

2015-02-28 12:01:31 449

原创 poj解题报告——1914

这就是一道简单的线性代数问题,三阶矩阵求值。代码如下#include#include__int64 a[3][3],b[3],c[3][3];__int64 cal(){ return a[0][0]*(a[1][1]*a[2][2]-a[1][2]*a[2][1]) -a[0][1]*(a[1][0]*a[2][2]-a[1][2]*a[2][0]) +a[0][2

2015-02-27 15:17:49 409

原创 poj解题报告——1014

题意: 有分别价值为1,2,3,4,5,6的6种物品,输入6个数字,表示相应价值的物品的数量,问一下能不能将物品分成两份,是两份的总价值相等,其中一个物品不能切开,只能分给其中的某一方,当输入六个0是(即没有物品),这程序结束,总物品的总个数不超过20000代码如下#include#includeint a[7],sum,b[100],n;int dp[60001];void

2015-02-26 12:42:33 502

原创 poj解题报告——1088

思路:用一个二维数组arr来保存滑雪场地的地形图,再用另外一个二维数dp[i][j]来记录从图中某一个点的位置开始向四周延伸所能达到的最大深度。对于每一个点都从上下左右四个方向来搜索,如果有比当前点高度低的位置,那么就沿着个方向搜下去,依次再向其它方向搜索,最后比较四个方向上搜索到的深度取最大的然后+1后赋给当前位置的dp[i][j];公式就是dp[i][j]=max{dp[i-1][j],dp[

2015-02-25 11:49:15 411

原创 poj解题报告——3034

题意:在一个n*n的矩阵中,每个(x,y)坐标有个洞,在任意时刻(从上一时刻开始到目前时刻结束),任意位置可能会探出一个鼹鼠的头,如果用锤子打中即得一分,锤子活动的范围是以d(1=<d<=5)为半径的圆中可到达的坐标点,并且是直线移动,锤子可以移动到任意位置,同一时间同一 地点不可能出现两只鼹鼠,给出 鼹鼠这一局的出现方式,求出最多可以得多少分。     题解:动态规划,最优结果由子问题的

2015-02-24 14:38:17 499

原创 poj解题报告——1925

题意:给定n个塔的横坐标和高度,保证高度各不相同且横坐标递增,蜘蛛侠可以向一个塔射蛛丝然后荡到当前的相对位置,求最少要用多少次蛛丝。        分析:dp[i]代表着当他到x轴i的位置时最少摇摆了几次。因为每次摇摆他都到了关于被他蛛网固定的建筑的对称位置。那么他的高度在每次切换建筑目标时都是不变的。代码如下#include#include#includeint min(i

2015-02-23 08:44:57 525

原创 poj解题报告——2948

题意:一个row*col的矩阵,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是多少。如图,最北边有bloggium的收集站,最西边有 yeyenum 的收集站。现在要你在这些格子上面安装向北或者向西的传送带(每个格子自能装一种)。问最多能采到多少矿(yeyenum+bloggium)?   分析:每个格子只能向西或者向北,某个格子假如被选定向西,那么它所在

2015-02-22 11:45:04 490

原创 poj解题报告——2029

题目大意:给出w为宽,h为高的一个长方形,里面有n个点,给出每个点的坐标,最后给出s为宽,t为高的一个长方形,问用这个长方形最多可以围住多少个点。数据范围很小,可以直接计算map[i][j]记录从(1,1)到(i,j)的长方形中的点数。map[i][j] - map[i-t][j] - map[i][j-s] + map[i-t][j-s]得到一个端点为ij的小长方形,找出所有长方形的最大值。

2015-02-21 21:18:14 455

原创 poj解题报告——3280

题意:给你一串字符,通过添加删除其中的一部分,使其变成一个回文串,并且花费最小(添加删除都有权值)        分析:删除一个字符和添加一个字符是等价的,考虑最小即可,设dp[i][j]表示在区间i j范围内构成回文的最小花费,if 当前匹配的两个字符相等,str[i] == str[j] 那么dp[i][j] = dp[i+1][j-1];else则把左边添加删除一个右边的值   或者在右

2015-02-20 08:52:58 376

原创 poj解题报告——2528

题意:有一面墙,被等分为1千万份,一份的宽度为一个单位宽度。现在往墙上贴N张海报,每张海报的宽度是任意的,但是必定是单位宽度的整数倍,且        解法:线段树+离散化        有一条1到10的数轴(长度为9),给定4个区间[2,4] [3,6] [8,10] [6,9],覆盖关系就是后者覆盖前者,每个区间染色依次为 1 2 3 4。        现在我们抽取这4个区间的8

2015-02-18 16:55:00 456

原创 poj解题报告——1191

这题动态规划,太难了,参考了别人的思路,写了这份报告。        分析一下,根据题意,要求均方差ans = sqrt(Sum((x[i]-x的平均值)^2)/n),ans^2=Sum(x[i]*x[i])/n-(x的平均值)^2,而x的平均值是固定值(即所有方格数字的和/n),所以只要使得切割后的矩形的总分的平方和尽量小,由于切割只能沿着棋盘的边进行,故对于左上角坐标为[x1,y1],右下

2015-02-17 14:45:52 408

原创 poj解题报告——1850

这其实算是递推数学,组合只是占了一部分,先是打表了一个杨辉三角,通过字母排列的方式及个数再加和。代码如下#include#includeint c[27][27]={0};void playtable(){ int i,j; for(i=0;i<=26;i++) { for(j=0;j<=i;j++) { if(!j||i==j) c[i][j]=1

2015-02-16 13:33:07 383

原创 poj解题报告——1159

做这题的时候网上荡了个公式:最少需要补充的字母数=原序列S的长度—S和S'的最长公共子串长度//其中s'为s的逆序。不要问我为什么,我也不知道是为什么。大神们没说,我还要再想想。代码如下#include#includevoid main(){ char a[5005],b[5005]; int c[2][5005]; int n,i,j; scanf("%d",&n);

2015-02-15 12:27:13 469

原创 poj解题报告——1080

这种题目总是要先打表,再化归,dp问题,取最大。代码如下#include#include#define N 1005int dp[N][N];int score[200][200];int max(int a,int b){ return a>b?a:b;}void init() { score['A']['A']=score['C']['C']=score['G

2015-02-14 14:25:09 398

原创 poj解题报告——3176

这题是一个简单的dp问题,暴力求解。代码如下#includeint dp[352][352];int dat[352][352];int max(int x,int y){ return x>y?x:y;}void main(){ int i,j,n,t; scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=i;j+

2015-02-13 11:40:36 358

原创 poj解题报告——2533

这题是最长上升子序列,去年暑假集训的时候老师讲过这种题的算法,这回算是练练手吧。代码如下#includevoid main(){ int a[1005],b[1005],i,j,n,max; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); b[i]=1; } for(i=0;i<n;i++) {

2015-02-12 11:46:57 343

原创 poj解题报告——1260

本题四个着眼点      (1) 要求要买的珍珠的数量是一定的      (2)所买的珍珠的质量允许提高,但不允许下降      (3)输入时,后输入的珍珠价格一定比前面输入的要贵      (4) 由(2)(3)知,珍珠的替代必须是连续的,不能跳跃替代代码如下#include#includeint min(int x,int y){ return x<y?x:

2015-02-11 10:26:32 385

原创 poj解题报告——1836

这题要求最长上升子序列和最长下降子序列,除了最高的部分能出现等高,其他部分不行。代码如下#include#includevoid main(){ int n,i,j,result,m,up[1005],down[1005]; double a[1005]; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { sca

2015-02-10 16:00:03 351

原创 poj解题报告——3122

题意是要公平地把pie分给每一个人(就是所有人得到的pie尺寸一致,但是形状可以不同),而且每个人得到的那份pie必须是从同一个pie上得到的。        值得注意的是自己要算进去,也就是f+1,我WA了两次的原因是exp选太小了1e-12,其实1e-7就够了。代码如下#include#include#define Pi asin(1.0)*2#define exp 1e

2015-02-09 12:30:20 407

原创 poj解题报告——1905

这就是应该算是数学题,光是公式代换就用了好久,二分只是为了凑值用的。代码如下#include#include#includevoid main(){ double l,ll,right,left,mid,n,c; while(scanf("%lf%lf%lf",&l,&n,&c)!=EOF) { if(l<0&&n<0&&c<0)

2015-02-08 15:08:54 465

原创 poj解题报告——3258

题意:一些石头排成一条线,第一个和最后一个不能去掉,其余的共可以去掉m块,要使去掉后石头间距的最小值最大。        这种数学题理解起来真不容易,不过想好了算法就好做了。代码如下#include#includeint a[50005];int b[50005];int cmp(const void *a,const void *b){ return *(int *)

2015-02-07 12:21:49 376

原创 poj解题报告——3273

给出一个大小为N的数组,将其分为M块,让每块数字之和的最大值尽量小。右边界是将整个数组当做一块,那么最大值就是所有数字之和;左边界是将整个数组分成N块,那么和的最大值就是数组元素中的最大值。其实,当给出一个答案后,从数组首元素开始叠加,超出答案那么分块数加1,这么遍历一遍后,要是分块数小于M,说明答案给的大了,反之答案给小了。代码如下#include#include#defin

2015-02-06 11:11:36 400

原创 poj解题报告——1129

这题可以划归成四色原理的题目,着色问题其实就是一个简单的暴力深搜,化成0-1矩阵是我觉得比较好的方法。代码如下#include#include#define M 26int n,ans,color[M]; int map[M][M],isFind;int ok(int x,int c){ int i; for(i=0;i<n;i++) if(map[x][i]&&c

2015-02-05 14:03:27 456

原创 poj解题报告——2676

这题是数独游戏,直接暴力深搜吧代码如下#includeint sign;int num[9][9];void Input(){ int i,j; for(i=0;i<9;i++) for(j=0;j<9;j++) scanf("%1d",&num[i][j]);}void Output(){ int i,j;

2015-02-04 12:29:48 445

原创 poj解题报告——1416

题意:公司现在要发明一种新的碎纸机,要求新的碎纸机能够把纸条上的数字切成最接近而不超过target值。比如,target的值是50,而纸条上的数字是12346,应该把数字切成四部分,分别是1、2、34、6。因为这样所得到的和43 (= 1 + 2 + 34 + 6) 是所有可能中最接近而不超过50的。(比如1, 23, 4, 和6 就不可以,因为它们的和不如43接近50,而12, 34, 6也不可

2015-02-03 18:35:48 452

原创 poj解题报告——2531

题意:给定无向图,将顶点分成两个集合,使得两个集合间的所有边权最大。代码如下#includeint c[22][22],n,ans,set[22];void DFS(int id,int sum){    int i,t;    set[id]=1;    for(i=0;i    {        if(set[i]==1)           

2015-02-03 17:55:57 482

原创 poj解题报告——3349

2月1日第一题,也是我寒假第一题。        这题分类是用哈希表做,一开始我都不知道什么是哈希表,摸索了许久,参考了别人的代码,写下了这个。        题意:每个雪花都有六个分支,用六个整数代表,这六个整数是从任意一个分支开始,朝顺时针或逆时针方向遍历得到的。输入多个雪花,判断是否有形状一致的雪花存在。简单的数字哈希,每种雪花可以由多种数字组合表示。例如输入的是1 2 3 4 5

2015-02-01 11:12:32 384

cffi-1.4.1.tar.gz资源Linux版本

cffi-1.4.1.tar.gz资源Linux版本,主要方便各位开发人员的下载

2018-07-06

空空如也

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

TA关注的人

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