![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
文章平均质量分 67
hikean
这个作者很懒,什么都没留下…
展开
-
最短路变形 POJ 2253 Frogger
这题也是最短路类的题目但求的不是从一点到另一点的最短路径,而是求从起点到终点的所有的路径中每条路径上的最大边的最小值,好像有点拗口。。其实这并没有难多少,只需要把dijstra的松弛过程改一下就可以了核心代码是int k = max( d[x] , W[x][y] );d[y]=min( k,d[y] );另外这题我的代码在poj上只能用G++交才能通过,C++会WA的原创 2013-07-17 18:22:16 · 859 阅读 · 0 评论 -
UVA5029 Encoded Barcodes
#include#include#includeusing namespace std;map data;int m,n;int decode(){ double a,zero;cin>>zero; int ans=0; for(int i=0;i<7;i++) { ans*=2; cin>>a; if(a/zero>1.3) ans+=1; } ret原创 2013-07-18 18:31:00 · 781 阅读 · 0 评论 -
poj 1251 最小生成树
最小生成树的简单水题,#include#include#define maxn 600using namespace std;int u[maxn],v[maxn],w[maxn],xu[maxn],p[maxn];int m,e;//点的个数,边的个数void read(){ int ii=e=0; while(++ii<m) { int c;char a,b;原创 2013-07-19 16:46:51 · 763 阅读 · 1 评论 -
poj 1258 最小生成树
题目很简单没什么好说的#include#include#define maxn 11000using namespace std;int u[maxn],v[maxn],w[maxn],xu[maxn],p[maxn],m,e;//点的个数,边的个数int tu[105][105];void read(){ int ii=e=0; for(int i=0;i<m;i+原创 2013-07-19 17:10:32 · 618 阅读 · 0 评论 -
hdu 4602 partition 2013多校联合训练第一场
这题应该属于组合数学,可以把一个数 n看成n个点然后可以从任意2个点之间的缝隙处分割因为n个点共有n-1条缝隙, 每个缝隙无非2种状态分割或不分割故所有的分割方案为2的n-1次方种方案,至于怎么根据分割算出题目要求的固定长度k在所有的方案中出现的次数,就简单了;可以这样想在所有方案中每个k出现的位置是不相同的(我说的位置不是第一个二个的位置,而是他在不同的分法序列中位置不同,即同一个序列中同一个位原创 2013-07-26 15:28:13 · 854 阅读 · 0 评论 -
poj 1061 数论 扩展欧几里得算法
题目还算简单,但是得用高精度#include#define size_num 51000#include#includeusing namespace std;void exgcd(long long a,long long b,long long &d,long long &x,long long& y){ if(!b){d=a;x=1;y=0;} else { exg原创 2013-07-22 17:15:59 · 687 阅读 · 0 评论 -
POJ 1308 并查集的水题
很水的题,注意判一下森林即可。。。#include#include#include#define size_num 11200using namespace std;queue que;int p[size_num];int findp(int x){return p[x]==x?x:p[x]=findp(p[x]);}int deal(){ int a,b,f=1; s原创 2013-07-22 12:39:32 · 792 阅读 · 0 评论 -
POJ2485 最短路的水题
求的是最短路中的最大边,很水啦。。#include#include#include#define INF 1e9#define INI -1e9using namespace std;int closest[505],lowcost[505],m;int G[506][506];void read(){ cin>>m; for(int i=0;i<m;i++) for (原创 2013-07-20 17:12:29 · 891 阅读 · 0 评论 -
hdu 4607 park visit 2013多校联合训练第一场
题目的大意是给你一棵树 ,相连节点之间的距离为一,让你找出一个路线访问到k个不同节点 (一条边在这个路径中可以被走多次),问你这样这个路径的距离最小值是多少? 转化之后其实就是要找出数的直径即任意2点间的最大距离,一种方法是任取一个节点做一次广搜找出其最长的子树,然后以该子树的最远的叶子上的节点作为起点再做一次广搜之后得到的最长子树的长度就是树的直径了对于要访问的点的个数k 小于等于树原创 2013-07-26 14:40:34 · 718 阅读 · 0 评论 -
poj 1797 最短路变形
题目初看起来很像网络流但,细看就发现不是了题目大意是求从源点1能通过一条路径使能运送到终点n得值最大此题可以用最短路的几个算法来做,由于本人比较捉鸡,所以就套了一下dijstra算法细节可以看代码里的注释#include#include#include#includelong long W[1015][1015],d[1015];//图不是特别大就用邻接矩阵填了bool原创 2013-07-17 13:28:09 · 773 阅读 · 0 评论 -
hdu 4737 A Bit Fun 2013成都赛区网络赛最后一题
题目会给出N(N做法有多种我用的是线段树 用2个标记在数组上进行挪动,一个表示区间的左端点一个表示区间的右端点,然后用线段树以logn的复杂度求出区间的或和,再进行统计。具体代码如下:/************************ hdu 4737 A Bit Fun*************************/#include#includeusing n原创 2013-09-16 20:00:48 · 1151 阅读 · 0 评论 -
poj 2528 Mayor's posters 线段树+离散化
题意: 有一个100000000长的墙,现在要到墙上贴一些海报,因为贴的时候可以覆盖所以问最后你可以看见多少张海报(不要求完整的海报,有一个部分没被覆盖那么 就认为可以看见这个海报)其中海报最多10000张 海报有2个数据 它贴在墙上的左端点值l和右端点值r 其中 110000000数据的输入格式 先给出 T 情况的种数,再给出每一种情况的海报数量N 然后给出N张海报的数据,ok,题意原创 2013-09-01 16:05:56 · 886 阅读 · 1 评论 -
poj 3281 Dining 网络流-最大流-建图的题
题意很简单:JOHN是一个农场主养了一些奶牛,神奇的是这些个奶牛有不同的品味,只喜欢吃某些食物,喝某些饮料,傻傻的John做了很多食物和饮料,但她不知道可以最多喂饱多少牛,(喂饱当然是有吃有喝才会饱)输入数据有N,F,D,表示牛的个数,食物的数量,饮料的数量接着输出N行表示N个牛的数据每个牛的数据前2个是Fi和Di表示第i个牛喜欢吃的食物种数和饮料种数,接着输出Fi个食物的编号和Di个原创 2013-08-14 16:24:54 · 1115 阅读 · 0 评论 -
POJ 2524 并查集的水题 Ubiquitous Religions
单纯的并查集的题目所以比较简单需要注意的是由于读入的数据量比较大所以读入用scanf比较好#include#include#define size_num 51000using namespace std;set sett;//用集合可以方便的知道不同的元素的个数int p[size_num];int findp(int x){return p[x]==x?x:p[x]=fin原创 2013-07-22 13:28:05 · 777 阅读 · 0 评论 -
hdu 1754 线段树入门的题
线段树入门,对于A C M E R来说线段树这种实用高效的数据结构是十分重要的,本人也是今天才学的,弄懂了一点,就记录下来了,感兴趣的就看看呗。。。说明不多但是注释很详细,因为我觉得对着代码说明更好懂。另外完全不知道线段树的可以百 度了解一下,再看,毕竟我对线段树的概念没有做出说明。线段树的主要优势是查询区间值,及修改区间的值时间复杂度都是O(l o g n)的。原创 2013-07-27 15:08:02 · 1632 阅读 · 0 评论 -
poj1789 PRIM算法优先队列版(STL框架)
题意很简单 主要是想练一下优先队列的使用#include#include#include#include#include#define maxn 2100000#includeusing namespace std;bool vis[2100];int m;//点的个数char tu[2105][8];struct node{ node(int原创 2013-07-20 13:25:24 · 1099 阅读 · 0 评论 -
hdu 4649 Professor Tian 多校联合训练的题
这题起初没读懂题意,悲剧啊,然后看了题解写完就AC了题意是给一个N,然后给N+1个整数 接着给N个操作符(只有三种操作 即 或 ,与 ,和异或 | & ^ )这样依次把操作符插入整数之间就可以得到一个表达式接着给出 N 给浮点数(在0~1之间表示概率 )表示的是 操作符和他右边的整数丢失的概率。 例如下面这组数据11 2&0.5整数与操作符间可以组成一个表达原创 2013-08-07 16:31:41 · 1112 阅读 · 0 评论 -
poj 1459 Power Network 网络流初步,增广路算法,主要是建图麻烦
题意是一个实际问题: 电网 整个电网中有 电站 可以发电 ,用户 可以使用电,还有中继站 可以传送电能 ,当然也有电线,电线的输送电能的能力有方向不同方向的能力可能不同当然啦也可能有重边。题目问的是从发电站发出的电可以给用户使用多少。一般的网络流的题目都有一个源点和汇点但是此题的源点和汇点并没有给出,需要我们自己来建,我们建的这种源点和汇点也称为超级源点和超级汇点,因为本题中的每个发电站都是源点原创 2013-08-12 19:50:09 · 2103 阅读 · 0 评论 -
joj 2453 candy 网络流建图的题
Problem D: CandyAs a teacher of a kindergarten, you have many things to do during a day, one of which is to allot candies to all children in your class. Today you have N candies for the coming M chi原创 2013-08-16 13:14:58 · 2164 阅读 · 0 评论 -
poj 1247 The Perfect Stall 裸的二分匹配,但可以用最大流来水一下
The Perfect StallTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 16396 Accepted: 7502DescriptionFarmer John completed his new barn just last week, compl原创 2013-08-16 14:08:45 · 885 阅读 · 0 评论 -
poj 1200 Crazy Search 哈希
简单的哈希的题目注意题目已经说明所有的nc个字符的排列组合的数不会超过16Million ,细节可以见代码的实现/*********************PRO: poj 1200TIT: Crazy SearchDAT: 2013-08-30AUT: UKeanEMA: huyocan@163.com**********************/#include#inc原创 2013-08-30 16:02:18 · 820 阅读 · 0 评论 -
hdu 4632 Palindrome subsequence 区间dp 多校联合训练第四场
注意到任意一个回文子序列收尾两个字符一定是相同的,于是可以区间dp,用dp[i][j]表示原字符串中[i,j]位置中出现的回文子序列的个数,有递推关系:当 第i个字符与第j个字符不相等时有dp[i][j]=dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]反之,i和j位置出现的字符相同,那么dp[i][j]=dp[i+1][j]+dp[i][j-1]+1,注意边界特判一下就可原创 2013-08-02 11:47:04 · 966 阅读 · 0 评论 -
hdu 4361 2013多校联合训练第3场最后一题
题目有n个点 初始时先加入一个点到集合中,然后依次加入点,直到集合中的点的个数为n为止,每加一个点,算一次集合内所有点之间的最短距离,输出这个距离;为了避免输出过多,把每次要输出的结果相加后,每组只输出一个值;细节见代码注释#include#include#include#define INF 1e18using namespace std;long long n,Ax,Ay,原创 2013-07-31 15:02:05 · 899 阅读 · 0 评论 -
poj 1149 Pigs 网络流-最大流 建图的题目(明天更新)-已更新
题目大意:是有M个猪圈,N个顾客,顾客要买猪,神奇的是顾客有一些猪圈的钥匙而主人MIRKO却没有钥匙,多么神奇?顾客可以在打开的猪圈购买任意数量的猪,只要猪圈里有足够数量的猪。而且当顾客打开猪圈后mirko就可以在打开的猪圈之间任意调整猪的数量。问mirko怎样做能使顾客买到最多的猪思路如下:(也是查的)1.取超级源点和超级汇点;2.当猪圈被第一次打开时,在源点与当前顾客之原创 2013-08-13 23:18:11 · 1812 阅读 · 1 评论 -
hdu 4576 robot 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现-1001-robot
题意:有一个机器人他的初始位置是1,在一个环形轨道上(轨道的长度n既然决定暴力,那么就是一步一步的算机器人走到轨道的某处的情况数了,可以一步步递推每次接到指令后就枚举轨道的位置,复杂度是n*m=2*10^8很凶残啊。。。。输入格式是先输入 n,m,l,r,接下来再有m行输入指令的w值,若n,m,l,r,都是0则输入结束需要注意的是所有的情况数将会非常庞大可以爆掉int,会WA,但是用l原创 2013-08-10 17:17:05 · 1675 阅读 · 0 评论 -
最小生成树-水题-POJ-1789-Truck History
题目大意 读入有N个7位的字符串,定义每个字符串之间的距离是他们之间不同字符的个数,然后就是求最小生成树的水题了#include#include#include#define maxn 2100000using namespace std;int u[maxn],v[maxn],w[maxn],xu[maxn],p[2100],m,e;//点的个数,边的个数char tu[2105原创 2013-07-20 10:33:30 · 814 阅读 · 0 评论 -
线段树之区间求和 POJ 3468 线段树入门
线段入门可以看一下,我也是第一次写的,哈哈原创 2013-07-28 19:09:07 · 814 阅读 · 0 评论 -
hdu 4617 2013多校联合训练第二场weapon简单的计算几何
多校训练的题都比较难,但这题还是比较水的,就是判断空间任意2个中无限长的圆柱体是否相交或相切细节说明可以看代码的注释#include#include#include#define INF 1e9#define eps 1e-8using namespace std;struct Point {double x,y,z;};typedef Point Vec;struct Y原创 2013-07-26 13:44:41 · 899 阅读 · 0 评论 -
POJ 1789最小生成树的水题,PRIM算法普通的实现版
这题用不同方法做了几遍了,废话就不说开了,只是我第一次写PRIM算法#include#include#include#include#include#define INF 1e9using namespace std;int closest[2100]; //存的是最短边的在增集的端点 下标表示减集的点int lowcost[2100];//最短边的数组,增点集合的点到下标原创 2013-07-20 15:36:50 · 1076 阅读 · 0 评论 -
hdu 4619 warm up 2 并查集或搜索都可以做出来的题 2013多校联合训练第二场
题目并不难只要注意分析一下题目的牌的摆放的方法即可,观察后发现按照题目给的规则进行摆放就会所有牌首尾相连形成一些链或一些环,这样就有的属于某个环或链,或者不属于这个环或链的逻辑关系,很容易就想到了并查集来实现。或者想不到也没关系,你可以去按照链或环的思维继续的想下去,无非就是要找出链或环的长度,这样就可以去搜索了找长度了,链或环的长度都知道了怎样选择去牌也就显而易见了下面的代码使用的是并查集比原创 2013-07-26 14:04:10 · 1173 阅读 · 0 评论 -
poj 1325 Machine Schedule 二分匹配,可以用最大流来做
题目大意:机器调度问题,同一个任务可以在A,B两台不同的机器上以不同的模式完成.机器的初始模式是mode_0,但从任何模式改变成另一个模式需要重启机器.求完成所有工作所需最少重启次数.===================================================对于任务(i,x,y),我们在A机mode_x与B机mode_y之原创 2013-08-16 15:56:03 · 743 阅读 · 0 评论 -
POJ 1273 Drainage Ditches 我的第一道网络流——最大流问题
题目大意就不说了是一道裸的网络流中的最大流问题,可以用增广路算法来做,即EDMONDS-KARP算法。 读入会有多组数据,每一组先有N和M,N表示图中边的条数,M表示图中节点的个数,接下来有N行数据,每行有三个数 S ,E, C 表示一条边的起点,终点和边上的容量,注意是有向边,而且有重边;好了题目就是这样,还是说一下这个算法吧,这个算法其实是很暴力的。。他每次只是用BFS找到一条路,使得在这原创 2013-08-12 11:29:56 · 1644 阅读 · 0 评论 -
hdu 4651 Partition,公式题,维基百科上搜五边形定理即可
分拆数问题 参见五边形定理。。http://en.wikipedia.org/wiki/Partition_(number_theory) #includeint P[100005],MOD=1000000007;int main(){ int i,j,k,s,o,T; for( P[0]=i=1;i<100001;i++) { s=0,o=-1;原创 2013-08-07 13:24:59 · 860 阅读 · 0 评论 -
hdu 4648 Magic Pen 6 多校的一个题目
题目是说给你N个数再给一个MOD 这N个数的和对MOD取模的值是K问你可以从这N个数中最多删除多少个连续的数使得剩下的数的和模上MOD的结果不变还是K这题数据范围有点大,不过有O(N)的算法就可以搞定了。方法 题意转化一下就是: 给出一列数a[1]...a[n],求长度最长的一段连续的数,使得这些数的和能被M整除。 分析:设这列数前i项和为s[i],则一段连续的数的和 a[i]+a[原创 2013-08-07 14:01:58 · 1172 阅读 · 0 评论 -
hdu 4431 Mahjong,uva 11210 chinese Mahjong,麻将,超快的解法。。
这个代码在hdu可以进前五,运行时间是140ms(我贴的代码是156ms,不用cin cout 就可以140ms了好像)题目就是我们熟悉的麻将,题目会给你13 张牌,你判他能不能胡,以及胡那些牌ok题意很简单是吧,开始,各种暴力吧,以及各种剪枝,。。。有些剪枝原理我没写注释相信聪明的你可以明白的。。#include#include#include#include#include原创 2013-08-07 20:13:56 · 1844 阅读 · 1 评论 -
hdu 4639 hehe 多校联合训练第四场
题意比较简单,就是数出有多少个连续的he,当有一个大案是1,二个是2,三个是3,四个是5,五个是8。。。不连续的he段之间是相乘的关系其实出题的想法是做dp的都拿我这个就比较好玩了,直接递推了,标程题解发如下dp,直接用dp[i]表示0-i这段区间可能变成的不同句子数,首先有dp[i+1]+=dp[i],如果当前位置向后连续4个字符是hehe,那么有dp[i+4]+=dp[i],最后的答案就是原创 2013-08-02 16:43:58 · 716 阅读 · 0 评论 -
hdu 4642 fliping game 多校联合训练第四场
大水题啊,这题 题意是每次要选出一个矩形来进行翻转,矩形的左上角必须是1而且可以任选左上角,但右下角一定要是图的右下角,就是说图的右下角每次都要被取到不停的从0变成一 1变成0,所以先手时图的右下角是一的话,先手必胜那么就很简单了#include using namespace std;int main(){ int T;cin>>T; while(T--)原创 2013-08-02 12:17:36 · 761 阅读 · 0 评论 -
zoj2744 Palindromes 字符串的题
题意是求给一个字符串算出其中有多少个回文子串(每个回文子串必须是连续的),关于这题由于数据范围才5000,所以可以用O(N*N)的动态规划去做或者是用暴力的搜索,每次枚举回文串的对称中点复杂度不超过O(N*N),但是用dp做就很蛋疼了,因为内存限制存不了所有的状态,所以得用滚动数组去存,下面将给出几种不同实现的代码。如果暴力枚举中点方法确实很简单,但我还是建议,写一下dp,/可以锻炼一下代码能了,原创 2013-08-04 18:50:23 · 962 阅读 · 0 评论 -
快速幂或者矩阵快速幂
快速幂或者矩阵快速幂在算指数时是很高效的,他的基本原理是二进制,下面的A可以是一个数也可以是一个矩阵(本文特指方阵),若是数就是快速幂算法,若是矩阵就是矩阵快速幂算法,用c++只需把矩阵设成一个类就可以,然后重载一下乘法就可以,注意为矩阵是则ANS=1,应该是ANS=E,E是单位矩阵,即主对角线是1其余的部分都是0的特殊方阵了。 举个例子若你要算A^7你会怎么算一般你会用O(N)的算法A^7=原创 2013-08-04 22:17:34 · 12219 阅读 · 3 评论 -
hdu 4647 Another Graph Game,想到了就是水题了。。
题目是给一个无向图,其中每个节点都有点权,边也有边权,然后就有2个小朋友开始做游戏了ALICE &BOB 游戏规定ALICE 先行动然后是BOB,然后依次轮流行动,行动时可以任意选取一个节点并获得节点的点权,如果他已经把一条边的2个端点都取了,那么他可以获得那边的边权,如果一条边的二个端点不同的人取了,那么谁也得不到那条变得边权了。 问游戏结束后怎样可以使ALICE得到的权值和减去BOB 的权值和原创 2013-08-07 13:19:57 · 1304 阅读 · 0 评论