自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mercury

记录以前的想法

  • 博客(26)
  • 收藏
  • 关注

原创 EOJ 1839 恶魔之城

题目简介给定一个迷宫和起点终点,求最快要多少步到终点以及最快的路径,不能到达输出-1。说明显然bfs,也因此需要开一个step数组记录步数,更新没有走过的点的step。路径还原则又需要一个数组记录这一步的上一个点,还原时从后往前递归输出即可。#include <bits/stdc++.h>using namespace std;const int maxn...

2018-02-28 14:23:14 284

原创 EOJ 1418/POJ 2566 Bound Found

题目简介给定一个数列和t,求总和最接近t的一段连续子序列及其和。说明由于n达到了1e5不能采用n^2算法,因此考虑用前缀和+尺取法(滑动窗口法/two pointers)降低复杂度。#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+5;const int INF = 0x...

2018-02-28 14:11:29 167

原创 EOJ 2026/POJ 3662/USACO 2008 Jan. Telephone Lines「spfa + 二分」

题目简介求从点1到点n第(k+1)长的路径的最小值。说明二分第(k+1)长的路径的长度,小于这个长度的可以看作权值为0, 大于这个长度的可以看作权值为1。跑spfa作为二分的判断条件。#include <bits/stdc++.h>using namespace std;const int INF = 0x3f3f3f3f;const int m...

2018-02-26 18:23:41 186

原创 EOJ 3497/EOJ Monthly 2018.2 D.黑心的出租车

题目简介给定一个树/森林,从1号点出发,遍历森林中所有的点最后回到1号点。 大巴可以在有边相连的两点间往返,而出租车可以在任意两点间往返。 要求:乘出租车次数最少的情况下,乘大巴次数也最少,求两个次数。说明官方题解: 因为题目保证无环,因此必为树或森林。 当图为一棵树时,答案为 0,2(n−1)。 当图为森林时,出租车次数判一下联通块即可,其实答案就是 ...

2018-02-24 14:44:35 367

原创 EOJ 1748 Box Walking

题目简介给定长方体的长宽高以及长方体表面的一个点(x,y,z),求从点(0,0,0)出发到(x,y,z)的最短距离的平方。说明这是个看似简单实际上也简单的问题。首先如果该点在(0,0,0)所在的三个平面之一之内,那么显然连线长度就是答案。对于其他情况,考虑平铺长方体的六个面,这时连线的长度也几乎是答案,但是画画图不难发现有时候连线会跑到平铺后的长方体外面去……这意味着我们需...

2018-02-23 21:09:40 163

原创 博弈题初步

EOJ 1067 石子游戏-A 甲乙两人面对若干堆石子,其中每一堆石子的数目可以任意确定。两人轮流按下列规则取走一些石子,游戏的规则如下: 1. 每一步应取走至少一枚石子; 2. 每一步只能从某一堆中取走部分或全部石子; 3. 如果谁无法按规则取子,谁就是输家。 如果甲乙两人都采取最优的策略,请问,是甲必胜还是乙必胜。简单的Nim博弈,求一下异或和。#in...

2018-02-19 15:56:57 298

原创 EOJ 1189/POJ 1113/HDU 1348 Wall

题目简介给定平面上的n个点及半径r,求圆的周长与凸包周长之和。说明记录一下Graham求凸包的模板。#include <bits/stdc++.h>using namespace std;const double PI = acos(-1.0);const int maxn = 1005;struct point {int x, y;}p[maxn]...

2018-02-17 22:15:22 236

原创 两道(疑似)哈希的题

2018.2.5 新生训练Week3 E.密码碰撞EOJ 的登录系统爆出了一个重大问题,当正确的密码是你输入的密码的子串时,就可以成功登录!例如你的密码是 abc,则你输入 abcc,aabc,甚至 dfjklsdfabcsdjfkl,都可以成功登录!出现了这么大的问题,那就一定要有人来背锅,管理员们希望在背锅之前先衡量一下锅的大小。现在有一份 EOJ 用户的密码表,里面包含了...

