上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 38 下一页
摘要: http://codeforces.com/problemset/problem/216/C题意:在Berland法律规定每个工人的工作是这样的:它必须连续工作n天,然后休息m天,然后才能继续工作n天休息m天也即他的工作时间为[x, x + 1, ..., x + n - 1],[x + m + n, x + m + n + 1, ..., x + m + 2n - 1]Vitaly的工场必须保证每天有k个工人,而且还要保证在第n天时,有员工能够接任工厂钥匙。Vitaly想尽量少的雇用工人,以减少花费。求他最少雇用员工的个数以及他们分别在第几天雇用。思路:自己开了虚拟比赛做的题目,好不容易把A 阅读全文
posted @ 2012-10-25 19:17 E_star 阅读(273) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/216/B题意:有n个人,要求你将他们平均分成两组进行球赛。给出m个敌对关系,每个人最多有两个敌对的人,属于敌对关系的两个人不能分到同一小组里面。输出不能被分到两个小组最少人数。思路:和poj的食物链题目类似,这里利用并查集的长度记录关系,每出现一个敌对关系就将他们合并。距离为0表示可以属于同一组,1表示是敌对关系。当出现的两个敌对关系在之前已经确定为同类关系,必然将其剔除。记录剔除的个数,最后检查剔除这些人之后的人数是偶数。View Code #include <iostream>#include 阅读全文
posted @ 2012-10-25 18:18 E_star 阅读(392) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/4/C题意:一个注册系统,给出n个注册的名字,每次检查数据库中是否存在该名字,如果不存在返回OK,加入数据库,否如果存在在该名字后边加1,2,3,,,....然后加入数据库。思路:暴力存储查询可过,用字典数存处名字可过,哈希存储查找可过。暴力:View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#incl 阅读全文
posted @ 2012-10-24 19:03 E_star 阅读(218) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/232/A题意:给你一个数k,用n个点画出k个长度为3的环,然后输出n的个数以及图的矩阵表示,mat[i][j] = 0表示无边 1表示有边。思路:如果存在n点的话,则最多能够组合出的长度为3的环有c(n,3)个,当然这些特定的数,不能把k,全部表示出来,我们首先找出C(i,3)<=k的最大的i,然后不断往里面添加点,当我们添加一个点之后,我们可以从已有的图形里面的i个点里面选出2两个与刚加入的节点构成三元环,就这样枚举直到满足k个。View Code #include <iostream>#i 阅读全文
posted @ 2012-10-24 12:12 E_star 阅读(261) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/233/B题意:x2 + s(x)·x - n = 0, 给出n的值,求x的值,这里s(x)表示x各位数字的和。思路:才开始我错误的认为x^2 + s(x)*x 是一个单调递增函数,于是分析x<10^9然后二分枚举log(10^9)即可,结果写完后样例都没过。原来这个函数不是单调函数10 = 110 9 = 162 所以非单调。一时蒙了。还是做的数学题目比较少吧,思路还不够开阔。这里我能够得到x<10^9那么s(x)< 10*9 = 90 我们只要枚举s(x) 然后得到一个普通的一元二 阅读全文
posted @ 2012-10-24 10:57 E_star 阅读(494) 评论(1) 推荐(0) 编辑
摘要: http://codeforces.com/problemset/problem/91/B题意:给你n个数,求得i 到n中小于a[i]的最右边的a[j],然后求a[i]到a[j]之间包含了多少个数。思路:首先自己在做这道题的时候没有认真读题,直接把题意搞成求得i 到n中小于a[i]的最右边的a[j],然后求a[i]到a[j]之间包含了多少个小于a[i]的数了。。。结果样例都没过。唉自己还是太粗心,一定要认真把题意搞清楚,然后把想法想好了再敲。不过也算是做了另一道题目吧。首先我的思路,好像比较复杂。 我们利用线段树维护小于a[i]的区间[1,a[i]]的最大坐标值,当然要将数列离散话,因为a[i 阅读全文
posted @ 2012-10-23 21:10 E_star 阅读(237) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/contest/236/problem/B题意:给定a,b,c三个数,d(i)表示i的因子的个数,求思路:任何一个数a都可以分解为素因子的乘积 a = p1^n1*p2^n2*p3^n3......然后他的因子的个数就为ans = (n1 + 1) * (n2 + 1)*(n3 + 1)....时间复杂度为O(n^3*x)这个x是多少真不知道怎么想,。还有一种方法是直接枚举1-100作为因子所能组成的数,每次组成该数就+1。最后直接的结果求和即可。View Code #include <iostream>#include <cstd 阅读全文
posted @ 2012-10-22 21:28 E_star 阅读(326) 评论(0) 推荐(1) 编辑
摘要: pku 1463Strategic gamehttp://poj.org/problem?id=1463题意:给定一个树,求在节点上放士兵来检查所有的线路。当i节点有士兵的时候,与i节点相连接的线路都可以被检测了。求所需的最少的士兵。思路:dp[i][0]表示i节点不放士兵,dp[i][1]表示i节点放士兵,dp[i][0] += dp[j][1] j是i的子节点 若果i节点未放士兵,则它的子节点必须放士兵dp[i][1] += min(dp[j][0],dp[j][1]) j是i的子节点 若i节点放了士兵,则它的子节点可放可不放。View Code #include <iostream 阅读全文
posted @ 2012-10-13 17:32 E_star 阅读(326) 评论(0) 推荐(0) 编辑
摘要: hdu 1712 ACboy needs your help 分组背包入门题目http://acm.hdu.edu.cn/showproblem.php?pid=1712题意:acboy今年有n门课程,给出每门课程他授课多少天能获得的利润,w[i][j]表示第i个课程他如果授课j天可获得的利润,求在m天内它能够获得最大利润。思路:每门课程看做一个分组,每门课程对应着m个物品可选,直接套用分组背包即可。View Code #include <iostream>#include <cstdio>#include <cstring>#include <alg 阅读全文
posted @ 2012-10-12 20:11 E_star 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 输入:可以从文件中输入,也可以从控制台输入。View Code import java.io.BufferedInputStream;import java.io.File;import java.util.Scanner;public class Demo { public static void main(String[] args) throws Exception { Scanner cin = null; cin = new Scanner(new File("data.in"));// 从文件读取 // cin = new Scann... 阅读全文
posted @ 2012-10-12 15:40 E_star 阅读(190) 评论(0) 推荐(0) 编辑
摘要: pku 1276Cash Machinehttp://poj.org/problem?id=1276题意:自动取款机里面的最大存钱量为cash,现在有n种不同价值的纸币,每个都有一定的数量,问这些纸币能够组合出来的小于等于cash的最大值。思路:典型的多重背包,转换01思想的做法TLE,只能用二进制倍增优化。View Code #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <qu 阅读全文
posted @ 2012-10-10 19:15 E_star 阅读(845) 评论(0) 推荐(0) 编辑
摘要: pku 1384 Piggy-Bank 完全背包入门题目。http://poj.org/problem?id=1384这里只是求的恰好装满,且是最小罢了。在恰好装满时只要给f[0] = 0; 其他的一个未定义状态负无穷正无穷即可。View Code #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include &l 阅读全文
posted @ 2012-10-10 09:55 E_star 阅读(297) 评论(0) 推荐(0) 编辑
摘要: pku 3624Charm Bracelethttp://poj.org/problem?id=3624最裸的01背包。View Code #include <cstdio>#include <cstring>#include <iostream>#define CL(a,num) memset((a),(num),(sizeof(a)))#define N 3405#define M 12888using namespace std;int c[N],w[N];int f[M];int main(){ int i,j; int n,m; scanf(&qu 阅读全文
posted @ 2012-10-07 22:19 E_star 阅读(1103) 评论(0) 推荐(0) 编辑
摘要: hdu 1028 Ignatius and the Princess III 母函数模板题http://acm.hdu.edu.cn/showproblem.php?pid=1028题意:整数的拆分。母函数学习http://www.wutianqi.com/?p=596View Code #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include < 阅读全文
posted @ 2012-10-06 19:51 E_star 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 普通的并查集:pku 1308Is It A Tree?http://poj.org/problem?id=1308判断点的关系是否满足是一棵树,这里考察细节,注意:1:空的也是树;2:注意可能形成森林,森林就不是所描述的树了View Code #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include < 阅读全文
posted @ 2012-10-05 19:32 E_star 阅读(1140) 评论(0) 推荐(1) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3473、题意:给定一个长度为n的序列,求区间[l,r]内的一个点值为x,使得最小。思路:很多解题报告都说找出区间[l,r]的中位数即可,可是我百度了一下中位数,他的定义是这样的:当变量值的项数N为奇数时,处于中间位置的变量值即为中位数;当N为偶数时,中位数则为处于中间位置的2个变量值的平均数,也即当N为偶数时,中位数就不一定属于该序列了。所以这里不是求得中位数。而是当N为奇数时得到中位数k,偶数时N/2(k)位置的那个数,也即这里保证x来自该序列。然后利用划分树求出区间[l,r]中小于k的个数以及他们的和,然 阅读全文
posted @ 2012-10-05 18:40 E_star 阅读(320) 评论(0) 推荐(0) 编辑
摘要: PKU 1151 && hdu1542 Atlantis 矩形面积并http://poj.org/problem?id=1151题意:给出n个矩形,每个矩形给出左下角坐标,右上角坐标。然后求矩形并的总面积;思路:浮点数先要离散化;然后把矩形分成两条边,上边和下边,对横轴建树,然后从下到上扫描上去,用cnt表示该区间下边比上边多几个,sum代表该区间内被覆盖的线段的长度总和这里线段树的一个结点并非是线段的一个端点,而是该端点和下一个端点间的线段,所以题目中r+1,r-1的地方可以自己好好的琢磨一下;这里点到线段的转化不好理解:我们的线段树的叶子节点表示的是线段,座椅如果我们求1到 阅读全文
posted @ 2012-09-28 21:18 E_star 阅读(327) 评论(0) 推荐(0) 编辑
摘要: http://www.notonlysuccess.com/index.php/divide-tree/http://blog.sina.com.cn/s/blog_5f5353cc0100ki2e.html以上为两个不错的讲解:struct node{ int l,r; int mid(){ return (l + r)>>1; }}tt[N<<2];int toLeft[20][N];int val[20][N],sorted[N];int n,q;void build(int l,int r,int rt,int d){ int i; tt[r... 阅读全文
posted @ 2012-09-26 10:47 E_star 阅读(309) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4417题意:给定一个长度为n的序列,求区间[L,R]中小于h的个数;思路:分三种情况:1:如果该区间最小值都大于h输出0;2:如果该区间最大值小于等于h输出区间长度:3:否则,二分枚举该区间的第m大,直到找到第m大为最后一个小于等于h的;View Code #include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include 阅读全文
posted @ 2012-09-26 10:45 E_star 阅读(261) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2104http://acm.hdu.edu.cn/showproblem.php?pid=2665题意:给定一个长度为n的序列,求一个区间[L,R]内第K大的数;思路:划分树模板题。给出个人感觉讲解比较好的连接:http://blog.sina.com.cn/s/blog_5f5353cc0100ki2e.htmlhttp://www.notonlysuccess.com/index.php/divide-tree/pkupoj2761一样的题目:个人理解:划分树就是按层划分区间,以排好序的mid为基准进行划分。建好树之后关键在于询问,我们 阅读全文
posted @ 2012-09-26 09:45 E_star 阅读(304) 评论(0) 推荐(0) 编辑
上一页 1 ··· 19 20 21 22 23 24 25 26 27 ··· 38 下一页