摘要:题目大意你有一行盒子,从左到右依次编号为1, 2, 3,…, n。你可以执行四种指令:1 X Y表示把盒子X移动到盒子Y左边(如果X已经在Y的左边则忽略此指令)。2 X Y表示把盒子X移动到盒子Y右边(如果X已经在Y的右边则忽略此指令)。3 X Y表示交换盒子X和Y的位置。4 表示反转整条链。盒子个...
阅读全文
摘要:题目大意 给定n个由小写字母组成的字符串和一个文本串T,你的任务是找出那些字符串在文本中出现的次数最多 题解 一个文本串,多个模式串,这刚好是AC自动机处理的问题 代码: #include #include #include #include #include #include #include using namespace std;const int maxnode=11111;const i...
阅读全文
摘要:题目大意 给定一个长度为n的字符串,求它的每个前缀的最短循环节 题解 白书例题~~~ ”错位部分“长度为i-f[i], 如果这个前i个字符能够组成一个周期串,那么”错位”部分刚好是一个循环节i-f[i]就是循环节长度~~~~ 代码: #include #include #include #include using namespace std;#define MAXN 1000005int f...
阅读全文
摘要:题目大意 给定一个长度为n的整数序列,求个最长子序列(不一定连续),使得该序列的长度为奇数2k+1,前k+1个数严格递增,后k+1个数严格递减。注意,严格递增意味着该序列中的两个相邻数不能相同。n#include #include #include using namespace std;#define MAXN 10005int a[MAXN],c[MAXN],d[MAXN];int n;vo...
阅读全文
摘要:题目大意 给定一个包含n(n#include #include #include using namespace std;#define MAXN 105#define INF 0x7fffffffint dp[MAXN*2][MAXN];bool grah[MAXN][MAXN];int a[MAXN*2];int main(){ int T; scanf("%d",&T); ...
阅读全文
摘要:题目大意 给定一个字符串,要求你删除尽量少的字符,使得原字符串变为最长回文串,并把回文串输出,如果答案有多种,则输出字典序最小的 题解 有两种解法,第一种是把字符串逆序,然后求两个字符串的LCS,并记录LCS,长度就等于最长回文串的长度,不过求出来的LCS不一定是回文串,例如下面这个例子 s = 1 5 2 4 3 3 2 4 5 1reverse(s) = 1 5 4 2 3 3...
阅读全文
摘要:题目大意 给定一个小写字母组成的字符串S,你的任务是划分成尽量少的回文串 题解 方程就是dp[j]=min(dp[i-1]+1)(i#include#include#includeusing namespace std;#define MAXN 1005char s[MAXN];int dp[MAXN];bool check(int l,int r){ int len=(l+r)/2; ...
阅读全文
摘要:题目大意 给定一个长度为n的序列A,可以对其进行一下两种操作: 1、query (L, R) 查询区间[L,R]的最小值 2、shift(i1, i2, i3,..., ik)(i1 < i2 < ... < ik, k > 1) 把元素A[i1],A[i2],…,A[ik]循环移动 题解 区间最小值查询+单点修改。。。水题。。。。 代码: #include<iostream>#include<c...
阅读全文
摘要:题目大意 定义了一种叫做Reverse Prime的数:位数为7位,倒转之后是六位的素数 要求按顺序找出所有的Reverse Prime,并计算出每个Reverse Prime的因子数 可以对这些数进行一下两种操作: 1、“q i”查询区间[0,i]Reverse Prime的因子数之和 2、“d reverse_prime”把reverse_prime这个Reverse Prime从序列中删除 ...
阅读全文
摘要:题目大意给定n个数,你的任务是实现如下两种操作:“S x y“ 把第x个数修改为y“M x y”计算第X个数到第Y个数之和题解这刚好是树状数组的功能,修改元素的值和求区间和代码#include<iostream>#include<cstdio>#include<cstring>#include<string>#define MAXN 200005using namespace std;int n;int c[MAXN];int lowbit(int x){ return x&-x;}void add(int x,int d){ while
阅读全文
摘要:题目大意给定两个数n和m,如果长度为m的数满足对于每个i(n<=i<=m),数字的前i位都能被i整除,那么这个数就是超级数,求出字典序最小的符合要求的超级数。题解直接暴力就行,如果每次进行整除判断的时候,对当前数每位都进行取余运算,那么将会超时,因此每18位进行一次取余(long long的数据范围为:-9223372036854775808..9223372036854775807,这样在1S左右就可以AC了。#include<iostream>#include<cstdio>#include<string>using namespace st
阅读全文
摘要:题目大意美丽的村庄里有一条河,N个石头被放置在一条直线上,从左岸到右岸编号依次为1,2,...N。两个相邻的石头之间恰好是一米,左岸到第一个石头的距离也是一米,第N个石头到右岸同样是一米。礼物被放置在第M个石头上,Frank从左岸开始跳跃,对于第i步,必须跳2*i-1米,每次可以向左方向跳,也可以向右方向跳,跳到河岸跳跃就结束了,问Frank能否拿到礼物。题解每次跳跃有两种选择,向右或者向左,用搜索非常的好实现,只是2<=N<=10^6必须得跪。。。实在想不出怎么优化。。。看了下网上的题解,当N>=49一定能跳跃到M的位置上,直接输答案即可。。。即N<49用搜索,N&g
阅读全文
摘要:题目大意如果一个数为n=x*y,符合以下要求:1、n为偶数,位数L为4或者6或者82、x和y的位数都为L/23、x和y两个数字连接在一起,然后进行重排可以得到n4、x和y两者的尾数不能同时为0找出所有满足上述条件的数字。题解果断暴力搜索,先进行预先计算(和打表差不多了。。),把n等于4和6以及8的符合的数字计算出来并存储好,我们用set容器来存储,如果用vector容器的话,输出顺序将不是有序的,因此我们选择set容器。刚开始我是用sprintf函数把数字转化成字符串,然后在进行相应的操作的,提交上去的时间异常恐怖啊17.237S。。。然后没用这个函数之后。。时间少了好多。。。只要2.748S
阅读全文
摘要:题目大意给定N个单词,要求你用Nottoobad编辑器进行输入,如果你当前需要输入的单词与之前一个已经输入的单词有公共部分,那么这公共部分是不需要输入的,只需要粘贴复制即可,第一个单词必须全部输入,其他的单词可以按任意顺序输入,要求你安排一个输入顺序,使得输入操作的次数最少。题解一个很简单的贪心,每次输入选择与前一个输入的单词的公共部分长度最长的单词即可,如果公共部分为0,则输入任意一个单词都行。#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXN 105int f[MAXN];c
阅读全文
摘要:题目大意给定一个长为N,宽为M的屏幕,屏幕上有一些窗口,窗口之间有一些重叠,求出在最顶端的窗口。题解就是一个很简单的模拟,不过有一个坑爹的地方,那就是窗口的嵌套,例如这样的数据5 5AAAAAABBBAAB. BAABBBAAAAAA答案是B,而我刚开始写的代码会输出AB,因为我只是判断是否为完整的矩形。即如果是最顶端的窗口,那么它的内部应该全部是'.'。#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXN 105int visit[MAXN][MAXN];int
阅读全文
摘要:题目大意有N个物品,每个物品在都有一个截止日期,如果在截止日期之前(包括截止日期)卖出将会获得相应的利润,卖出物品需要一个单位时间,问最多能获得多少利润?题解和UVa1153的解题思路是一样的,用优先队列来维护(小根堆),先让物品按截止时间升序排序,设ans为已选择物品需花费的总时间(等于优先队列的元素个数),那么对于某个物品如果它的截止日期大于ans,则加入优先队列,如果小于或者等于ans,再判断它的利润是否大于优先队列中利润最低的那个物品的利润,如果大的话,用这个物品替换优先队列中利润最低的那个物品,用截止时间长利润大的物品替换截止时间短利润小的物品肯定是更优的选择。#include<
阅读全文
摘要:题目大意给定一个长度为N的序列A,找出两个整数A[i]和A[j](i<j),使得A[i]-A[j]尽量大题解最简单的做法就是直接用二重循环枚举A[i]和A[j],不过对于N=10000的数据量显然会超时。对于每个j,我们要找到最大的A[i],只要在枚举j的时候顺便用一个变量维护一下A[i]的最大值就行,这样时间复杂度就由O(N^2)降低到O(N)了。代码#include<stdio.h>#include<stdlib.h>#define MAXN 100005#define INF 0x7ffffffflong a[MAXN];long MAXS;long max
阅读全文
摘要:Simon and Garfunkel Corporation (SG Corp.) is a large steel-making company with thousand of customers. Keeping the customer satisfied is one of the major objective of Paul and Art, the managers.Customers issue orders that are characterized by two integer valuesq, the amount of steel required (in ton
阅读全文
摘要:John is the only priest in his town. October 26th is the John's busiest day in a year because there is an old legend in the town that the couple who get married on that day will be forever blessed by the God of Love. This yearNcouples plan to get married on the blessed day. Thei-th couple plan t
阅读全文
摘要:In the morning, service engineers in a telecom company receive a list of jobs which they must serve today. They install telephones, internet, ipTVs, etc and repair troubles with established facilities. A client requires a deadline when the requested job must be completed. But the engineers may not c
阅读全文