2018-02-13 17:38:17 325

原创 EOJ 2018.2.5新生训练Week3 D.Game of Chairs

n个椅子,c种颜色排成一圈,间隔1m。随机选一种颜色,你要马上移动到这种颜色的椅子上(原本颜色相同则不动)。求走动距离的最小期望(输出最简分数)。 1 ≤ c ≤ n ≤ 1e6据说暴力模拟+优化(n^2—>nlogn?)2.5s内可过……不过这里用了一些数学知识,复杂度降到O(n)。(其实是2n,不过eoj评测姬太快了,可以忽略)首先肯定是常规的环拆链操作:复制一...

2018-02-10 17:55:17 335

原创 走道铺砖问题

n*m的走道铺满1*2的地砖,求铺设方案数。 1 <= N,M <= 11状压dp。我们知道这题中上一行的状态可以一定程度上决定下一行,且铺一块砖的方式只有两种:竖放和横放。 不妨用1 1表示横放的砖块,上0下1来表示竖放的砖块。为什么这样表示?横放砖块对下一行完全没有影响竖放砖块的下半部分填充了下一行的一个格子。竖放砖块的上半部分对下一行有影响:如果上一...

2018-02-10 16:45:26 1609

原创 EOJ 1805 字符串匹配【后缀数组】

题目简介给你 2 个字符串(可能包括数字以及标点),长度不超过 50124,请你求出最长的连续的公共子序列。说明不知道是不是数据改了,导致这个似乎是n^2的算法也能暴力过去:#include <bits/stdc++.h>using namespace std;int main(){ string a, b; int len, m...

2018-02-09 16:20:34 406

原创 判断线段是否与矩形相交

输入格式: xstart ystart xend yend xleft ytop xright ybottom Note: The terms top left and bottom right do not imply any ordering of coordinates.计算几何题对我来说,光是写对就要花很久,而代码还要做到既简洁又易懂真是难上加难…… 注意点在于:

2018-02-07 22:00:11 4406 3

原创 EOJ 3201/AOJ 2224 Save your cats【Kruskal】

题目简介n个点,m条边的图,要使得图中没有圈,求要去掉的边的权值和的最小值。说明求图的最大生成树,用总权值减生成树权值得到答案。似乎是只能用kruskal做。边数组应该是要开到10000 * 10000 / 2的,没想到eoj上提交rte,改成10000 * 100就好了……#include using namespace std;#define maxn 11000

2018-02-06 13:44:10 192

原创 EOJ 3199/POJ 1258 Agri-Net【Prim】

题目简介好像就是直接求最小生成树啊……说明就是记录一下写得比较简洁的Prim算法而已。#include using namespace std;const int maxn = 105;const int INF = 0x3f3f3f3f;int mp[maxn][maxn], dis[maxn], vis[maxn], n, sum;inline i

2018-02-06 13:10:19 219

原创 EOJ 2018.1.29新生训练Week2

总体来说不算好做……但是确实也不难。A给定正整数n,k,求f(n,k)=∑i=1nik" role="presentation" style="position: relative;">f(n,k)=∑ni=1ikf(n,k)=∑i=1nikf(n,k)=\sum^n_{i=1}i^k,结果对19260817取模。 1 时限0.698s(???)上来用拉格朗日

2018-02-05 15:21:35 646

原创 简单的对拍程序

感觉在代码里加freopen太麻烦了 经常忘记删然后交上去RTE一发 ,不如写个批处理来重定向输入输出。首先需要这样一个文件夹,AC放标程,WA放错误的程序,记得编译成exe。.out文件、.bat文件可以用空记事本改后缀名创建。Input.txt放测试数据。 然后我们右键编辑这个bat文件(不是双击),插入如下代码:@echo offWA.exe .txt > WA

2018-02-05 13:35:14 154

原创 EOJ 2525/USACO 2008 November Gold Light Switching【线段树】

题意简介有n个灯,m次操作,0表示一段区间内灯的状态全部反转,1表示询问一段区间内亮着的灯的数量。说明裸线段树……借鉴了模板,算是第一次写。#include using namespace std;const int maxn = 1e5+5;int st[maxn2], add[maxn2], n, m, flag, s, e;void pushdown(i

