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
Timus
Ural(
Timus
) 1078. Segments
DP(DAG最长路) 题意:给出x轴上的线段的端点坐标,一个线段能覆盖另一个线段(端点不能相同),求出最多的线段覆盖并且从短到长给出路径。转化模型为DAG,求DAG上的最长路并且打印路径,用记忆化搜索实现 #include <cstdio> #include <cstring> #define N 550 int a[N],b[N],n; bo
·
2015-11-07 13:02
IM
Ural(
Timus
) 1081. Binary Lexicographic Sequence
DP(解码) 题意:给出一个串的长度n,串只有0,1组成,但是不能有两个相邻的1。按字典序给串排列,最先肯定是0000,接着是0001,依此类推。给一个数字m,输出在长度为n的情况下,第m个排列的串是什么,如果m大于总排列数,输出-1 这其实是一个解码的过程,必须用高位到低位解码(从左到右),因为这里要求字典序,字典序的比较水从左到右的 由于数据规模固定在串长度44以内,所以
·
2015-11-07 13:01
sequence
Timusoj 1982. Electrification Plan
http://acm.
timus
.ru/problem.aspx?space=1&num=1982 1982.
·
2015-11-07 11:18
cat
Timus
1132(二次剩余方程求解)
题目:http://acm.
timus
.ru/problem.aspx?space=1&num=1132 题意:就是给出方程,p为素数,求在区间内的解。
·
2015-11-05 09:50
IM
ural 1106 Two Teams
http://acm.
timus
.ru/problem.aspx?
·
2015-11-03 21:48
r
ural 1136. Parliament
题目链接:http://acm.
timus
.ru/problem.aspx?
·
2015-11-02 19:53
li
Ural 1519. Formula 1(插头DP)
题目链接:http://acm.
timus
.ru/problem.aspx?space=1&num=1519 题意:给出一个n*m的棋盘,有的格子是障碍。
·
2015-11-02 19:53
form
Timus
1017
Staircases Time Limit: 1.0 second Memory Limit: 16 MB One curious child has a set of N little bricks (5 ≤ N ≤ 500). From these bricks he builds different staircases. Staircase consists of steps of d
·
2015-11-02 11:17
IM
《黑书》例题:三色多边形
http://acm.
timus
.ru/problem.aspx?space=1&num=1181 这是一道递归题?
·
2015-11-01 14:11
书
《黑书》第二道枚举题......我已经无力吐槽
http://acm.
timus
.ru/problem.aspx?
·
2015-11-01 14:09
枚举
URAL 1557 Network Attack 图论,连通性,tarjain,dfs建树,分类讨论 难度:2
http://acm.
timus
.ru/problem.aspx?space=1&num=1557 1557.
·
2015-11-01 10:22
NetWork
ural(
Timus
) 1067. Disk Tree
数据结构:暴力(可用哈希优化)+建树+前序遍历 题意:输入行数n,下面n行是一下文件的路径(和平常使用的电脑一样),一整行数据中没有空格(还好,别有搞些空格出来),要你整理好所有文件的路径,从根开始,输出所有的文件夹名 首先一点,我们要名字,在同一个文件夹下,是不会有重名的文件夹的 即 a\b a\b 这种是非法的(和电脑一样),但是输入中可以有,有的话只是一种重复输入,不是代表a下面
·
2015-10-31 19:40
tree
ural(
Timus
) 1463. Happiness to People!
树DP 题意:输入n和m,表示n个城市,m条无向边,下面一行n个数字,表示每个城市的权值,下面m行是每条边的信息,u,v,w,顶点和边权。问你从一个城市出发,走出一条路线,使得权值和最大,权值和包括这条路线上城市的权值和边的权值和。 题中有一句话出卖了它是个树DP:It turned out that if Petrovich can fly (using one or several fli
·
2015-10-31 19:39
APP
ural(
Timus
) 1039. Anniversary Party
树DP 经典问题,公司聚会,下属和直属上司不能共存,给出每个人的快乐值,再给出每个人的编号和他的上司,选出一些人参加聚会使快乐值最大 /* 从叶子开始选择,每个节点只有选不和不选两种可能,dp[rt][0],dp[rt][1] 分别表示选和不选该节点 dp[rt][1]=sum{ dp[son][0] }+val[rt] , 因为跟选了它的儿子就全部不能选 dp[rt][0]=sum
·
2015-10-31 19:37
part
ural(
Timus
) 1037. Memory Management
数据结构:堆 题目 请你写一个内存管理系统。 内存中有30000个块,编号为1..30000。 当操作系统需要内存时内存管理系统会找出编号最小的空闲块,向里面写入数据。 操作系统还会会发出指令读取某个编号的内存块。如果目标块空闲,读取失败,否则读取成功。 一开始所有块都是空闲块。被写入数据之后就不是空闲块了。 如果一个块在600秒内没有被写入或读取,这块内存自动清空,变为空闲块。 本题中不会出
·
2015-10-31 19:35
memory
ural(
Timus
) 1018. Binary Apple Tree
树型DP:二叉苹果树 另外一个提交地址:http://www.cqoi.net:2012/JudgeOnline/problem.php?id=1375 里面有中文题目,不解释题目了。 树型DP:主要是两点,怎么建树,怎么DP。这两者应该说是相互制约相互影响的,怎么DP就要怎么建树,而建树方法对不对也决定了你能不能DP。所以先分析怎么DP的,再分析怎么建树 题意说要保留m个树枝,而且注意权
·
2015-10-31 19:33
binary
Ural(
Timus
) 1003 Parity
并查集 题意:题意比较好懂简单说一下。一个序列,只有0,1;输入n,表示序列长度(从1到n标号),输入m,下面m个更新,每行都是a,b,string,表示说序列中下标a到下标b的元素中有偶数个或奇数个1.没得到一个更新就更新序列的信息,知道读入第k个信息,和已建立的信息矛盾,那么结束,输出k-1,表示前面k-1个更新不矛盾,如果m个更新都成立,那么输出m 这题要转化一下,一转化就比较明显了。我
·
2015-10-31 19:32
it
ural(
Timus
) 1019 Line Painting
线段树 题意:很明显的线段树。做了这题更加让我注意了用点和用段来建树的区别。这题是用点来表示线段的。一开始从0到10^9这个点之间的线段都是白色的,然后m个更新,每个更新 a,b,col,表示从点a到点b这条线段染成黑色或白色,问最后,白色线段中最长的是哪一段,输出它的位置(即线段两端的端点) 注意更新的时候a,b的数值范围是 0<a<b<10^9 , 其实这样给数据方便了处
·
2015-10-31 19:32
paint
ural(
Timus
) 1028 Stars
树状数组 经典入门题,只要搜索数星星就能在各个OJ找到这个题目,不过不同OJ的输入和输出可能不同,但是题意是一样的,就是统计每个星星的等级 入门题详细说一下。首先对输入的星星进行排序,先按x坐标升序排序,x坐标相同的按y坐标升序排序,这样做是后面能使用树状数组的根本保证。由于这题,输入数据中就已经保证了是按y坐标升序输入若y坐标相同则按x坐标升序输入,所以不需要排序,注意,两种排序方法是一样的
·
2015-10-31 19:20
tar
ural 1106. Two Teams 二分图染色
链接:http://acm.
timus
.ru/problem.aspx?space=1&num=1106 描述:有n(n<=100)个人,每个人有一个或多个朋友(朋友关系是相互的)。
·
2015-10-31 18:58
二分图
toj 1180 Stone Game
http://acm.
timus
.ru/problem.aspx?space=1&num=1180 简单推理博弈。观察每次要取的个数,1,2,4,8,16...
·
2015-10-31 15:57
game
ural(
Timus
) 1333. Genie Bomber 2
几何题 题意:给出n个圆的圆心坐标和半径,给出一个单位方格,在(0,0),(0,1),问这些圆覆盖的面积占方格的百分比,圆超出方格的部分不计算。另外算百分比,答案精确到1%即可,即整数部分正确即可,小数部分不要求 这题,可以想按照题意直接下手,未免太难了,另外注意到答案的输出,其实对精度的要求很低(对小数都没要求)。我们可以用一直近似的算法来解决 将方格分割为一个一个的小格子,当分割得很小的
·
2015-10-31 14:51
bom
ural(
Timus
) 1136. Parliament
数据结构--二叉查找树遍历 题意:n,表示二叉查找树的节点个数,每个节点有个数值,并且数值各异不会出现重复的,查找树左子树的节点数值小于根,右子树的节点数值大于根。 一般的后序遍历二叉树时 左孩子,右孩子,根 ; 现在定义一种新的后序遍历 右孩子,左孩子,根
·
2015-10-31 14:37
li
带权二分图匹配:KM算法与费用流建模
相关资料 二分图带权匹配 KM算法与费用流模型建立 丘比特的问题——求二分图最大权匹配的算法 nocow上的讲解 题目:ural1076 原题:http://acm.
timus
.ru
·
2015-10-31 13:45
二分图
1104. Don’t Ask Woman about Her Age(数论)
a*b^n(mod(b-1) =a(mod(b-1) http://acm.
timus
.ru/problem.aspx?
·
2015-10-31 12:16
out
数位DP问题整理(一)
第一题:Amount of degrees (ural 1057) 题目链接:http://acm.
timus
.ru/problem.aspx?
·
2015-10-31 11:23
dp
Ural 1519 Formula 1 插头DP(单回路)
题目链接:http://acm.
timus
.ru/problem.aspx?
·
2015-10-31 10:55
form
Timus
1244
简单的01背包,关键是找路径,通过此题对01背包找路径有了更深的认识了。 #include<iostream> #include<cstdio> #include<cstring> #include<stack> using namespace std; int res[100010],nPath[100010],father[1000
·
2015-10-31 10:38
IM
Timus
1741
令res[i][0]表示升级到i并且是正版的最小消费,res[i][1]表示升级到i并且是盗版的最小消费。 res[i][0]=min(res[i][0],res[k][0]+edge(k,i)) (其中k必须可以升级到i,并且保证升级到i是正版); res[i][1]=min(res[i][1],res[k][x]+edge(k,i)) (其中res[k][x]表示正版盗版都行,关键保证升级
·
2015-10-31 10:37
IM
Timus
1117
纠结了一天也没有想到怎么用DP来做,看了看大牛的想法顿时茅塞顿开: 结果是要求从i到j需要多少天,假如用res[i][j]来表示,那么假如我们知道res[1][i]和res[1][j]的话,res[i][j]=res[1][j]-res[1][i] (i<=j),因此转化为求res[1][i]和res[1][j]; 而2的整数次幂可以直接求出若用r[i]表示res[1][2^i]的结果r
·
2015-10-31 10:37
IM
Timus
1495
题意:找出n的最小倍数,要求这个倍数十进制由1和2组成。 看了discuss才知道确实可以用DP来做: 令res[i][j]表示前i位对n取余为j是否可以得到。 res[i][(10%n*j+1)%n]=res[i-1][j]; res[i][(10%n*j+2)%n]=res[i-1][j]; 用到(a * b) % n=(a % n * b % n) % n; 假如我们知道res[
·
2015-10-31 10:37
IM
Timus
1167
简单DP,状态转移方程如下: res[i][j]=min(res[i][j],res[k][j-1]+fact(k+1,i)) (1<=j<i && j<=m, 1<=i<=n, 1<=k<i);fact(i,j)表示从i到j的系数。 #include<iostream> #include<cstdio>
·
2015-10-31 10:37
IM
Timus
1303
用动态规划超时了,悲剧,没想到可以用贪心O(n)就搞定了。 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct node { int x,y; }vert[100010];
·
2015-10-31 10:37
IM
Timus
1346
简单贪心,贪心原则是将每一个单调序列尽可能的大。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; int data[100001]; int work(int m,int n) { int head=m+1,count=0;
·
2015-10-31 10:37
IM
Timus
1090 树状数组
第一道树状数组,每个第一道都那么艰难…….. #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MAX 1234567890 int res[10010],data[10010]; int lowbite(int x) {
·
2015-10-31 10:37
树状数组
Timus
1658
令res[i][j][0]表示数字和为i,数字平方和为j的可能性,要么为0要么为1,;res[i][j][1]表示至少有多少位数字。 res[i][j][0]=res[i-k][j-k*k] ? 1 : 0;(1<=k<=9 , 1<=i<=900,1<=j<=8100) res[i][j][1]=min(res[i][j],res[i-k][j-k*k]+
·
2015-10-31 10:37
IM
Timus
1003 并查集
并查集 讲解看如下博客: http://start07.yo2.cn/articles/ural-1003-parity.html #include<iostream> #include<cstring> #include<cstdio> using namespace std; #define BLOCK 10000 int HashTable
·
2015-10-31 10:36
并查集
Timus
1028
一看题意,感觉可以用线段树来做,但是二维挺难处理的,后来百度了一下,大牛们是将二维化为一维,因为点已经排好了序,我们就可以省去了一维,只考虑x,然后就是赤裸裸的线段树了,而且还不用事先建树。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; struc
·
2015-10-31 10:36
IM
Timus
1635
令res[i][j]表示从i到j是否是回文串。 res[i][j]= (str[i]==str[j] && res[i+1][j-1]) ; 接下来是如何找最少个数回文串,令inum[i]表示从1到i至少有多少个回文串,再次用DP; inum[i]=min(inum[j]+1),(其中res[j][i]==1,1<=j<i); 最后根据inum[i]的值寻找一种
·
2015-10-31 10:36
IM
Timus
1501
搞了一天终于AC了,感觉题目有点问题,没有说有多个可行顺序的情况如何输出,然而测试数据是按照某一个顺序输出的。 比如说:101 010 是按照111222输出,其实(如果题意我没有读错的话)121212 221112应该也是正确的。听说这道题有一定的改动,是不是出题人忽视了呢???? 令res[i][j]表示串1的前i个字符与串2的前
·
2015-10-31 10:36
IM
Timus
1019
做了这道题我都快疯了,一开始不是道什么是散列化,看了半天才有点头绪,尝试写了,又遇到了问题,就是排序之后,如何确定新的区间,看看大牛的文章,就是看不懂,今天早上突然,灵光一闪,知道到底怎么回事了,也就是在排序的过程中,记录了染色区间的序号,以便于,散列后重新确定染色区间,就这么简单却弄了那么久,汗颜。后来,没有注意到题中给出的条件 起始点< 终点,是我一直在纠结始点等于终点的情况,唉!还有就
·
2015-10-31 10:36
IM
Timus
1586
想一想知道n-1位的结果,如何得到n位的结果呢?假如我们知道n-1的后两位再枚举第n位的数字,不就得到n位的结果了吗? 我们用res[n][i][j]表示n位最后两位是i和j; Res[i][j][k]=∑res[i-1][l][j];(其中100*l+10*j+k 是素数) 我们还可以优化一下,因为最后一位只有可能是1、3、7、9。所以可以将k和j所在的循环的长度改为4。 #inclu
·
2015-10-31 10:36
IM
Timus
1029
简单的一道DP,只不过是每个状态与三个子状态有关,令res[i][j]表示从第一层到达map[i][j]的最小费用。 本应该res[i][j]=min(res[i-1][j],res,[i][j+1],res[i][j-1])+map[i][j];但是在res[i][j+1]是在res[i][j]求出来之后才求出来,那我们怎么办呢?我们可以这样处理:每一行正反各求一次取最小值。 #inclu
·
2015-10-31 10:35
IM
Timus
1009
K-based Numbers Time Limit: 1.0 second Memory Limit: 16 MB Let’s consider K-based numbers, containing exactly N digits. We define a number to be valid if its K-based notation doesn’t contai
·
2015-10-31 10:35
IM
Timus
1039 树形DP
简单的树形DP,状态转移方程如下: 令res[i]表示以i为根的子树获得的最大值;第i个人去或者不去。 去的话,res[i]=value[i]+∑res[j], j表示i的孩子的孩子; 不去的话,res[i]=∑res[k],k表示i的孩子; 因此,res[i]=max{value[i]+∑res[j],∑res[k]}; 代码如下: #include<iostream&g
·
2015-10-31 10:35
dp
Timus
1031
令res[i]表示到达第i个站点所用的最小费用;状态转移方程如下: res[i]=min{res[k]+f(L1,L2,L3)};(1<=k<i) 代码如下: #include<iostream>#include<cstdio>#include<cstring>using namespace std;#define MAX 123456789
·
2015-10-31 10:35
IM
Timus
1018 树形DP
树形DP,令res[i][j]表示以i为根的子树删除j条边所保留的最大苹果数; res[i][j]=max(res[i][j],res[lChild][k]+res[rChild][j-k]+value[i]);(0<=j<=inum[i],0<=k<=inum[lChild]) inum[i]表示以i为根的子树树枝的个数,value[i]以i为端点的树枝的苹果树。
·
2015-10-31 10:35
dp
【后缀数组、最长回文字串】ural1297
http://acm.
timus
.ru/problem.aspx?space=1&num=1297 题意:求一串字符串的最长回文字串.......
·
2015-10-31 09:47
后缀数组
《黑书》第一道枚举题,最高的wa次数15次,可作为以后精度计算的典型
http://acm.
timus
.ru/problem.aspx?
·
2015-10-31 09:46
枚举
Timus
1577
简单DP; 状态转移方程如下: 令len[i][j]表示串1前i个字符与串2前j个字符所得到的符合要求的串的最短长度。 令res[i][j]表示串1前i个字符与串2前j个字符所得到的符合要求的最短串的方案数。 len[i][j] = str1[i]==str2[j] ? len[i-1][j-1] +1: min(len[i-1][j],len[i][j-1])+1。 若str1[i]=
·
2015-10-31 09:51
IM
上一页
2
3
4
5
6
7
8
9
下一页
按字母分类:
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
其他