- 博客(16)
- 收藏
- 关注
原创 最短路径问题/Spfa
题目链接题目描述给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。 输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。(1<n<=1000, 0<m<100000, s !=
2016-07-31 20:43:49 274
原创 cddiv/数组维护
题目连接看代码:#include <set> #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> typedef long long LL; using namespace std; //const
2016-07-31 19:25:43 496
原创 cfdiv2/c/找规律
题目连接 £:若n<4,NO; £:若n==4,特判,n==5,特判。 £:若n>=6,用2-4组成24,1和5和6组成零,即可。#include <set> #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream>
2016-07-31 19:22:51 847
原创 HDU/5499/模拟
题目链接 模拟题,直接看代码。 £:分数的计算方法,要用double;#include <set> #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespac
2016-07-31 19:18:07 405
原创 cfedu/A/求和
题目连接思路:用数组直接标记2^n,n属于(0~~31);用LL或者INT都可以,不会爆。但是ans要用LL。 #include <set> #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> usi
2016-07-31 19:13:39 487
原创 HDU<1372>/bfs
题目连接简单dfs搜索 #include <set> #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef pair<int, int> pa;
2016-07-31 19:05:49 348
转载 4位开锁<dfs>
题意: 有一个四位密码的锁,每一位是1~9的密码,1跟9相连。并且相邻的连个密码位可以交换。每改变一位耗时1s,给出锁的当前状态和密码,求最少解锁时间。 思路: 用bfs枚举出所有相邻交换的情况,并记录时间,然后每一位与密码比较,得出最少时间。注意输入的是一个数字,要把每一位提取出来。 代码: #include <iostream> #include <cstring> #i
2016-07-28 21:49:58 506
原创 华哥倒酒<区间标记,二分>
题目链接#include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long LL; const int maxn=400000+10; int a[maxn],v[maxn],s[maxn],t[maxn]; LL sum[maxn];//标记区间 int n,m; int che
2016-07-28 15:36:29 441
原创 div.2/Bellovin<最长上升子序列>
题意:序列arr[i--n];输出以a[i]为结尾的最长上升子序列。1<=n<=100000; 思路:O(n*log(n)),求最长上升子序列。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn = 100000+100; int
2016-07-28 14:20:27 306
原创 div.2/D. As Fast As Possible<数学题,二分>
题意:n个学生出去玩,要前进一段距离,租了一辆可以载k个人的车,问到达到目的地的最短时间。 cin: n,l,v1,v2,k.£:所有人一起到达终点的时候时间最短。 £:所有人走路和坐车的时间相等。法一:公式推导:•求批次:if(n%k) cnt=n/k+1; else cnt=n/k;•设第一批人到达坐车到l1l1处下车,乘车时间为t1t1: l1=t1×v1=>t1=l1/v
2016-07-28 11:13:46 472
原创 div.2/C. They Are Everywhere<two pointer>
题意:给出包含n (3<=n<=100000)个字符的字符串,计算出包含所有类型字符的最小区间长度。 题解:Two pointer.注意区间的处理。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn=100000+100; char
2016-07-28 09:37:25 336
原创 HDU 1540<线段树,区间并>
题目连接 参考题意:维护各个点的连续的最大连续长度。 思路:主要是维护一个区间的三个变量ll,f[i].l为起点向右的最大连续 长度,rl:f[i].r为起点向左的最大连续长度,ml:[l,r]区间内的 最大连续长度,便于合并。 #include<cstdio> #include<algorithm> using namespace std; const int maxn=100000+100;
2016-07-27 16:46:17 420
原创 HDU 4027 <线段树,区间√>
题目连接题意给出一个区间,每次把[l,r]内的值√,维护区间和。 坑:£:l会比r大,swap. £: 当f[i].sum=f[i].r-f[i].l+1;,不修改。因为保证每个数都大于等于1,当每个数都为1的时候,此区间不需要开根。 //纯手工 #include<cmath> #include<cstdio> #include<iostream> #include<algorithm> using
2016-07-27 11:18:24 534
原创 HDU 1698 <线段树,区间set>
题目连接题意:一条长为N的铜链子,每个结点的价值为1。有两种修改,l,r,z; z=2:表示把[l,r]区间内链子改为银质,价值为2. z=3:表示把[l,r]区间内链子改为金质,价值为3. 思路:线段树,区间重设,求和。 #include<cstdio> #include<cstring> using namespace std; const int maxn=100000+10; struct
2016-07-27 09:15:23 264
原创 POJ 3468<线段树,区间add>
题目连接//位运算 k<<1 相当于 k*2 k<<1|1 相当于 k*2+1/* 修改区间内的值,并且维护区间和。 详见代码 */ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long LL; const int maxn=100000+10;
2016-07-26 21:51:20 308
原创 POJ 2082Lost Cows<>
题意:给出一个序列a[1....n],a[i]代表在0....i-1中比a[i]小的个数。 求出这个序列。 思路:1:暴力。 #include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> #include<queue> #include<deque
2016-07-24 19:02:19 303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人