BOJ262 Channel Coding DP
摘要:题意:给一串数字,里面只包含0 -1 1三种数字。问和为0的最长连续子串。思路:遍历一遍,求每个i的sum[i],代表从第一个数字到这个数字的和。显然如果sum[i]=sum[j],则从i+1到j这j-i个数字的和=0。即次数所求的D=j-i-1。#include<iostream>
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
using namespace std;
const int N=50005;
int n;
int data[N];
int pos[N];
int neg[N];
int mx;
阅读全文
posted @
2011-12-15 19:18
不是我干的
阅读(142)
推荐(0)
BOJ1923 Hector的面试 I 贪心
摘要:题意:水晶数g,农民数目p,每个农民的造价c,起始状态金钱数m,游戏结束的秒数d。每秒每个农民可以制造g个水晶。制造农民不需要时间,任何时刻都行。思路:刚开始以为是dp。其实不然。每一秒内都有固定的p[i]、m[i]。i=0,1,2,3......d;任何时刻都可以生产农民。讨论对于第i秒内,可以生产农民数目为:x=0,1,2,3.....xmax.;(xmax=m[i-1]/c);显然是在第i秒初生产最好,这样再第i秒末就可以多出这一秒这个新农民生产的水晶。p[i]是第i秒末的人数,即上一秒的人数加上在这一秒初新造出的农民数,即p[i]=p[i-1]+x;m[i]是第i秒末的钱,m[i]=m
阅读全文
posted @
2011-12-01 20:13
不是我干的
阅读(132)
推荐(0)
BOJ1131 Crazy tea party 冒泡排序变形
摘要:题意:给一行数字,只能相邻的两个交换位置。为交换多少次之后能使得这行数字里的每个数的左右数字交换。(reverse)。注意!这行数是不是在一行里,是around the table ,即是一个环。思路:如果这个不是环的话,很显然,就是冒泡排序。1 2 3 4 5冒泡排序成5 4 3 2 1 交换次数是n*(n-1)/2。但是关键点也是蛋疼点就是这个是环:当时做的时候是写了不少数组都算看看,猜出蹊跷点。这里让我想到我一个获得过acm区域赛的金奖老乡给我说有次参加某校赛的时候,本来是没戏了,但是在最后一个小时的时候,猜了三道题的解法,都是自己设定出一些数组来猜想。没想到三道题都ac了。一下次就名次
阅读全文
posted @
2011-12-01 17:10
不是我干的
阅读(218)
推荐(0)
BOJ1293 小马过河 dp
摘要:题意:给一个矩阵。从上到下一样,(题目里说的是从下到上,但是其实一样)代码里面就是从上到下考虑。每一行到下一行都只有三个选择,左下,下,右下。所以转移方程为:dp[i][j]=min(dp[i-1][j-1],dp[i-1][j],dp[i-1][j+1])+w[i][j];因为dp还很不熟练。刚看到题目的时候其实第一反应是类似广搜的去模拟一下差不多,反正每一格只会影响下一行的三格。然后写的时候就注意到了其实就是dp。#include<iostream>
#define min(a,b) (a<b?a:b)
using namespace std;
const int N=1
阅读全文
posted @
2011-12-01 16:34
不是我干的
阅读(181)
推荐(0)
BOJ1499 合法食物链 floyd
摘要:题意:很好懂。其实就是大小关系,如果a>b ,b>c 如果再出现个c>a即不合法。思路:floyd传递闭包。floyd的典型应用了。floyd处理之后,如果mat[a][a]=true,即可说明出现了闭环。即不合法。#include<iostream>
using namespace std;
const int N=105;
int n,m;
bool mat[N][N];
void floyd()
{ for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) ...
阅读全文
posted @
2011-12-01 16:21
不是我干的
阅读(163)
推荐(0)
BOJ1509 海边 dijstra 最短路
摘要:题意:这题题目写得够坑的。前面一大串都是无关信息。其实很简单,就是在二维坐标里面给出若干个圆(阴影),给出起始点和终止点。问从起始点到终止点,怎么走可以使暴露在非阴影下的路径最短。输出最短路的值。思路:其实很简单,刚一看,设计到圆面积感觉比较有点蒙,其实圆可以当成点来处理,如果要进去某个圆。则朝着这个圆的圆心的直线方向走肯定是最短。所以就可以抽象成一个图。每个圆也是一个点。点与点的路径和圆半径有关,构图时候注意一下即可。然后dijstra算法。#include<iostream>
//#include<stdio.h>
#include<math.h>
//
阅读全文
posted @
2011-12-01 16:16
不是我干的
阅读(180)
推荐(0)
BOJ 1473 失落 按位异或
摘要:Description一组数字,本是两两相同,但由于某种意外,一个数字消失了,请你找出失落的那个数字吧。Input多组输入,以EOF结尾。对于每组输入,第一行为一个整数n(0<n<500000,且n为奇数),接下来n行,每行一个整数pi(0<pi<int_max)。Output对于每组输入,输出一行,包括一个整数,即失落的那个数。Sample Input532443Sample Output2Hint请注意内存限制!都说很水的题目,但是我觉得还是挺巧妙的,如果不熟悉异或的话不容易一下子想出来。0和任何数字异或,如果这些数字都是成对存在的,那到最后异或的结果肯定为0.所有
阅读全文
posted @
2011-11-03 09:12
不是我干的
阅读(221)
推荐(0)
BOJ 1501 多彩瓜 并查集
摘要:Descriptiondalong的舅舅最近到外地旅游时给dalong带回来一种神奇的水果:多彩瓜。这种瓜太漂亮了,它有很多层,每一层都是一种颜色。由于多彩瓜放久了会变坏,dalong决定每天吃一层,可是多彩瓜有好多层,每天吃一层的话还没吃完多彩瓜就坏了,因为多彩瓜颜色很多,dalong把一些很相近的颜色认为是同一种颜色,这样合并颜色后多彩瓜就没有原来这么多层了,dalong就可以在多彩瓜变坏之前吃完它喽~oh,yeah。现在dalong告诉你多彩瓜最初每一层的颜色,颜色之间的关系,你能帮助他算出吃完这些瓜要几天么?注意,如果dalong认为颜色a和颜色b是同一种颜色,颜色b和颜色c是同一种颜
阅读全文
posted @
2011-11-03 09:05
不是我干的
阅读(189)
推荐(0)