- 博客(27)
- 资源 (13)
- 收藏
- 关注
原创 hdu 1452 Happy 2004 找循环节
hdu 1452 Happy 2004 找循环节题目链接:hdu 1452 Happy 2004 题意:求2004^X 约数之和S与29取模的结果。分析:2004 = 2 * 2 * 3 * 167, 2004^x = 2^(2x) * 3^x * 167^x, 求约数之和S ,我们可以构造多项式:S=(2^0+2^1+...+2^(2x)) * (3^0+3^1+...+3^x) *
2016-07-31 21:11:10 584
原创 思维题:抽屉原理 hdu 5776 sum & 51Nod 1103 N的倍数
思维题:抽屉原理 hdu 5776 sum & 51Nod 1103 N的倍数题目链接: hdu 5776 sum、 51nod 1103 N的倍数hdu5576 sum题意:给定长度为N的整数序列,问该序列是否存在一个连续的子区间的和为M的倍数。 (1≤n≤100000, 1≤m≤5000).51nod 1103 N的倍数 题意: 一个长度为N的数组A,从A中选出若干个数,
2016-07-31 19:58:26 1257
原创 hdu 5773 The All-purpose Zero 思维转化+nlogn LIS
hdu 5773 The All-purpose Zero 思维转化+nlogn LIS题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5773题意:给定一个长度为N的序列S,(0 0可以变成任意数字(包括负数),求最长上升子序列长度。分析:0可以转化成任意整数,包括负数,显然求LIS时尽量把0都放进去必定是正确的。因此我们可以把0拿出来,
2016-07-30 01:43:06 858
原创 POJ 3694 Network Tarjan求边双连通+LCS+并查集
POJ 3694 Network Tarjan求边双连通+LCS+并查集题目链接:POJ 3694 Network 题意:给定 N个顶点M条边的无向图。N(1 ≤ N ≤ 100,000) and M(N - 1 ≤ M ≤ 200,000). 数据保证图是连通的。 然后Q个操作(Q 思路:这是一道很有意思的题目!首先对原图进行边双连通缩点,求出DAG,因为初始的无向图是连通的,那么求
2016-07-26 03:14:18 2498
原创 hdu 4635 Strongly connected Kosaraju/Tarjan求强联通分量大小
hdu 4635 Strongly connected Kosaraju求强联通分量题目链接: hdu 4635 Strongly connected题意: 给定N个顶点M条边的有向图。问,在保证这个图不是强连通图的情况下,最多可以增加多少条有向边。如果原图本身就是连通的,则输出-1。分析:原图由多个强连通分量构成,要加边尽可能尽可能最多,然后图不是强连通的,我可以这么考虑加边的步骤
2016-07-24 21:22:39 945
原创 Tarjan模板题求割点,桥
UVA - 796 Critical Links Tarjan求割点个数题目链接:Vjudge 题意: 给定N个顶点若干条边, 求割点个数。思路:套用kuangbin大牛的 Tarjan 模板。#include using namespace std;#define FIN freopen("input.txt","r",stdin)#define
2016-07-24 00:54:09 969
原创 POJ 1236 Network of Schools 强联通分量求出度为0的点和入度为0的点的数目
POJ 1236 Network of Schools 强联通分量求出度为0的点和入度为0的点的数目 链接:POJ 1236 Network of Schools 题意:给定N个顶点若干条边的有向图,求:遍历整个图,最少需要多少个顶点作为遍历的根节点;将这个图变成连通图,最少需要添加多少条边?思路:先求强连通分量,缩点。然后第一问就是求缩点之后的DAG中入度为0的点的个数。
2016-07-23 20:54:35 1074
原创 POJ 2186 Popular Cows Kosaraju求强联通分量
POJ 2186 Popular Cows 强联通分量题目链接: POJ 2186 Popular Cows 题意:给定N个顶点M条边的有向图。边具有传递性。如A到B连通,B到C连通,那么A到C也是连通的。求有多少个顶点满足其他所有顶点到该顶点都连通。思路:先求出强联通分量,缩点,强连通分量内所有的点都是相互连通的,然后所有的缩点构成一个DAG(有向无环图),如果图中要存在顶点满足
2016-07-23 13:49:09 817
原创 hdu 2376 Average distance DFS 求树上任意两点距离和
hdu 2376 Average distance DFS 求树上任意两点距离和题目链接:hdu 2376 Average distance题意:标题都已经说明了题意了。求树上任意两点距离和的平均值。分析:分析过程和《 hdu 5723 Abandoned country 最小生成树+DFS》中求树上任意两点距离之和是完全一样的。思路就是先求出每条边两端的点的个数,然后对于每条边,
2016-07-19 20:38:51 3155
原创 hdu 5723 Abandoned country 最小生成树+DFS
hdu 5723 Abandoned country 最小生成树+DFS题目链接:hdu 5723 Abandoned country题意:给定N个顶点M条边的无向图,每条边包含一个权值,权值都各不相同,求最小生成树并求最小生成树上的任意两点之间距离的最小期望。分析:因为边权值各不相同,那么最小生成树是唯一的。那么只需要求最小生成树上的任意两点之间的距离之和除以N*(N-1)/2即可。
2016-07-19 20:15:40 1365
原创 hdu 2157 How many ways?? 矩阵快速幂
hdu 2157 How many ways?? 矩阵快速幂题目链接:hdu 2157 How many ways?? 分析:令M[i][j] = 1 表示从i到j 连通,即i, j经过一个点到达的方案数为1。 那么∑(M[i][k] + M[k][j]), k∈(0, N-1), 就表示i, j经过两个点到达的方案数。即将矩阵M^n就可以求出i, j经过N个点到达的方案数。#incl
2016-07-19 15:24:10 708
原创 CodeForces 678D Iterated Linear Function 矩阵快速幂
CodeForces 678D Iterated Linear Function 矩阵快速幂题目链接:CodeForces 678D Iterated Linear Function 题意:由递推式g(n)=Ag(n-1)+B,g(0)=X;求g(n) % (1e9+)。思路:构造变换矩阵A为{{A, B}, {0, 1}}; 初始矩阵B为{{X, 0}, {1, 0}}; 那么A^N
2016-07-19 11:48:15 1022
原创 nyoj 301 递推求值 矩阵快速幂
nyoj 301 递推求值 矩阵快速幂题目链接:nyoj 301 递推求值 矩阵快速幂分析:初始矩阵为:,那么需要目的矩阵就是:;然后就是构造一个变换矩阵:;然后用矩阵快速幂求解。#include #include #include #include #include #include #include #include #include using
2016-07-19 02:48:30 1247
原创 51Nod 编辑距离 DP+滚动数组
51Nod 编辑距离 DP题目链接:51Nod编辑距离思路:令dp[i][j] 表示 A字符串前i个字符,与B字符串的前j个字符的最小编辑距离。那么有,i = 0 && j == 0 时,dp[i][j] = 0;i = 0 && 0 dp[i][j] = j; j = 0 && 0 dp[i][j] = i;0 if (A[i] == B[j])d
2016-07-18 17:41:09 694
原创 hdu 5652 India and China Origins 并查集+BFS
hdu 5652 India and China Origins 并查集+BFS题目链接: India and China Origins题意:给定N*M的一个地图,1代表障碍物,0代表路,然后在Q个单位时间中,每过一个单位时间,向地图中某点添加一个障碍物,问到哪个时刻,人不能从第一行访问到最后一行。人只可以上下左右移动。如果到了Q时刻还从第一行能访问到最后一行,输出-1。思路1:首先
2016-07-17 14:07:14 1337
原创 51 Nod 1134 最长递增子序列 LIS NlogN 写法
51 Nod 1134 最长递增子序列 LIS NlogN 写法题目链接:51Nod 1134 最长递增子序列 思路:相对N^2的DP 算法, NlogN是对内层循环进行优化。代码中国B数组保存的是A[0]~A[i-1]去重过后的有序的序列。然后通过二分查找进行的优化。#include <cmath>#include <queue>#include <vector>#include <cs
2016-07-16 22:46:54 811
原创 51Nod 1007 正整数分组 01背包
51Nod 1007 正整数分组 01背包题目链接:51Nod 1007 正整数分组。 思路:假定2组分别为集合A,集合B,并且集合A的和SUM(A)小于或等于集合B的和SUM(B)。对于每个数组,只有在A集合和不在A集合(或者是在B集合)的情况。然后可以将题目转化为01背包模型:在[SUM(A)+SUM(B)]/2【PS:这里是整数除法】的容量下,所能取得的最大价值,每个物品的价值和体积都是a[
2016-07-16 21:48:14 757
原创 UVA 11401 Triangle Counting [递推]
UVA 11401 Triangle Counting [递推]题目链接:VJudge 题意:给定N条边,边长分别为1~N,从这N条边中,选出三条边,问能构成三角形的情况有多少种。 思路:dp[i]表示i条边的情况,dp[i]包含了dp[i-1]与最长边为i这两类情况构成。当最长边为i时,另外两条边范围是[2, i-1],我们假定这两条边为a,b。满足条件1#include <cmath>#i
2016-07-16 21:17:00 666
原创 51Nod 1006 最长公共子序列LCS DP水题
题目链接:51 Nod 1006 题意: 求A,B的最长公共子序列并输出。 分析:先求出最长公共子序列的长度,然后再根据最长公共子序列的长度逆序求出最长公共子序列。#include <cmath>#include <queue>#include <vector>#include <cstdio>#include <string>#include <cstring>#include <
2016-07-16 17:10:54 1284
原创 CodeForces 691C Exponential notation 模拟
CodeForces 691C Exponential notation 模拟题目链接:CodeForces 691C Exponential notation 模拟题意: 给定一个长度为N的数字,转化为 标准的科学计数法形式。N最大可达1e6。要考虑前置0 和 后置 0 的特殊情况。 当指数为0 的时候,不输出指数部分。纯粹的模拟。分好情况就好了。我分了一下几种情况。输入为x。
2016-07-15 21:35:22 1096
原创 51Nod 1174 求区间最大的数 RMQ
51Nod 1174 求区间最大的数 RMQ题目链接:51Nod 1174在很多情况下, 我们求区间最大最小值都是用朴素的遍历算法,其复杂度是O(N), 当存在多次区间最大最小查询时,若查询次数为Q, 那么算法负责度就是O(Q*N) 。 当查询次数 Q 很大时,我们就需要对算法进行优化了。常见的优化方法有: 使用树状数组或者线段树,或者是使用专门的RMQ算法。RMQ是一种专门用
2016-07-15 18:21:19 1018
原创 codeforces 350B Resort 链表
Codeforces 350B Resort题目链接:VJudge CodeForces题意: 这个题目关键还是读题。给定的是一个有向图,图中有N个点,每个点的前驱节点只有一个,但是后继节点可以有多个。在这个给定的有向图中,找一个最长的链,这条链满足:该链上所有的点的出度小于等于1;而且终点必须是在若干给定的点集中。思路:首先将与出度大于1的点有关的所有有向边统统删掉。然后从终
2016-07-15 00:37:54 738
原创 ACM 常用几何基本数学公式
ACM常用数学公式1. 海伦公式求面积公式描述:公式中a,b,c分别为三角形三边长,p为半周长,S为三角形的面积。2. 点到直线的距离公式方法一:距离公式直接求 公式描述:公式中的直线方程Ax+By+C=0,点P的坐标为(x0,y0)。但是直线方程不是够直接。推荐使用方法二
2016-07-14 00:45:47 6082
原创 51nod 1459迷宫游戏 Dijkstra堆优化
51nod 1459迷宫游戏 Dijkstra堆优化题目链接:51nod 1459迷宫游戏题意:给定源点和终点, 每经过一个点就会得到该点对应的分数, 每走过一条边,就会增加相应的时间,让你求源点到终点的最短时间以及在该最短时间下的最终最大得分。分析: 依旧还是带权单源点最短路。还是用d[i].first表示从源点到i点的路径长度,用d[i].second表示从源点到i点的得
2016-07-13 14:43:20 824
原创 POJ 1077 Eight 八数码问题[康托展开 + BFS]
POJ 1077 Eight 八数码问题 [康托展开 + BFS]题目链接:Here!对于八数码问题,可能问题的关键不是BFS,而是对状态的标记。八数码的状态恰好是一个全排列,那么对于全排列,康托展开就是一个完美的哈希。康托展开:X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! ,其中a[i]为当前未出现的元素中是排在第几个
2016-07-12 21:15:51 1847
原创 hdu 1254 推箱子 BFS
hdu 1254 推箱子 BFS[含测试数据]题目链接: Here!思路:每次箱子移动之前,肯定都是人先到达箱子相邻的位置上,然后推动箱子移动一步。比如:箱子现在的位置是(x,y),如果箱子需要向(1,0)方向移动,即箱子要移动到(x+1,y),那么肯定需要先让人移动到(x-1,y)的位置上。如果这样每次箱子移动一步之前,就需要检查人是不是能够到达与之相邻的位置。然后需要注意的是B
2016-07-12 20:09:19 1564 1
原创 csu 1774 慷慨的奖励[双向链表]
1774: 慷慨的奖励Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 100 Solved: 5[Submit][Status][Web Board]Description对于csuxushu来说,能够在CSU(California State University)上学是他一生的荣幸,而通过CSU-ACM校队
2016-07-11 01:59:57 1100 2
vim 配置(sublime样式)
2017-12-14
MFC表达式计算器
2017-05-22
Consolas 编程字体
2016-09-05
MyBatis 学习案例
2016-05-07
mysql-connector-java-5.1.38
2016-05-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人