编程题目
RCY_ZHU
这个作者很懒,什么都没留下…
展开
-
POJ 1459 Power Network
(记录这题纯粹是因为输入格式很有趣 0.0) 题意:输入分别为m个点,a个发电站,b个用户,n条边;接下去是n条边的信息(u,v)cost,cost表示边(u,v)的最大流量;a个发电站的信息(u)cost,cost表示发电站u能提供的最大流量;b个用户的信息(v)cost,cost表示每个用户v能接受的最大流量。 思路:应为发电站有输出限制,用户也有接受限制,所以可以建立一个超级源点和一个超级原创 2017-07-21 16:27:31 · 218 阅读 · 0 评论 -
XTU OJ Highway(树的直径)
树的直径是指树的最长简单路。 求法: 两遍DFS :先任选一个起点DFS找到最长路的终点,再从终点进行DFS,则第二次DFS找到的最长路即为树的直径; 原理: 设起点为u,第一次DFS找到的终点v一定是树的直径的一个端点 证明: 1) 如果u 是直径上的点,则v显然是直径的终点(因为如果v不是的话,则必定存在另一个点w使得u到w的距离更长,则于DFS找到了v矛盾) 2) 如果u不是原创 2017-07-18 15:14:39 · 388 阅读 · 0 评论 -
51Nod 1102 面积最大的矩形
1102 面积最大的矩形 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 有一个正整数的数组,化为直方图,求此直方图包含的最大矩形面积。例如 2,1,5,6,2,3,对应的直方图如下:面积最大的矩形为5,6组成的宽度为2的矩形,面积为10。 Input 第1行:1个数N,表示数组的长度(0 <= N <= 50000) 第2 - N + 1原创 2017-08-07 17:35:53 · 361 阅读 · 0 评论 -
51Nod 1596 搬货物
思路:题目要求每次搬的货物的重量和必须是2的次方数,给出得数据也是2的次幂,显然,两个货物的重量和为2的次方数,当且仅当这两个货物的次幂相等,所以我们始终保持数组是升序的,当w[i]==w[i+1]时,去掉w[i],w[i+1]++后保留,否则去掉w[i],保留w[i+1],方案数+1。可以用优先队列优化。 但这题卡了输入,需要使用输入挂。。。。。。。#include <map>#include原创 2017-07-31 20:26:23 · 268 阅读 · 0 评论 -
51NOD 1213 二维曼哈顿距离最小生成树
因为是二维平面图,所以点很多,如果全部点都连边,将有N*(N+1)/2条边,数组肯定存不下,所以要想办法减少边数。题目要求的是最小生成树的权值,又是曼哈顿距离,可以发现,对于平面上的某个点,以该点为原点建立直角坐标系,则我们只需要连接四个象限中每个象限离它最近的那个点即可,所以边的数量减少到4*N。 对于每个点,用树状数组维护每个象限离它的最近的那个点的权值就好了#include <map>#i原创 2017-07-19 18:21:12 · 350 阅读 · 0 评论 -
2017百度之星资格赛 度度熊保护村庄
这题看似是一道凸包计算几何题,但其实是一道图论题。 考虑所有根据房子的位置确定士兵间的连边。暴力枚举任意两个士兵(i , j)组成的线段,如果所有房子都在给线段的右边,或者三点共线但不在线段的中间,则i向j连一条权值为1的边。最后跑一遍Floyd获取最小的环就可以了。#include <bits/stdc++.h>//#define FIN freopen("input.txt","r",st原创 2017-08-08 10:50:25 · 726 阅读 · 3 评论 -
51Nod 1475 建设国家
小C现在想建设一个国家。这个国家中有一个首都,然后有若干个中间站,还有若干个城市。 现在小C想把国家建造成这样的形状:选若干(可以是0个)的中间站把他们连成一条直线,然后把首都(首都也是一个中间站)连在这一条直线的左端。然后每个点可以连一个城市,特别的是最右端的点可以连接两个城市。 现在有n个城市的规划供小C选择。但是,他们那儿的交通条件比较差,他们那儿一天是2*H个小时,每个城市里面的人每天都原创 2017-08-09 17:19:40 · 320 阅读 · 0 评论 -
51Nod 1199 Money out of Thin Air(dfs序+线段树维护区间和)
一棵有N个节点的树,每个节点对应1个编号及1个权值,有2种不同的操作。 操作1:S x y z,表示如果编号为x的节点的权值 < y,则将节点x的权值加上z。(Single) 操作2:A x y z,表示如果编号为x的节点以及其所有子节点的权值平均值 < y,则将节点x及其所有子节点的权值加上z。(All) 给出树节点之间的关系,进行M次操作,问所有操作完成后,各个节点的权值为多少? 节点的原创 2017-08-14 20:49:45 · 393 阅读 · 0 评论 -
Ignatius and the Princess III (母函数)
题目大意是给出一个数,求这个数能分解出来的加法算式的个数(加数顺序不分前后)母函数模板请看我的另一篇文章: http://blog.csdn.net/rcy_zhu/article/details/75041050这题的模板套得有点玄学,我是逐个参数试出来的,因为确实不知道怎么确定循环条件……………..#include<iostream>#include<cstdio>#include<cst原创 2017-07-12 21:12:26 · 1395 阅读 · 0 评论 -
Holding Bin-Laden Captive!(母函数)
题目大意是给出面值分别为1 2 5的硬币的数量,求用这些硬币不能搭配出来的总面值的方法数。母函数模板请看我的另一篇文章http://blog.csdn.net/rcy_zhu/article/details/75041050#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string原创 2017-07-12 21:07:34 · 3635 阅读 · 0 评论 -
xiaoxin juju needs help(逆元)
题目大意就是求给出的字符串可以组成几个不同的回文串 知识点:长度为n的字符串的全排列为n!,设字符串中第i钟字母重复的次数为ai,则没有重复的字母排列次数为n! / (a1! * a2! * a3! * .........)因为题目求的是回文串,所以将字符串长度除2,重复次数除2,再用逆元啊、求解即可注意:奇数长度的字符串中仅有一种字母的重复次数为奇数偶原创 2016-09-24 16:11:23 · 313 阅读 · 0 评论 -
manacher算法
manacher算法一般用于寻找最长回文子串的长度,时间复杂度为o(n),而用后缀数组来寻找则需要o(nlog(n))的时间原创 2016-11-09 19:51:36 · 511 阅读 · 0 评论 -
n!的长度
//给一个数X,len=log10(X)+1就是X这个数的长度 //当N的值不超过10^6时 //那么N的阶乘长度=log10(1*2*3*4*……*N)+1=log10(1)+log10(2)+log10(3)+log10(4)+……+log10(N)+1sum=0; for(int i=1;i<=n;i++) sum=sum+log10(i*1.0);原创 2016-11-09 21:10:55 · 401 阅读 · 0 评论 -
高斯消元模板
高斯消元求异或方程组int equ,val;//equ:方程数,val:变元int a[Max][Max];//增广矩阵int x[Max];//解集int free_x[Max];//自由变元int free_num;//自由变元的个数int Gauss()//返回-1表示无解;0表示有唯一解,生成解集x[];否则返回自由变元个数{ int max_r,col,k;//max_r转载 2016-11-21 20:18:20 · 312 阅读 · 0 评论 -
51Nod 旋转字符串
水题一道。 不难发现,一个字符串由对串旋转而来,其本身也是一个对串,所以直接判断给出的字符串是不是对串就好。 这里判断对串用到了KMP算法中的Next数组 (参考本人另一篇文章:http://blog.csdn.net/rcy_zhu/article/details/53105405) Next数组可以求出最大字符匹配数,所以只要截取给出字符串的一半求一遍Next数组就好。#include<原创 2017-07-10 16:00:36 · 312 阅读 · 0 评论 -
Bicycle Race
Bicycle Race原创 2017-03-23 19:42:49 · 521 阅读 · 0 评论 -
Square Coins (母函数)
题目大意为:有1,4,9,16……..289(17^2)共17中不同的硬币,问有几种方法组成所给的数字。母函数模板请看我的另一篇文章: http://blog.csdn.net/rcy_zhu/article/details/75041050在这题上,可以轻易得出价值数组v[i]为每种硬币的面值; 共17种,所以K=17; 因为每种硬币无限,所n2[i]数组省略; 每种硬币可取可不取,所以n原创 2017-07-12 21:03:03 · 3556 阅读 · 0 评论 -
51Node 1499图
1499 图 基准时间限制:2 秒 空间限制:262144 KB 分值: 80 难度:5级算法题 收藏 关注 给一个无向图,你要将这些点分成A、B两个集合,使得满足A的导出子图是一个完全图,而B的导出子图是一个没有边的图。 但是事实上你不一定能够做到,所以你允许有错误。我们定义一个完美值为: 1.如果A中两点有边相连,则增加|i-j|的完美值。 2.如果B中两点无边相连,则增加|i-j|原创 2017-10-11 20:51:40 · 414 阅读 · 0 评论