E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
UVALIVE
UVALive
7148 LRIP(树的分治+STL)(2014 Asia Shanghai Regional Contest)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=648&page=show_problem&problem=5160 There is a tree with N nodes, and every node has a weight
·
2015-11-12 13:23
test
UVALive
6656 Watching the Kangaroo --二分
题意:给你一些区间,再查询一些点,问这些点与所有区间形成的最小距离的最大值。最小距离定义为:如果点在区间内,那么最小距离为0,否则为min(pos-L[i],R[i]-pos)。 解法:当然要排个序,仔细想想会发现我们要找的区间的位置满足二分性质,即如果此时pos-L[mid] >= R[mid]-pos,那么我们要找的区间肯定是mid或大于mid,否则,我们要找的区间一定是mid即mid
·
2015-11-12 10:39
live
UVALive
6269 Digital Clock --枚举,模拟
题意:说不清楚,自己看吧,太恶心。 这题真是SB了,当时看了一下以为乱搞就好了,于是开始动手拍,结果拍了好几个小时都没拍出来,而且越想越想不通,直接把自己绕进去了,结果gg了。 总结:甭管什么题,想清楚了再拍。其实当初绕进去的时候,应该换个思路重新来一遍更好 解法:枚举时间从00:00~23:59,数字显示用7位01串表示,如图: ,每次检查与给出的观察序列是否能够逻辑一致。 关键在ch
·
2015-11-12 10:38
Lock
UVALive
6093 Emergency Room --优先队列实现的模拟
题意:给n个医生,这些医生有一个上班时间,然后给一些病人,病人有一个到达的时间,以及一些诊断,诊断有property(优先级)和duration(诊断时间)这两个属性,每个病人可能要诊断多次,最后问每个病人的全部疗程完成离开医院的时间是多少。 分析:用优先队列存储诊断,病人,然后模拟一个诊断过程,完成病人的个数等于病人数的时候就结束。具体看代码吧。 代码: #include <
·
2015-11-12 10:34
merge
UVALive
6665 Dragonâs Cruller --BFS,类八数码问题
题意大概就是八数码问题,只不过把空格的移动方式改变了:空格能够向前或向后移动一格或三格(循环的)。 分析:其实跟八数码问题差不多,用康托展开记录状态,bfs即可。 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #incl
·
2015-11-12 10:33
drag
UVALive
6168 Fat Ninjas --二分小数+搜索
题意:一个NxN的网格地板,有一些激光束从天花板垂直射向地面的某个网格,一个圆要安全地从左走到右,不碰到上边界,下边界以及激光束,问这个圆的直径最大能达到多大。 分析:可以二分直径,关键在check函数的写法。可以讲这个圆缩成一个点,把圆的直径转化为激光的扫描范围,当激光范围完全堵死一条通道的时候,这个直径则是不可行的。怎样判断是否堵死一条通道了呢。每次check(dis)的时候,枚举激光束对,
·
2015-11-12 10:32
live
UVALive
6092 Catching Shade in Flatland --枚举+几何计算
题意:x=[-200,200],y=[-200,200]的平面,一天中太阳从不同角度射到长椅(原点(0,0))上,有一些树(用圆表示),问哪个时刻(分钟为单位)太阳光线与这些圆所交的弦长总和最长。太阳距离原点总是500m。(这些圆不会互相相交,每个圆都不包括原点或者不经过原点) 解法:直接暴力24*60分钟,找出此时的角度,然后求出直线方程,再枚举每个圆,求出弦长。注意这里每个圆都不包括原点,所
·
2015-11-12 10:32
catch
UVALive
6663 Count the Regions --离散化+DFS染色
题意:给你n(n<=50)个矩形(左上角坐标和右下角坐标),问这些矩形总共将平面分成多少个部分。坐标值可能有1e9. 分析:看到n和坐标的范围,容易想到离散化,当时就没想到离散化以后怎么判断区域个数。后来看别人代码才知道,可以将边界上的点vis赋为1,那么枚举所有哈希后的平面上的点,遇到一个vis=0的点就从这点一直搜过去,搜到边界自动会停止了,因为边界vis=1。所以每次看到一个vis=
·
2015-11-12 10:29
count
UVALive
6449 IQ Test --高斯消元?
题意:给你一串数字,问这串数字符合f[n] = a*f[n-1],f[n] = a*f[n-1]+b*f[n-2],f[n] = a*f[n-1]+b*f[n-2]+c*f[n-3]这几个方程中的哪个,然后要你给出第n+1项,如果符合多个方程,项数小的优先(第一个方程优先)。 解法:这题我先处理看是否满足f[n] = a*f[n-1]的形式,如果不满足,则用高斯消元借出两项和三项的情况的a,b,
·
2015-11-12 10:28
test
UVALive
6450 Social Advertising DFS解法
题意:一些人有朋友关系,在某个人的社交网站上投放广告可以被所有该人的直接朋友看到,问最小投放多少个广告使给出的人都看到广告。(n<=20) 解法:看到n的范围可以想到用二进制数表示每个人被覆盖与否,所以可以依次为状态进行搜索,每次枚举一个人,投放广告,然后将他的朋友覆盖,用dis记录步数,记忆化搜索。 代码: #include <iostream> #includ
·
2015-11-12 10:26
Social
UVALive
6257 Chemist's vows --一道题的三种解法(模拟,DFS,DP)
题意:给一个元素周期表的元素符号(114种),再给一个串,问这个串能否有这些元素符号组成(全为小写)。 解法1:动态规划 定义:dp[i]表示到 i 这个字符为止,能否有元素周期表里的符号构成。 则有转移方程:dp[i] = (dp[i-1]&&f(i-1,1)) || (dp[i-2]&&f(i-2,2)) f(i,k):表示从i
·
2015-11-12 10:24
live
UVALive
6255 Kingdoms --状态搜索
题意:n个国家,给出国家间相互的债务关系,每个国家如果债务>收入就要破产,破产后该国的所有债务关系全部清除,第一个破产的国家不同有可能造成最后的没破产的国家的不同,问哪些国家有可能成为独自存活的国家。 解法:因为最多20个城市,破产与否的状态可用二进制数表示,破产为1,不破产为0,然后进行搜索,每一个dfs让一个国家破产,最后如果只剩下一个了,那么就将这个国家压入ans中。 代码:
·
2015-11-12 10:24
live
UVALive
6264 Conservation --拓扑排序
题意:一个展览有n个步骤,告诉你每一步在那个场馆举行,总共2个场馆,跨越场馆需要1单位时间,先给你一些约束关系,比如步骤a要在b前执行,问最少的转移时间是多少。 解法:根据这些约束关系可以建立有向边,可以看出是拓扑排序问题,问题是怎样拓扑排序。 进行两次拓扑排序,分别建立两个集合,一个放场馆1举行的步骤,一个放场馆2的,然后第一次从场馆1开始进行拓扑排序,每次一个场馆取完后看另一个场馆是否有步
·
2015-11-12 10:23
live
UVALive
5962 Strongly Connected Chemicals --最大独立集
题意:给n个阳离子和m个阴离子,并给出相互的吸引关系,求一个最大的点集,使其中的每个阴阳离子相互吸引。 解法:枚举每条边,使该条边存在,然后建立反图,求一个最大匹配,此时的点数减去最大匹配与ans求一个最大值即可。 代码: #include <iostream> #include <cstdio> #include <cstring> #in
·
2015-11-12 10:22
connect
UVALive
6263 The Dragon and the knights --统计,直线分平面
题意:给n条直线,将一个平面分成很多个部分,再给m个骑士的坐标,在一个部分内只要有一个骑士即可保护该部分,问给出的m个骑士是不是保护了所有部分。 解法:计算每个骑士与每条直线的位置关系(上面还是下面),用0,1表示,所以每个骑士会有一个01串,最后统计出这n条直线分成的部分数(可能有平行的),然后排序每个骑士的01串,看有多少个处在不同部分的骑士(01串不同的个数),然后比较个数关系,得出答案。
·
2015-11-12 10:22
drag
UVALive
5964 LCM Extreme --欧拉函数
题目大意:求lcm(1,2)+lcm(1,3)+lcm(2,3)+....+lcm(1,n)+....+lcm(n-2,n)+lcm(n-1,n)解法:设sum(n)为sum(lcm(i,j))(1<=i<j<=n)之间最小公倍数的和,f(n)为sum(i*n/gcd(i,n))(1<=i<n)那么sum(n)=sum(n-1)+f(n)。可以用线性欧拉筛选+递推来做
·
2015-11-12 10:14
live
UVALive
5966 Blade and Sword -- 搜索(中等题)
题意:给一幅地图,P为起点,D为终点,'*'为传送阵,到达传送阵可以传到任意一个其他的传送阵,传到以后可以正常走或者再传回来,问P->D最短步数。 分析:这题一定要细心,分析要到位才能搞定,错一点都WA。有两种思路: 1.走到一个传送点之后,将所有能传到的地方都加入队列,然后清除传送阵向量(vector),因为以后不用再互相传了,对于某个传送阵k,以后从别的点传到k的效果还不如从这个点传
·
2015-11-12 10:12
word
UVALive
4857 Halloween Costumes
区间dp。对于最左边的点: 1、在该点穿的衣服只有该点用的到,即穿上就脱下。所以dp[ l ][ r ] = min(dp[ l + 1][ r ] + 1, dp[ l ][ r ])。 2、衣服仍保留。这一步需要明确只有后面用到
·
2015-11-12 10:09
live
UVALive
6190 Beautiful Spacing (2012 Tokyo regional)
Beautiful Spacing 题意是给一个文本排版,求在满足题目所给要求的条件下,最长连续空格最小是多少. trick: 贪心地模拟是错的,至少无法证明正确性. 正解应该是二分答案+验证. 比较容易想到的验证方法是O(n^2)的. 1 // dp[i] 第i个单词能否为结尾 2 dp[0] = true; 3 for ( i=1 ; i&
·
2015-11-11 18:47
live
【数论】勒让德定理(笔记)
=∑[n/pk] (k>=1) .维基百科有详细的证明 一个要用到该定理的问题:
uvalive
5828 求一个最大的数d,满足: 1.能分解成不同的因子,这些因子不能超过
·
2015-11-11 18:39
笔记
uva 215 hdu 1455
uvalive
5522 poj 1011 sticks
//这题又折腾了两天 心好累 //poj、hdu数据极弱,找虐请上
uvalive
题意:给出n个数,将其分为任意份,每份里的数字和为同一个值。求每份里数字和可能的最小值。
·
2015-11-11 18:23
live
uvalive
5818 uva12376 As Long as I Learn, I Live
题意:给出一个又向图每个图有权值和编号(正方形里的是编号),从第0号节点开始每次向当前节点所连的点中权值最大的节点移动(不会存在权值相同的节点),问最后所在的节点编号和经过的节点的权值之和。 解:模拟就好~ 1 #include<cstdio> 2 #include<algorithm> 3 #include<cmath> 4 #inc
·
2015-11-11 18:19
long
uvalive
5810 uva12368 Candles
题意:每组数据给出n个数,每个数在1-100,问组成这些数的蜡烛的权值的最小值。权值=把选的蜡烛从大到小排列组成的数 组成方式:比如有1 3两个蜡烛 可以组成13(1和3)或4(1+3) 只有一个加号可以用 解:位运算记录状态,can[i][j]表示在i的二进制所记录的状态下能不能组成j can直接预处理出来,分类讨论 用一个数表示 还是用两个数表示 check的时候都在100以内 直接枚举
·
2015-11-11 18:18
live
思维
UVALive
3708 Graveyard
题目传送门 1 /* 2 题意:本来有n个雕塑,等间距的分布在圆周上,现在多了m个雕塑,问一共要移动多少距离; 3 思维题:认为一个雕塑不动,视为坐标0,其他点向最近的点移动,四舍五入判断,比例最后乘会10000即为距离; 4 详细解释:http://www.cnblogs.com/zywscq/p/4268556.html 5 */ 6 #include &
·
2015-11-11 18:38
live
UVALive
2949 Elevator Stopping Plan(二分 + 贪心)
ZSoft Corp. is a software company in GaoKe Hall. And the workers in the hall are very hard-working. But the elevator in that hall always drives them crazy. Why? Because there is only one eleva
·
2015-11-11 16:04
ping
UVALive
- 6428(扩展欧几里德)
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=48388 前段时间偶然碰到的一道题,今天突然想到没把它记录下来。 比较不错的扩展欧几里德求解的应用 题意求是否满足ax+by=c gcd(a,b)==1 a>=0&&b>=0 数比较大 在求解时LL会溢出,用JAVA改写了一遍程序。 扩展欧
·
2015-11-11 16:31
live
ACM--South Pacific 2012
option=com_onlinejudge&Itemid=8&category=584 A:
UVAlive
6161 Decision Making 题意:给出01字符串
·
2015-11-11 14:45
2012
uvalive
6657 GCD XOR
//感觉太长时间没做题 好多基本的能力都丧失了(>_<) 首先大概是这样的,因为gcd(a,b)=c,所以a,b都是c的倍数,所以我们依次枚举a的值为2c 3c 4c......,a xor b=c于是有b=a xor c因此可以算出来b,然后再检查下gcd(a,b)是不是为c,这样做是n(logn)^2。 还有一种更优的做法:因为c=gcd(a,b)<=a-b<=a
·
2015-11-11 13:49
live
DP
UVALive
6506 Padovan Sequence
题目传送门 /* 题意:两行数字,相邻列一上一下,或者隔一列两行都可以,从左到右选择数字使和最大 DP:状态转移方程:dp[i][j] = max (dp[i][j], dp[1-i][j-1] + a[i][j], dp[i/1-i][j-2] + a[i][j]); 要从前面一个转态推过来啊,我比赛写反了,内功不够:( */ #include <cstdio>
·
2015-11-11 12:27
sequence
逆序数
UVALive
6508 Permutation Graphs
题目传送门 1 /* 2 题意:给了两行的数字,相同的数字连线,问中间交点的个数 3 逆序数:第一行保存每个数字的位置,第二行保存该数字在第一行的位置,接下来就是对它求逆序数 4 用归并排序或线段树求。想到了就简单了:) 5 */ 6 #include <cstdio> 7 #include <algorithm> 8 #inclu
·
2015-11-11 12:27
Graph
Tarjan
UVALive
6511 Term Project
题目传送门 1 /* 2 题意:第i个人选择第a[i]个人,问组成强联通分量(自己连自己也算)外还有多少零散的人 3 有向图强联通分量-Tarjan算法:在模板上加一个num数组,记录每个连通分量的点数,若超过1,则将连通点数相加 4 用总点数-ans则是零散的点 5 详细解释:http://www.bubuko.com/infodetail-927304.h
·
2015-11-11 12:27
project
找规律
UVALive
6506 Padovan Sequence
题目传送门 1 /* 2 找规律:看看前10项就能看出规律,打个表就行了。被lld坑了一次:( 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <iostream> 7 #include <cstring> 8 #include <cma
·
2015-11-11 12:26
sequence
贪心
UVALive
6834 Shopping
题目传送门 1 /* 2 题意:有n个商店排成一条直线,有一些商店有先后顺序,问从0出发走到n+1最少的步数 3 贪心:对于区间被覆盖的点只进行一次计算,还有那些要往回走的区间步数*2,再加上原来最少要走n+1步就是答案了 4 详细解释:http://blog.csdn.net/u013625492/article/details/45640735 5 */
·
2015-11-11 12:10
ping
贪心
UVALive
6832 Bit String Reordering
题目传送门 1 /* 2 贪心:按照0或1开头,若不符合,选择后面最近的进行交换。然后选取最少的交换次数 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <cstring> 7 #include <string> 8 #include <
·
2015-11-11 12:09
String
模拟/字符串处理
UVALive
6833 Miscalculatio
题目传送门 1 /* 2 模拟/字符串处理:主要是对*的处理,先把乘的预处理后再用加法,比如说是:1+2*3+4 = 1+..6+4 = 11 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <cstring> 7 #include <string&g
·
2015-11-11 12:09
字符串处理
uvalive
5721 Activation (概率dp+方程)
题目链接:http://vjudge.net/problem/viewProblem.action?id=24999 主要思想就是解方程的思想。 二维dp应该很容易想到,就是当前位置加队伍长度。 dp递推式存在循环,因此想到像解方程组一样把一个dp值解出来,然后顺序递推。 先贴代码,一会把递推式放上来。 1 #include <stdio.h> 2 #inclu
·
2015-11-11 12:56
live
uvalive
3026 Period (KMP+结论)
题目链接:http://vjudge.net/problem/viewProblem.action?id=29342 题目大意:给定字符串,找到每个前缀的最大循环节的个数。 首先当然是kmp预处理,接下来的问题是 怎么找循环节? 用反证法可以证明,如果f[i]~i之间的字符串能构成循环节,则该字符串就是i前缀对应的循环节,否则循环节不存在。 对每个前缀找到尾指针对应的失陪位置后,不需要按失
·
2015-11-11 12:53
live
uvalive
5760 Alice and Bob (组合游戏,dp)
题目链接: http://vjudge.net/problem/viewProblem.action?id=25636 对于>1的堆,必然会被其中一人全部合并。 然后就是二维dp,dp[非1堆的操作数][1堆个数]。 1 #include <stdio.h> 2 #include <cstring> 3 #include <cstdl
·
2015-11-11 12:51
live
UVALive
4974 CERC2010B Beasts
思想是半平面交+旋转卡壳,关于X轴取一次对称再求包围(0, -10^10)点的部分后再对称回来可以少写点针对性代码。左右的射线单独处理了。 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #include<algorithm> 5 #inc
·
2015-11-11 12:59
live
UVALive
4973 CERC2010A Ardenia
分类讨论的情况不难想,难点在于判断各种垂线垂足是否在线段上。设bl1、bl2为两个线段上公垂线垂足位置的比例值,x为p0的公垂线垂足X坐标,则: x = (p1.x - p0.x) * bl1 + p0.x 同理可得其他坐标。公垂线向量与两线段向量点积为0可得两个方程,求得bl1和bl2皆在0~1范围内则公垂线垂足都在线段上。 1 #include<stdio.h>
·
2015-11-11 12:58
live
UVALive
5061 Lightning Energy Report --LCA
题意:给一棵树,每次给u到v的路径上所有点加上一个值,最后输出每个点的权值(初始为0) 解法:每次在u,v间加k时,只要让u,v点的权值加上k,u,v的LCA处减去k(因为LCA的子树中加了两个k),再在LCA的父亲(如果有的话)减k,免除对上面的影响。最后dfs一遍,ans[u] += ans[v] (v是u的所有儿子)即可。 这里LCA用RMQ求的。 代码: #include
·
2015-11-11 11:25
port
UVALive
5066 Fire Drill --BFS+DP
题意:有一个三维的地图,有n个人被困住,现在消防队员只能从1楼的一个入口进入,营救被困者,每一个被困者有一个价值,当消防队员找到一个被困者之后,他可以营救或者见死不救,如果救的话,他必须马上将其背到入口处,不得停下,不得同时救多个人,而且回去的时间一步要做两步走,即时间增加一倍。求在给定时间S内,能救到的人的最大价值总和。 解法:bfs一遍记录每个点离起点的最短距离,那么救这个人的花费就是3*d
·
2015-11-11 11:25
live
UVALive
6181
模拟题,注意细节。。 #include <iostream> #include<stdio.h> #include<math.h> #include<string.h> #include<algorithm> #include<stdlib.h> #define mod 107374182
·
2015-11-11 11:34
live
UVALive
4728 (凸包 旋转卡壳)
板子题每个正方形加进去4个点。#include #include #include #include #include usingnamespacestd; typedefunsignedlonglongll; #definemaxn411111 #definepiacos(-1) #definerotateRotate constdoubleeps=1e-8; intdcmp(doublex)
morejarphone
·
2015-11-11 10:00
UVALive
4657 Top 10(自动机)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2658 题意:给出n个串以及另外m个串,对于每个m串输出一行,输出n个串那些串包含的该串。输出先按照长度、再按照字典序、再按照编号。最多输出10个。 思路
·
2015-11-11 09:49
live
UVALive
4119 Always an integer (差分数列,模拟)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Always an integer Time Limit:3000MS Memory Limit:0KB&nbs
·
2015-11-11 08:33
Integer
UVALive
4123 Glenbow Museum (组合数学)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 易得,当n为奇数或者n<3时,答案为0,否则该序列中必定有(n+4)/2个R,(n-4)/2个O; 要使该序列的排列能成立,则只需要保证(在首尾相连之后)该序列中依旧不存
·
2015-11-11 08:31
live
UVALive
3516Exploring Pyramids(dp)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 题目意思:有一棵多叉树,每个结点的子节点有左右之分(即要按照顺序查找),从跟结点开始遍历,尽量往左走,走不通就回溯,每到一个结点就记录下结点的信息,最终可以得到一个序列。
·
2015-11-11 08:30
live
UVALive
4864 Bit Counting --记忆化搜索 / 数位DP?
题目链接: 题目链接 题意:如果一个数二进制n有k位1,那么f1[n] = k,如果k有s位二进制1,那么f2[n] = f1[k] = s. 如此往复,直到fx[n] = 1,此时的x就是n的”K值“,现在要求[L,R]内的”K值“为X的数有多少个。(1<=L<=R<=10^18) 解法:首先可以看到10^18最多只有61位左右的数,所以我们只需处理1
·
2015-11-11 05:56
count
UVALive
4998 Simple Encryption --DFS
题意: 给出K1,求一个12位数(不含前导0)K2,使得K1^K2 mod (10^12) = K2. 解法: 求不动点问题。 有一个性质: 如果12位数K2满足如上式子的话,那么K2%1,K2%10,K2%100,...,K2%10^12都会满足如上式子。那么我们可以dfs从后往前一个一个找出这个数的每一位。 代码: #include <iostream> #inc
·
2015-11-11 05:54
encrypt
上一页
7
8
9
10
11
12
13
14
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他