上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 38 下一页
摘要: 题意:给你5维的n个点的坐标,求其中两点之间曼哈顿距离最大。思路:多维曼哈顿距离的模板题目|x1-x'1|+|x2-x'2|+... ...+|xm-x'm| 去掉绝对值后x,x'分别都有2^m种状态,枚举每种状态下的最大值和最下值,然后找出差值最大的即可。#include <iostream>#include <cstdio>#include <cmath>#include <vector>#include <cstring>#include <algorithm>#include < 阅读全文
posted @ 2013-06-02 20:07 E_star 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n个地点的位置,他们是从小到大的顺序,然后每个位置都会有m个飞船,每个飞船能够传送一定的距离,如果使用该飞船会消耗掉一定的IQ,问如果一个人从1号位置开始选择飞船到达n号位置,最少的IQ花费是多少?思路:对于i位置与i+1位置,我们只要找出m个飞船中传送距离ds大于x[i + 1] - x[i]的花费IQ最少的即可。可是如何维护大于x[i + 1] - x[i]这个区间的里面最小的IQ消耗呢? 首先将相邻两点的距离求出来,然后从大到小排序,然后将m个飞船的创送距离从大到小排序,然后每次枚举到相邻两点之间的距离时,然后检查没有放入优先队列的可能比当前点的距离大的飞船,然后放进去,这样就 阅读全文
posted @ 2013-06-02 18:41 E_star 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个n个点,m条有向边的图,然后给你k个操作,每次把第i个边改变成无向边。然后求该图的强连通块里面点数最多的值思路:首先bfs求出每个点可达的边,然后tarjan求出强连通块。每次改变边时,如果这条边的两个端点在同一连通块(u,v),直接输出最多。如果不在同一连通块,首先加上这两个连通块的个数组成新的连通块,然后枚举i u->i ,i>v满足,然后i不属于u或者v的连通块,然后加上该连通块数量即可。#include <iostream>#include <cstdio>#include <cmath>#include <vecto 阅读全文
posted @ 2013-06-01 23:47 E_star 阅读(376) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3874题意:给你n个数,然后给出m个的询问[l,r]问[l,r]中不同的数的和为多少?思路:单纯只考虑不同数的和的话,可能该数在之前出现过,后边又出现了,但是所求的区间不包括前边那个数,那么这个数就要被加进来。关键是如何维护该区间不包含重复计算同一个数。首先我们离线处理所有询问,然后按r排序,然后遍历一边处理那些还没被加进线段树的数,如果他之前出现过了,那么就将之前的删除,然后再吧后边的加进来,这样既能保证同一个数只被计算的一次了,而且不影响后边的询问。这里关键是按r排序之后的处理:#include < 阅读全文
posted @ 2013-05-31 17:00 E_star 阅读(245) 评论(0) 推荐(0) 编辑
摘要: bfs+位压缩:hdu 1429http://acm.hdu.edu.cn/showproblem.php?pid=1429中文题目:思路:bfs+位压缩#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define CL(arr, val) memset(arr, val, sizeof(arr))#define lc l,m,rt> 1#define Min(x, y) (x) a. 阅读全文
posted @ 2013-05-30 13:49 E_star 阅读(279) 评论(0) 推荐(0) 编辑
摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5018题意:有n个学生要选出班长编号从1到n,1号人比较虚荣,想自己当班长,每个人都可以投一票给自己心目中的人但不能投给自己,只要谁的票数最高谁就可以当班长。给出每个人心目中的投票人,以及贿赂每个人所需要的糖果,(只要你给了那个人一定数目的糖果他就会支持你) 。问1号如果当班长的话,最少需要的糖果数。思路:由于这里的n比较小,我们只要枚举1当班长时的得票数x,然后再将其他人的得票数大于x的变为x-1 (减少的给1并且减少的肯定是所需糖果树最少的),然后检查最后1的得票数,如果 阅读全文
posted @ 2013-05-17 21:32 E_star 阅读(673) 评论(0) 推荐(0) 编辑
摘要: 勾股数又名毕氏三元数凡是可以构成一个直角三角形三边的一组正整数,称之为勾股数。编辑本段常用套路简介所谓勾股数,一般是指能够构成直角三角形三条边的三个正整数(a,b,c)。即a2+b2=c2,a,b,c∈N又由于,任何一个勾股数组(a,b,c)内的三个数同时乘以一个整数n得到的新数组(na,nb,nc)仍然是勾股数,所以一般我们想找的是a,b,c互质的勾股数组。关于这样的数组,比较常用也比较实用的套路有以下两种:第一套路当a为大于1的奇数2n+1时,b=2n^2+2n, c=2n^2+2n+1。实际上就是把a的平方数拆成两个连续自然数,例如:n=1时(a,b,c)=(3,4,5)n=2时(a,b 阅读全文
posted @ 2013-05-14 09:57 E_star 阅读(1212) 评论(0) 推荐(0) 编辑
摘要: A:给出a,b,c a<= b<=c <=n 求满足a^2 + b^2 = c^2 的个数。 直接暴力枚举过的。。来个优化的假设直角三角形三边为a,b,c; 则a = 2*m*n, b = m*m - n*n, c =m*m + n*n;这样我们只要枚举m,然后再枚举n, 就好了int gcd(int a,int b){ if(a%b == 0) return b; a = a%b; return gcd(b,a);}int main(){ int n; cin>>n; int top = sqrt(1.0*n); int ans = ... 阅读全文
posted @ 2013-05-14 08:26 E_star 阅读(426) 评论(0) 推荐(0) 编辑
摘要: hdu 3634City Planning题意:给出n个矩形的左下角左边(x1,y1)以及右上角的坐标(x2,y2)以及每个矩形的单位面积所具有的的价值,求如何安排矩形的放置顺序是的总价值最大,输出总价值。思路:首先,这些矩形会有重叠的部分,重叠的部分肯定取val值最大的,所以我们首先按照每个矩形的val值排序,然后然后利用当前的矩形去切割前边切割出来的矩形,重叠部分肯定取当前的矩形的val计算,最后求切割出来的矩形的总价值即可。View Code #include <iostream>#include <cstdio>#include <cmath>#in 阅读全文
posted @ 2013-05-10 17:30 E_star 阅读(552) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个龙珠,分别存放在编号为1-n的城市里面。然后进行如下操作,T,a,b将a龙珠所在城市的所有龙珠都转移到b龙珠所在的城市,Q,a输出a龙珠所在的城市,以及该城市一共有多少个龙珠,同时输出该龙珠被转移的次数,思路:并查集,前两项比较好像,后一项记录转移次数,我们只需要记录每一个点到达父节点所需的转移次数no[i]然后再路径压缩的时候求一个和,压缩完成后该点的no值就是该点的转移次数了。View Code #include <iostream>#include <cstdio>#include <cmath>#include <vector> 阅读全文
posted @ 2013-05-10 08:50 E_star 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个人玩老鹰捉小鸡游戏,每个人都像当老鹰,于是他们决定投票选举,每个人都有一票,不可以投自己。票具有传递性假设A投给了B,B有又给了C则C就会得到两票。求得到票数最多的票数及每个人的编号(0-n-1)思路:其实划一划图就会发现,每个人得到的票数即为能够到达该点点数,中间可能存在环。如果五环的话,我们只要倒着建图,然后找出入度为0的点,搜索他能到达的点的个数即为该点所得到的票数,因为最优值一定在入度为0的点上。 如果存在环的话,我们只需要通过tarjan缩点,改环所能提供的票数为该环内的点数。然后再重新倒着建图就好了。View Code #include <iostream> 阅读全文
posted @ 2013-05-10 08:27 E_star 阅读(252) 评论(0) 推荐(0) 编辑
摘要: """""""""""""""""""""""""""""""""""""""""""""""""" 阅读全文
posted @ 2013-05-09 08:35 E_star 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 一、当前ORACLE用户的状态可查看视图DBA_USERS;一般情况下在使用的正常用户均处于OPEN状态。SQL> select username,account_status from dba_users;USERNAME ACCOUNT_STATUS--------------------- ------------------MGMT_VIEW OPENSYS OPENSYSTEM OPENDBSNMP OPENSYSMAN OPENDEMO OPENOUTLN EXPIRED & LOCKEDMDSYS EXPIRED & LOCKEDORDSYS EXPIRED 阅读全文
posted @ 2013-05-08 14:55 E_star 阅读(699) 评论(0) 推荐(0) 编辑
摘要: 一些成员函数改变对象,一些成员函数不改变对象。例如:int Point::GetY(){ return yVal;} 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象:void Point:: SetPt (int x, int y){ xVal=x; yVal=y;} 为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数的函数原型中加上const说明:class Point{ public: int GetX() const; int GetY() const; void SetPt (int, int); void OffsetPt (int, in... 阅读全文
posted @ 2013-05-04 21:48 E_star 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 250:简单题目:500:题意:给定一个矩形,里面要么是"v"表示,要么是".",v表示可能是g,也可能是d,如果是g的话,那么它的哈弗曼距离dis之内如果是v的话,一定是g。求有多少种满足条件的可能数。思路:将每一个块分出来,自这一联通块里面,所有的v要么是g,要么d,bfs把所有的快求出来,假设为n,则最后的总数为2^n - 1View Code #line 5 "GooseInZooDivTwo.cpp"#include <iostream>#include <cstdio>#include <cm 阅读全文
posted @ 2013-05-04 12:06 E_star 阅读(597) 评论(0) 推荐(0) 编辑
摘要: 一张图 说明github适合实用:1.创建一个新的repository:先在github上创建并写好相关名字,描述。$cd ~/hello-world //到hello-world目录$git init //初始化$git add . //把所有文件加入到索引(... 阅读全文
posted @ 2013-05-01 17:21 E_star 阅读(250) 评论(0) 推荐(0) 编辑
摘要: http://www.codeforces.com/problemset/problem/148/D题意:一个袋子里面装有n个小白鼠,m个小黑鼠,A,B两人轮流从中取老鼠,A先取,规定谁先取到白色小鼠谁就赢。B比较特殊,每当他取完一只老鼠时,总是会惊动其他的老鼠,所以取完之后剩下的老鼠会从袋子中溜掉一只。 而对于A取完后不会存在这种情况。问A取胜的概率。思路:首先我想了一个4维的dp[i][j][k][2] i表示到了第几步(这里可以用滚动数组优化,然后就可以存了) j表示还剩下白鼠j只,k表示还剩下黑鼠k只,最后一维: 0 表示取白鼠,1表示取黑鼠,状态转移就很好想了,就是分取白鼠还是取黑鼠 阅读全文
posted @ 2013-04-30 21:38 E_star 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 主要用来当求C(n,m)%p; 这里的n,m很大,不能用数组表示,而p可以用数组表示时。hdu: 3037Saving Beans题意:模型是有m + 1个球(0,1,2.....m),放到n个盒子里面,问有多少种方法。 典型的球同,盒不同,不允许空箱 C(n + m + 1 - 1,m + 1 - 1);思路:因为这里n,m太大,无法直接求,所以利用Lucas(n,m,p) = C(n%p,m%p)*Lucas(n/p,m/p,p)来求。View Code //#pragma comment(linker,"/STACK:327680000,327680000")#inc 阅读全文
posted @ 2013-04-30 11:47 E_star 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 首先给出这个Lucas定理:A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0])modp同余即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p)证明:表示没看懂。。Lucas定理的一个证明(找的)无意中看到这么一个定理,wiki上的证明我是看不懂了...http://en.wikipedia.org/wiki/Lucas%27_theorem友情提示:上wiki,先FQ- -|| 阅读全文
posted @ 2013-04-30 11:41 E_star 阅读(364) 评论(2) 推荐(0) 编辑
摘要: 题意:规定只包含4或7的数为幸运数字,给定n个数的序列,求他的子序列,使得该子序列的长度为k并且满足该子序列中不存在相同的两个幸运数字。问一共寻在多少种可能。(只要该数的下标不同则认为是不同的序列)思路:记录每个幸运数字的个数,枚举从非幸运数中取出的个数i,那么在幸运数字中取k - i。这里C(no,i)好算,直接带公式算除法取模,而在幸运数字中取k-i个的可能需要同过dp来算,这里类似于01背包模型,dp[i +1][j + 1] = dp[i][j]*a[i] + dp[i][j + 1]; 表示前i个取了j个的可能数。这里对dp进行了空间优化View Code //#pragma com 阅读全文
posted @ 2013-04-29 10:17 E_star 阅读(269) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 38 下一页