2018-02-05 12:20:23 163

原创 DP进阶

EOJ 1051 完全加括号的矩阵连乘积n 个矩阵的矩阵链A1,A2,…,An" role="presentation" style="position: relative;">A1,A2,…,AnA1,A2,…,AnA_1,A_2,…,A_n,矩阵 Ai" role="presentation" style="position: relative;">AiAiA_i 的规模

2018-02-05 11:36:14 231

原创 轻量级的巧妙解法

EOJ 1076 染气球 一共有 N 只气球,小强将 N 只气球从左到右依次编号为 1、2、3……N,每次给 2 个整数 a,b (a<=b),小强便骑上他的“小飞鸽 ” 牌电动车从气球 a 开始到气球 b 依次给每个气球涂一次颜色。但是 N 次以后小强已经忘记了第 I 个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗? N <= 100000da...

2018-02-04 12:52:43 283

原创 DFS and Similar系列

EOJ 1646/POJ 3126 Prime Path 把一个四位质数变为另一个四位质数,要求每次只能改动一位数,且变化过程中产生的数也是四位质数。先筛出质数,然后普通bfs。#includeusing namespace std;int prime[10000];string s, t;bool vis[10000];void init(){

2018-02-04 12:09:10 2270

原创 最短路问题相关

EOJ 3196/POJ 3259 Wormholes其实就是判断图中是否有负环……SPFA或者Bellman-Ford判负环。写的时候还不会SPFA,所以这里用的Bellman-Ford。#include using namespace std;const int N = 505;const int M = 2550;const int INF = 1e6;int n,

2018-02-04 11:32:55 157

转载 别人家的递归

文中代码来自同学,非原创。EOJ 3194#include using namespace std;int del(char *t){ char s1[101], s2[101]; strcpy(s1, t); int l1 = strlen(s1), l2 = 0, l = 0; if (!l1) return 0; s1[l1] =

2018-02-02 16:23:19 179

原创 EOJ 3216 都市地平线

题目简介约翰带着奶牛去都市观光。在落日的余晖里,他们看到了一幢接一幢的摩天高楼的轮廓在地平线上形成美丽的图案。以地平线为 X 轴,每幢高楼的轮廓是一个位于地平线上的矩形,彼此间可能有重叠的部分。奶牛一共看到了 N 幢高楼,第 i 幢楼的高度是 Hi,两条边界轮廓在地平线上的坐标是 Ai 到 Bi。请帮助奶牛们计算一下,所有摩天高楼的轮廓覆盖的总面积是多少。说明乍看之下像计算

2018-02-02 16:17:05 562

原创 EOJ 3239 最长的等差数列

题目简介给定n(1≤n≤100)个数,从中找出尽可能多的数使得他们能够组成一个最长的等差数列。输出该最长等差数列的长度。注意:当n=1时,构成长度为1的等差数列。说明题目不难,但不加优化可能超时。先排序,枚举前两个数,然后得到公差。这样以后相当于得到了下一个数,继续枚举判断是否相等即可。#include using namespace std;int s[

2018-02-02 15:54:49 630

原创 EOJ 3388/USACO 2007 January Silver Balanced Lineup【RMQ】

题目简介给定一个数列,求询问区间中的最大最小值之差。说明普通方法用线段树或ST算法,对这题来说RMQ就可以了。时间复杂度O(nlogn)。#include #include #include using namespace std;int linemax[50001][20], linemin[50001][20];void rmq(int n){

2018-02-02 15:49:41 250

原创 EOJ 3024 八进制小数

题目简介写一个程序将 0 与 1 (不包括 0 和 1)之间的八进制数转化为等价的十进制数。例如,八进制数 0.75 就是十进制数 0.953125(7∗8−1+5∗8−2" role="presentation" style="position: relative;">7∗8−1+5∗8−27∗8−1+5∗8−27*8^{-1}

2018-02-01 22:05:34 802 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除