这两天刷了两道过去的原题,看看思维还是8太行. 这道题问给出两个字符串,要求只翻转一次,问有几种不同的方法使得a串变成b串 我一开始没看到只翻转一次,还以为是个计数 + 字符串dp大难题,心想当年的学长队伍真厉害啊能上去拿1血,结果仔细看了看发现是个水题,只转一次,那就记录最大相等的串,然后翻过来看相等不相等,然后向外向内拓展看有没有头 == 尾的情况就行了,水题一道,8多说 #include <bits/stdc++.h> using namespace std; #define limit…
这道题有点意思,给出点(N,N),你在原点处向目标点走,每次只能向x和y两个方向走路,每次xy两个方向的步幅分别不能小于dx和dy,问走到终点的方案数,答案对1e9 + 7取模 这道题最直接的想法就是爆搜,但是看了眼数据,1e6,状态都开不下.然后就发现x和y的走路是独立的,所以可以分而治之,x和y分别处理,相乘即为到x,y的方案数,相乘即为源点到(x,y)的方案数.刚开始感觉像是个完全背包,但是自己写了个之后感觉算法假了,完全背包的统计不正确而且有遗漏和重复,还有不合法的状态也加了进来.然后自…
这道题看上去太像tarjan缩点了,我一上去本来想把所有的环给缩掉然后统计答案,后来发现哦,这道题不是这么回事儿. 给出黑边红边,一次性走至多只能走一次黑边,问有多少个点可以走到,并且让机器人停下来,就一次这也不是很难么,但是如果k >= 2就很难说了 爆搜就完事儿了,遇到黑边改一次再走,如果一个点走不通了就统计一下,记得入点要特判 #include <bits/stdc++.h> using namespace std; #define limit (20000 + 5)//防止溢出…
2015 asia xian regional F Color (容斥 + 组合数学) 题目链接http://codeforces.com/gym/100548/attachments Description Recently, Mr. Bigrecieved n flowers from his fans. He wants to recolor those flowerswith m colors. The flowers are put in a line. It is not allow…
[LOJ#6066]「2017 山东一轮集训 Day3」第二题(哈希,二分) 题面 LOJ 题解 要哈希是很显然的,那么就考虑哈希什么... 要找一个东西可以表示一棵树,所以我们找到了括号序列. 那么二分一个答案\(d\),把所有点挂到\(d+1\)次祖先上去,那么\(d+1\)次祖先的哈希值就是它原本的括号序列挖去了若干段,直接暴力哈希拼接起来就好了. #include<iostream> #include<cstdio> #include<cstdlib> #inc…
在这一专辑(最小生成树)中的上一期讲到了prim算法,但是prim算法比较难懂,为了避免看不懂,就先用kruskal算法写题吧,下面将会将三道例题,加一道变形,以及一道大水题,水到不用高级数据结构,建树,画图,最短路径什么的,统统不需要.废话不多说,直接看题: 1.例题精讲 T1: 1348:[例4-9]城市公交网建设问题 时间限制: 1000 ms         内存限制: 65536 KB提交数: 2094     通过数: 650 [题目描述] 有一张城市地图,图中的顶点为城市,无向边代…
题目描述dzy 定义一个 $n^2$ 位的数的生成矩阵 $A$ 为一个大小为 $n \times n$ 且 Aij 为这个数的第 $i \times n+j-n$ 位的矩阵.现在 dzy 有一个数 $n^2$ 位的数 k,他想知道所有小于等于 k 的数的 $n \times n$ 生成矩阵有多少种.(如果不足 $n^2$ 位则补前缀零)输入输出格式输入格式第一行一个数 $n$,第二行一个 $n^2$ 位的数 $k$输出格式仅一行表示答案,答案可能很大,你只需输出答案对 $10^9 + 7$ 取模…
题目:http://codeforces.com/problemset/problem/198/B Jumping on Walls time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Vasya plays a computer game with ninjas. At this stage Vasya's ninja shou…
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1621\(n\)头奶牛,刚开始在一起,每次分成\(x\)和\(x+m\)两部分,直到不能再分,问最后一共有几部分. 分析 可以知道当前奶牛数\(n=x+x+m\),所以可以继续分的必要条件是\(n-m>=2\),然后dfs就好了... 对于大数据,\(m=1000\)和\(m=1\)并没有什么区别,所以可以认为搜索时候一直是二分的,所以有\(log_2^n\)层,最下面一层有\(2^{log_…
一道大水题 时间限制: C/C++ 2000ms; Java 4000ms 内存限制: 65535KB 通过次数: 44 总提交次数: 1020 问题描述 Dr. Pan作为上兰帝国ACM的总负责人,对队员的队员的训练也是日常关心,他要求每周要有一位队员出一道题目.不知过了多少年,终于轮到Shiyiliang出题了,他费尽脑汁,终于出了一道大水题 给定一个偶数n,n的取值范围为[-1e18,1e18],要求一对整数x,y满足以下条件: 1.x*y==n 2.x与n必须同号,即如果n>0则x>0…
快速排序有一个特点,就是在排序过程中,我们会从序列找一个pivot,它前面的都小于它,它后面的都大于它.题目给你n个数的序列,让你找出适合这个序列的pivot有多少个并且输出来. 大水题,正循环和倒着循环一次,统计出代码中的minnum和maxnum即可,注意最后一定要输出'\n',不然第三个测试会显示PE,格式错误. #include <iostream> #include <cstdio> #include <algorithm> #include <map&…
如题,大水题...贴个代码完事,就这么任性~~ #include <iostream> #include <cstdio> #include <algorithm> #include <string.h> #define INF 0x3f3f3f3f using namespace std; /* 求满足下面的最大的E: 恰好有E个天的行程都大于E miles 从小到大排序,倒着循环一遍,直到最小值<=天数为止,此时的天数-1即为答案. */ +; i…
链接:Wannafly挑战赛21:C - 大水题 题意: 现在给你N个正整数ai,每个数给出一“好数程度” gi(数值相同但位置不同的数之间可能有不同的好数程度).对于在 i 位置的数,如果有一在j位置的数满足 j < i 且 ai=aj,则你可以将位于[i,j]闭区间内的序列评为“好序列”,然后获得∑gk(j≤k≤i)(此闭区间内“好数程度”之和)分数. 注意: 在所有情况下,每个数都只能被一个”好序列”包含(只能与其他相应数被评为”好序列”一次):在符合要求的情况下,”好序列”的评定次数不受…
CODE FESTIVAL 2017 qual B B - Problem Set 确实水题,但当时没想到map,用sort后逐个比较解决的,感觉麻烦些,虽然效率高很多.map确实好写点. 用map: #include<iostream> #include<cstdio> #include<cstdlib> #include<map> using namespace std; map<int,int>mp; int main() { int n,…
[题目链接] A - Streets of Working Lanterns - 2 首先将每一个括号匹配串进行一次缩减,即串内能匹配掉的就匹配掉,每个串会变成连续的$y$个右括号+连续$z$个左括号. 我们把缩减后的串分成四类: 第一类:只有左括号 第二类:左右括号都有,且$z$大于等于$y$ 第三类:左右括号都有,且$z$小于$y$ 第四类:只有右括号 类与类之间肯定是按第$1$,$2$,$3$,$4$类的顺序放置. 第一类内部和第四类内部可以随便放.第二类的放置顺序也很容易想. 问题出在第…
昨晚各种莫名其妙卡题. 不过细看这套题还挺简单的.全是各种暴力. 除了最后一道题计算几何看起来很麻烦的样子,其他题都是很好写的吧. A. Babs' Box Boutique 题目大意是给出不超过10个的长方体,然后求怎样堆叠使得放的长方体最多. 堆叠的要求是长方体一个一个的往上放,要求接触的面,上面的面长和宽不能比下面的面大 那么每个长方体有三个面,我们就3^n枚举每个长方体使用的哪一面放的. 然后按照这些面的宽进行排序,做一下LIS即可 #include <iostream> #inclu…
f(cos(x))=cos(n∗x) holds for all xx. Given two integers nn and mm, you need to calculate the coefficient of x^mx​m​​ in f(x)f(x), modulo 998244353998244353. Input Format Multiple test cases (no more than 100100). Each test case contains one line cons…
题目描述 小D的家A和学校B都恰好在以点F为焦点的双曲线上,而小D每日所需的生活水源在一条平行该双曲线准线的直线上,设它的值为v.大家都知道,每天都是要喝水的,但是小D有点懒,他希望自己能在去上学或者回家的时候顺路打桶水,并且走最短的路,你能帮助他吗? 下图所示样例的情况,已知焦点在x轴上,那么其准线垂直x轴,即x=v,故可作出河流所在直线如图,那么最优路线为从家A到点C(0,5.8888889)取水,然后再到学校B,那么总长度就是这两段各自距离之和,即|AC| + |CB|. 输入 第一行输入…
题目大意:给你\(A\)个a,\(B\)个b,\(C\)个c,要你构造一个字符串,使它的最小循环表示法最大.求这个表示法.解题思路:不知道怎么证,但把a.b.c当做单独的字符串扔进容器,每次把字典序最小的和字典序最大的两个字符串合并就是答案.容器用multiset即可. C++ Code: #include<cstdio> #include<set> #include<string> using namespace std; multiset<string>…
A triangle is a Heron’s triangle if it satisfies that the side lengths of it are consecutive integers t−1, t, t+ 1 and thatits area is an integer. Now, for given n you need to find a Heron’s triangle associated with the smallest t bigger than or equa…
#1632 : Secret Poems 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 The Yongzheng Emperor (13 December 1678 – 8 October 1735), was the fifth emperor of the Qing dynasty of China. He was a very hard-working ruler. He cracked down on corruption and his reign wa…
题意:在\(x\)轴上有很多传送点和钻石,当位于传送点上时,可以传送到其他任意传送点(不记操作数),位于钻石上时可以吃掉它,每次可以移动一个单位,问最少多少次可以吃掉所有的钻石. 题解:对于某个位置上的钻石,我们可以从它左边的传送点走过来,或者从它右边的传送点走过来,又或者从上一个钻石的位置直接走过来,我们每次在这三个距离中取最小即可.具体怎么实现呢?我们首先考虑左右传送点的情况,遍历每个钻石的位置,然后记录当前这个钻石到左传送点或右传送点的最小距离,之后再次遍历钻石位置,比较\(上个钻石走回传…
题意:给你一个字符串,可以交换两个字符的位置,问操作后能否在字符串中找到子串\("happiness"\),如果不能,输出交换的两个位置. 题解:这题其实用string中的find函数很是方便啊,假如字符串中不含子串,我们判断一下交换\(1\)和\(2\)位置的字符后是否含有子串,如果有就直接交换\(1\)和\(3\),没有当然就是\(1\)和\(2\)啦.在考虑有子串的情况,如果含有\(1\)个子串,就直接交换子串的第一个和第二个位置,如果含有两个子串,就交换第一个子串的第一个位置和…
题意:有\(n\)个吃鸡玩家,在某个时间段给你他们每个人的杀敌数,判断数据是否合法,并输出每个人对应的杀敌情况. 题解:刚开始写的是直接暴力枚举,向后去找并且标记,然后存到vector最后输出,结果一直MLE,后来发现可以用双指针来搞.首先只要总杀敌数不大于\(n-1\),那么就永远都是合法的,然后不难发现,因为是降序排列,那么后面的人都可以是前面人的炮灰,所以我们用左指针反着找到第一个不为\(0\)的数,每次对左指针所在的数\(-1\),那么右指针就要向左移一个(因为它被左指针干掉了),若左指…
http://www.lydsy.com/JudgeOnline/problem.php?id=2017 这题太神了,我想了一个中午啊 原来是看错题一直没理解题解说的,一直以为题解是错的QAQ “开始玩游戏时,第一个玩家可以从堆顶拿走一枚或两枚硬币” 果然还是太弱 我们发现,每一个阶段都由上一个玩家决定的,即别人怎么拿限制了我怎么拿,那么 设状态为f(i, j)表示剩余i个硬币,上次拿了j个硬币,注意,是上一次! 则 f(i, j)=max{sum(1, i)-f(i-k, k)} 1<=k<…
点此看题面 大致题意: 维护序列,支持区间加法,区间除法(向下取整),区间求\(min\)和区间求和. 线段树维护区间除法 区间加法.区间求\(min\)和区间求和都是线段树基本操作,因此略过不提. 此题关键在于维护区间除法. 而这有一个复杂度玄学的做法,即将区间除法转化为区间减法. 可以考虑对于每个区间,记录下其最小值和最大值,若最小值和最大值做区间除法所需减去的数相等,则易证整个区间所需减去的数相等. 则我们可以将区间\([l,r]\)分成若干个区间,直至区间最小值与最大值相等即可. 代码…
看了逆波兰表达式之后,发现真是强悍的数据结构,栈的应用怎么感觉一辈子也学不完了呢 后缀表达式即逆波兰表达式,就是将所有的运算符按照一定的等级全部都安排到数字的后面去,实现正确的运算法则. OK,代码要自己好好看,理解了自然就很简单. #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<time.h> using namespace std…
  Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status Description 读入两个小于10000的正整数A和B,计算A+B.需要注意的是:如果A和B的末尾K(不超过8)位数字相同,请直接输出-1.    Input 测试输入包含若干测试用例,每个测试用例占一行,格式为"A B K",相邻两数字有一个空格间隔.当A和B同时为0时输入结束,相应的结果…
Problem Description You are given a sequence of N integers. You should choose some numbers(at least one),and make the product of them as big as possible. It guaranteed that **the absolute value of** any product of the numbers you choose in the initia…
题目链接 F(N) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4579 Accepted Submission(s): 1610 Problem Description Giving the N, can you tell me the answer of F(N)? Input Each test case contains a si…