摘要:
不废话,看代码: cpp include include include define ARR_LEN 10 define CAL_TIMES 100000000 int64_t a[ARR_LEN]; int64_t b[ARR_LEN]; int main() { for (size_t i(0 阅读全文
摘要:
这是我在逛 Stack Overflow 时遇见的一个高分问题: "Why is processing a sorted array faster than an unsorted array?" ,我觉得这是一个非常好的用来讲 分支预测(Branch Prediction) 的例子,分享给大家看看 阅读全文
摘要:
故事得从 copy/move constructor 说起: The default constructor (12.1), copy constructor and copy assignment operator (12.8), move constructor and move assignm 阅读全文
摘要:
本文记录 LLVM 的安装过程,比较繁琐,使用 LLVM 3.4 操作系统:CentOS 6.6 64 位 1. 下载需要的软件 相关软件下载地址: "http://llvm.org/releases/download.html 3.4" 我们需要下载代码如下: Clang source code 阅读全文
摘要:
我用的是移动的 CMCC-EDU 上网,但是这个只能在一个设备上登陆,那么问题就来了,当我电脑需要用网,手机也想要用网(不用 2/3/4G)该怎么办? 电脑操作系统:windows7 接下来是开启 windows7 无线热点的步骤: 1. 启用承载网络 运行如下命令: netsh wlan set 阅读全文
摘要:
题目大意一个含有 n 个顶点的无向图,顶点编号为 1~n。给出一个距离数组:d[i] 表示顶点 i 距离图中某个定点的最短距离。这个图有个限制:每个点的度不能超过 k现在,请构造一个这样的无向图,要求不能有自环,重边,且满足距离数组和度数限制,输出图中的边;如果无解,输出 -1数据规模:1 ≤ k d[v]),这让我想起了 ISAP 求最大流的 gap 优化然后,怎么保证每个点都尽量满足度数限制呢?平均分配将距离为 len + 1 的点平均分配到距离为 len 的点里面去,这样一定是最优的,如果这样都不满足度数限制,肯定无解了参考代码 1 #include 2 #include 3 #in.. 阅读全文
摘要:
题目大意我们说一个无向图是 p-interesting 当且仅当这个无向图满足如下条件:1. 该图恰有 2 * n + p 条边2. 该图没有自环和重边3. 该图的任意一个包含 k 个节点的子图含有不超过 2 * k + p 条边现在,请你找出一个 p-interesting 包含 n 个节点的无向图,输出他的 2 * n + p 条边数据范围:5≤ n≤ 24,0≤ p, 2 * n + p≤ (n) * (n + 1) / 2做法分析好久没有做题了,刷刷水题练练手第一感觉:乱搞,后来想了会儿,还是乱搞构造方法:先将所有的点连成一个环,如果边数不够,就将间隔为 1 个点的两个点对之间建立一条 阅读全文
摘要:
所谓 LAMP,指的是:Linux+Apache+Mysql+Php仅以此文做一个备忘录Step1. 安装 Apache 1. 在 terminal 中输入一下命令并执行: sudo apt-get install apache2 2. 测试 Apache 是否安装成功: 打开浏览器,在地址栏输入:127.0.0.1,如果出现了 “It works!”,表明安装成功注:127.0.0.1 指的是本机,IP 编址中规定的,这一点,学过 TCP/IP 的同学肯定知道。当然,你也可以在地址栏中输入 http://localhost/ 进行测试Step2. 安装 php5 1. 在 ... 阅读全文
摘要:
A. Helpful Maths题目大意给一个连加计算式,只包含数字 1、2、3,要求重新排序,使得连加的数字从小到大做法分析把所有的数字记录下来,从小到大排序输出即可参考代码 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int N=100005; 9 10 char buff[1000];11 int A[1000], n;12 13 int main() {14 scanf("%s", buff);15 n=0;16 for(int i=0;... 阅读全文
摘要:
题目大意 K 国是一个热衷三角形的国度,连人的交往也只喜欢三角原则。他们认为三角关系:即 AB 相互认识,BC 相互认识,CA 相互认识,是简洁高效的。为了巩固三角关系,K 国禁止四边关系,五边关系等等的存在。所谓 N 边关系,是指 N 个人 A1 A2 ... An 之间仅存在 N 对认识关系:( 阅读全文
摘要:
题目大意 自从明明学了树的结构,就对奇怪的树产生了兴趣...... 给出标号为 1 到 N 的点,以及某些点最终的度数,允许在任意两点间连线,可产生多少棵度数满足要求的树? Input 第一行为 N(0<N<=1000),接下来 N 行,第 i+1 行给出第 i 个节点的度数 Di,如果对度数不要求 阅读全文
摘要:
题目大意 给一个无向图,包含 N 个点和 M 条边,问最少删掉多少条边使得图分为不连通的两个部分,图中有重边 数据范围:2<=N<=500, 0<=M<=N*(N-1)/2 做法分析 典型的无向图全局最小割,使用 Stoer-Wagner 算法 Stoer-Wagner 算法共执行 n-1 次 BF 阅读全文
摘要:
题目大意 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的。而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为 (1, 1),右下角点为 (N, M) (上图中N=4, M=4)。有以下三种类型的道路 1: (x, y) 阅读全文
摘要:
题目大意 给一个数列,初始时为 1, 2, 3, ..., n,现在有两种共 m 个操作 操作1. CUT a b c 表示把数列中第 a 个到第 b 个从原数列中删除得到一个新数列,并将它添加到新数列中第 c 个数的后面 操作2. FLIP a b 表示把数列中第 a 个数到第 b 个数翻转 经过 阅读全文
摘要:
题目大意 网上有许多题,就是给定一个序列,要你支持几种操作:A、B、C、D。一看另一道题,又是一个序列要支持几种操作:D、C、B、A。尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技术含量……这样 我也出一道题,我出这一道的目的是为了让大家以后做这种题目有一个“库”可以依靠,没有什么 阅读全文
摘要:
题目大意 给定一个数列,编号从 1 到 n,现在有 m 个操作,操作分两类: 1. 修改数列中某个位置的数的值为 val 2. 询问 [L, R] 这个区间中第 k 大的是多少 n<=50,000 m<=10,000 做法分析 本以为某一天我会用 splay 或者 树套树 去搞的,结果被用块状链表搞 阅读全文
摘要:
题目大意 给一个字符串,长度不超过 106,有两种操作: 1. 在第 i 个字符的前面添加一个字符 ch 2. 查询第 k 个位置是什么字符 操作的总数不超过 2000 做法分析 好多不同的做法都可以搞 人生第一个块状链表,记录下 块状链表的思想其实挺简单的,传统的链表每个节点只记录一个字符,块状链 阅读全文
摘要:
题目大意 题目是图片形式的,就简要说下题意算了 一个有向图 G=(V, E) 称为半连通的(Semi-Connected),如果满足图中任意两点 u v,存在一条从 u 到 v 的路径或者从 v 到 u 的路径 给一个有向图(n 个点,m 条边),求出她的最大半连通子图中所包含的点数,以及这样的最大 阅读全文
摘要:
题目大意给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降数列中每个数为 -109~109 中的一个数做法分析先这样考虑:如果操作的次数最少,那么最终得到的不降的数列,必然是由原始数列中的数组成的,具体的证明可以使用反证法知道了上面讲述的性质,这题就好搞了先将原始数列(设为 A,共 n 个数)中所有的数去重并从小到达排序,保存在另一个数列中(设为 B,共 m 个数)定义状态:f[i][j] 表示将原始数列中的前 i 个数变成单调不降,第 i 个数最多为 B[j] 的最少操作次数初始化 f[0][0]=abs(A[0]-B 阅读全文
摘要:
题目大意两个人轮流在一个字符串上删掉一个字符,没有字符可删的人输掉游戏删字符的规则如下: 1. 每次从一个字符串中选取一个字符,它是一个长度至少为 3 的奇回文串的中心 2. 删掉该字符,同时,他选择的那个字符串分成了两个独立的字符串现在问,先手是否必胜,如果先手必胜,输出第一步应该删掉第几个字符,有多解的话,输出序号最小的那个字符串的长度不超过5000,只包含小写英文字母做法分析可以这样考虑:将所有的长度大于等于 3(其实只需要找长度为 3 的就行)的奇回文串的中心标记出来我们将连续的中心视为一个片段,那么,显然,游戏是进行在片段上面的,所以,游戏被分解成了多个子游戏的和对于每一个片段(.. 阅读全文
摘要:
题目大意额,写来写去,我还是直接说抽象之后的题目大意吧:有一个 r*2 的矩形,两个人轮流的在矩形上面减去一个 1*1 的小正方形,要求在减的过程中,不能使矩形“断开”,也就是说,如果一个人减去了 (i, 1) 这个矩形,那么,(i-1, 2), (i+1, 2), (i, 2) 这三个小正方形不能再被减去了,因为一旦减去它们中的一个,整个矩形就会被“剪断”现在给你一个 r 和 n (1 ≤ r ≤ 100, 0 ≤ n ≤ r),表示有一个 r*2 矩形,已经有了 n 个位置被减去了,再给 n 个位置的坐标,题目保证开始的状态矩形不会被剪断.现在问,对于当前的状态,先手是否必胜做法分析这题是 阅读全文
摘要:
A 题Vasily the Bear and Triangle题目大意一个等腰直角三角形 ABC,角 ACB 是直角,AC=BC,点 C 在原点,让确定 A 和 B 的坐标,使得三角形包含一个矩形,这个矩形一个角在原点,另一个点在 (x, y) 处,并且三角形 ABC 的面积尽量小将 A B 两点按照 x 坐标从小到大输出做法分析A B 两点必然在坐标轴上,且线段 AB 经过点 (x, y),那么简单分类讨论下就行了交之前犹豫了一下,10分钟才提交...参考代码 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7... 阅读全文
摘要:
一、引子 1959 年 William Rowan Hamilton 发明了一个小玩具,这个玩具是一个木刻的正十二面体,每面系正五角形,三面交于一角,共 20 个角,没每个角上标有世界上一个重要城市。他提出一个问题:要求沿着正十二面体的边寻找一条路,通过 20 个城市,而每个城市只通过一次,最后返回 阅读全文
摘要:
一、定义 一个无向图 G=(V,E),V 是点集,E 是边集。取 V 的一个子集 U,若对于 U 中任意两个点 u 和 v,有边 (u,v)∈E,那么称 U 是 G 的一个完全子图。 U 是一个团当且仅当 U 不被包含在一个更大的完全子图中。 G的最大团指的是定点数最多的一个团。 二、常用做法 1、 阅读全文
摘要:
题目大意 构造一条闭合路线,使得路线不能相交,并且走直线的步数小于等于 S,转弯(左转和右转)的步数小于等于 T。(0≤S,T≤1000) 求一条最长的路线 做法分析 注意到,因为要求路线闭合,那么转弯的数量 T 必须大于等于 4,否则无解。 适当 YY 下:只能用偶数个 S 和偶数个 T,不然不可 阅读全文
摘要:
题目大意 某人在打字机上打一个字符串,给出了他打每个字符出错的概率 q[i]。 打一个字符需要单位1的时间,删除一个字符也需要单位1的时间。在任意时刻,他可以花 t 的时间检查整个打出来的字符串,并且从当前光标删除到第一个出错的位置(留下的字符串要么为空,要么每个字符都是对的)。问你,他正确的打完该 阅读全文
摘要:
题目大意一条直线上有 n(1≤n≤300) 个点可以用来修洞,有 m(1≤m≤105) 个建筑公司,每个建筑公司 i(1≤i≤m) 需要 ci(1≤ci≤109) 的价钱修理包含于区间 [Li, Ri](1≤Li≤Ri≤n) 中的一段连续的洞。问至少修建 k(1≤k≤n) 个洞需要花费的最小价钱做法分析初一看像是求最大流,但是仔细一想,如果是网络流的话,建好的网络太大,绝对TLE,而且貌似这还不好建图果断放弃,想想DP怎么做可以这样想:f[i][p] 表示前 i 个洞中修建了 p 个洞需要花费的最小价钱,转移方程为: f[i][p] = min{ f[j][p-i-j]+c[j][i] ... 阅读全文
摘要:
题目大意有 n(1≤n≤3*105) 匹马,每条马都有几个敌人(不超过 3 个),现在要求把这些马分成两部分(允许一部分中没有一条马),使得对于每条马,和它在同一部分中的敌人的数量不超过1个给出了所有的敌对关系,求一个划分的方案。如果不存在划分方案,输出-1做法分析首先,观察下为什么题目给的数据范围这么奇葩:每条马的敌人的数量不超过 3 个这有什么用呢?想了很久,画了好几个图,最终确定,这样的条件下,一定是存在一个划分方案,使得每部分中,每条马的敌人数量不超过 1 个。可以考虑 4 个点的完全图,每个点的度是 3,对应了 3 个敌人,我们完全可以找出一种分配的方案使得这个图的点分成两个点集,那 阅读全文
摘要:
题目大意Farmer John 给了他的 cows 一个程序玩。这个程序有两个整形变量 x 和 y,并且在一个正数序列 a1 a2 a3,...,an(2≤n≤2*105,1≤ai≤109)中执行以下操作: 1、初始化 x=1, y=0,如果经过任何步骤之后 x≤0 或者 x>n,程序立刻停止运行 2、x 和 y 同时增加 ax(注意:增加的值是 a 序列中的第 x 个,也就是 ax) 3、x 减小 ax,y 增加 ax 4、程序重复执行步骤 2 和步骤 3 直至终止现在给了你 a2 a3 a4,...,an,程序总共运行了 n-1 次,第 i(1≤i≤n-1) 次运行... 阅读全文
摘要:
题目大意有 n(3≤n≤100)个站点,当第一次到达站点 u 的时候会增加寿命 au(1≤au≤103),题目给了 n个站点的二位空间坐标,每两个站点之间的距离为曼哈顿距离(dis(i, j)=|xi-xj|+|yi-yj|),从站点 i 到达站点 j 需要的时间为 dis(i, j)*d(d 是题目给定的一个常数,且 103≤d≤105)。某个人最开始的时候在站点 1,他想到站点 n 去,问,他最开始至少剩下多少寿命才能活着到达站点 n?做法分析很容易想到二分寿命值,但是怎么判断在某个具体的寿命下,能否到达第 n 个站点呢?注意题目给的数据范围:1≤au≤103且103≤d≤105想到了什么 阅读全文
摘要:
题目大意转化后是这样的:给了一个长度为 n(1≤n≤105) 的数组,求一个不相交的前缀和后缀,使得这个前缀和后缀中的所有数的异或值最大做法分析如果这种题目没见过类似的话,感觉挺神的,一个长度为 105 的数组,怎么去选前缀和后缀?不过不要惊慌,题目出出来是给我们做的,总有一线生机!先从最暴力的开始讲起:枚举每一个后缀,让他和所有不与之相交的前缀求异或值,那么转化成了: 给一个数 a,还有一堆数,怎么在这一堆数中找出一个数 b,a 和 b 的异或值最大?想想:肯定要先把 a 和这一堆数转化成二进制数,枚举 a 的最高位,要使异或值最大,那么 b 从最高位开始,就要尽量与 a 对应的位不同,.. 阅读全文
摘要:
题目大意给两个数组,A 和 B,以及 m 个操作。每个数组中保存 n 个数,操作分两类: 1 x y k :把 A 数组中的 [x, x+k-1] 这个区间中的数复制到 B 数组中 [y, y+k-1] 去 2 x 询问 B 数组中,第 x 个数是多少题目保证复制和查询操作是合法的其中:1≤n,m≤105做法分析基础线段树,节点中保存的信息是:这一个区间是否被 A 数组覆盖,如果是,对应了 A 数组中的哪个区间,然后就是按照操作在线的模拟就行了注意: 复制操作是后来居上的,会把全面的覆盖掉 如果当前点没有被覆盖,那么查询的时候输出的是 B 数组中原来在这个位置上的数,否... 阅读全文
摘要:
题目大意由两个长度为 n 的 1~n 的排列,定义一个排列的加法:c(i)=(a(i)+b(i)-2)%n+1,如果 c 也是一个 1~n 的排列话,这就是一个可行的加法现在给你一个长度 n(1≤n≤16),让你共有多少种可行的排列对,使得他们的加法也是一个排列做法分析首先肯定有这样的思路:固定一个排列,比如令 a 为 1,2,...,n那么,我们找出所有 b 的情况数量 cnt,最终的答案就应该是 cnt*n!看到 n 的数量级,就想去暴力试试,但是算了下 16 的阶乘,蛮大的,不管了,先写一个暴力,加点小剪枝,十多分钟后,表打出来了:然后贴着表过了,好没节操参考代码1、打表的代码 1 #i 阅读全文
摘要:
题目大意对于两个数字串 S 和 W,如果存在 i 和 j 使得:S(i)>W(i) && S(j)<W(j) 那么说这两个串是不可比较的,现在给了两个长度均为 n(1≤n≤105) 的串 S 和 W,用 '?' 代表未知的字母,问,有多少种可能的情况,使得 S 和 W 不可比较?做法分析这是 Div2 为数不多的比较坑的题目,当时比赛的时候貌似的时候才两三百人过 求出所有可能的情况的数量,设为 ans 求出 S 比 W 大的情况,即:S(i)≥W(i) 的情况数量,设为 res1 求出 S 比 W 小的情况,即;S(i)≤W(i) 的情况数量,设为 阅读全文
摘要:
题目大意有 n(1≤n≤50) 个人,每个人的体重要么是 50,要么是 100。现在他们都在河岸的一边,有一条船,最大栽种量为 K(1≤k≤5000),问:把所有人从河这岸运送到河对岸去,最少需要划船多少次,以及共有多少种不同的坐船方案使得划船次数最少做法分析注意题目给出的条件,每个人的重量要么是 50 要么是 100,大家肯定都注意到这点了,怎么利用呢?这样考虑: 在某个时刻,重量为 50 的人有多少个,重量为 100 的人有多少个,他们是在河的哪一边?想到这里,大家肯定就有思路了,可以 BFS,也可以求最短路,这样,最少需要划船的次数就求出来了至于多少种方案,BFS 或者求最短路的过... 阅读全文
摘要:
又到了一年招新的时候,数据结构又是第一个专题,简要写一下本专题的解题报告 先附上本专题题目地址:2013 UESTC ACM Training for Data Structure 不是本校的同学可以先看看题目 由于题目较多,不再一一叙述题意,只是简要的说说做法再贴个代码 A题 Hotel 简单线段 阅读全文
摘要:
题目大意这题建议大家先看看原题是怎么描述的,在看看我讲的中文题面,本来我打算直接翻译的,但是考虑到文字太多,还是算了原题链接:D. Optical Experiment我描述的中文题意:题意化简之后就是一个矩形,上下两边各有 n(1≤n≤106) 个点,每个上边的点只会和下边的一个点相连,构成一条线段,那么就有了 n 条线段,现在问:这 n 条线段中,最多有多少线段,他们两两相交?输出这个最大的线段数量做法分析把矩形上边的点依次重新编号(从小到大),下边对应线段的点编上相同的号假设 m 条线段两两相交,那么这 m 条线段在上边的编号必然是递增的,在下边的编号必然是递减的那么问题转化成了在下边求 阅读全文
摘要:
题目大意 给你一个括号串(包括'(',')','[',']'),长度不超过 100,问你怎么添加最少的括号,使得这个括号串是合法的,输出添加括号后的合法括号串 做法分析 以长度划分阶段,定义状态:f[i][j] 表示,s(i)~s(j) 这一个字串需要添加多少括号使得其变为合法字串,状态转移: f[ 阅读全文
摘要:
题目大意 给一个 n(1≤n≤30000) 个数,数的范围是 0~109。现在给了 Q 个询问,询问的内容是:一个区间 [L, R] 中,所有不同的数的和是多少? 其实和 HDU 3874 一个意思 做法分析 此题和 HDU 3874 一样的做法,唯一不同的是数的范围很大,我们需要离散化一下,当然, 阅读全文
摘要:
题目大意 给了 n(1≤n≤100000 个操作,每个操作要么是在集合中添加一个整数(在区间 [1, 109] 中,且保证不在集合中),要么是删除一个整数(保证在集合中),还有一个操作 sum,询问的是当前集合中,所有元素从小到大排列好之后,下标除以 5 余数为 3 的所有数的和 做法分析 先把所有 阅读全文