「日常训练」Equation(HDU-5937)】的更多相关文章

题意与分析 时隔一个月之后来补题.说写掉的肯定会写掉. 题意是这样的:给1~9这些数字,每个数字有\(X_i\)个,问总共能凑成多少个不同的等式\(A+B=C\)(\(A,B,C\)均为1位,\(1+2=3\)和\(2+1=3\)视为不同等式)? 这题的搜索稍微有一些技巧:先暴力再搜索,而不是起手就搜索.怎么个暴力呢?把所有能够构成\(A+B=C\)的情况先全部穷举出来,然后看先有的这些bricks的数目能不能够实现这些情况--这就是基础搜索了.两种情况:a)当前情形能够用,答案+1:b)当前情…
题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为子串不重叠且出现次数最多的串. 看起来很简单对吧,做法也很简单,先排序字符,然后枚举合法的B串能在A串中出现的次数,看能有几个C串,然后求个最优解就行了.是不是很简单?然后WA了十几发,各种捉bug,太杀妈了. 这份代码看起来贼简单,这是我写的第三版了.... 这种字符串题目太苦手了QAQ 代码 #…
题意 数论中的错排问题.记错排为Dn" role="presentation">DnDn,求Dnn!" role="presentation">Dnn!Dnn!. 分析 显然D1=0,D2=1" role="presentation">D1=0,D2=1D1=0,D2=1.当n≥3" role="presentation">n≥3n≥3时,不妨设n排在了第k位,其…
题目简述 有排成一行的n" role="presentation">nn个方格,用红(Red).粉(Pink).绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色,求全部的满足要求的涂法. 分析 首先感谢题解,我个人想半天是出不来的. 考虑第n个与第n-1个的关系.因为第n个不能和第1个同色,那么第n个颜色就是我们判断的突破口,而它是由第n-1个决定的.如果第n-1个保持原来的状况不变,那么第n个只能有一种可能,整个情况数就是原来…
与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStream; public class Main { static class Node { int r, c, t; public Node(int _r, int _c) { this(_r, _c, 0); } public Node(int _r, int _c, int _t) { r=_r;…
题意与分析 感谢https://www.cnblogs.com/Leohh/p/7512960.html的题解.这题话说原来不在我的训练范围,正好有个同学问我,我就拿来做做.数学果然不是我擅长的啊,这么简单我都不会... 简单说下自己的理解. 从原题出发容易得到的朴素算法容易超时,所以要想到转化问题.原题要求1~n的因数之和,反过来说,就是求1~n中有几个数分别是1.2.….n的倍数.这个弯子转过来,题目就容易写了.直接变成O(n)算法. 有趣的是,如果数据规模变为$10^{12}$,这道题该如…
题意 (Codeforces 548D) 对一个有$n$个数的数列,我们要求其连续$x(1\le x\le n)$(对于每个$x$,这样的连续group有若干个)的最小数的最大值. 分析 这是一道用了单调栈的题目,用的贼好.算是第一次应用吧. 我们定义$l_i$为左侧比第$i$个数小的数的下标的最大值(没有就是0):$r_i$就是右侧比第$i$个数小的数的下标的最小值(没有就是$n+1$).这样定义完后,我们会发现,$a_i$是$[a_{l_i+1},a_{r_i-1}]$的最小值,也就是siz…
题意(CodeForces 548B) 每次对01矩阵中的一位取反,问每次操作后,单列中最长连续1的长度. 分析 非常非常简单,但是我当时训练的时候WA了四次...无力吐槽了,人间 不值得.jpg 代码 #include <bits/stdc++.h> #define MP make_pair #define PB push_back #define fi first #define se second #define ZERO(x) memset((x), 0, sizeof(x)) #de…
今天做的题目就是抱佛脚2333 懂的都懂. 这条题目干了好几天,最后还是参考别人的代码敲出来了,但是自己独立思考了两天多,还是有收获的. 思路分析 做这条题我是先按照之前的那条题目(The SetStack Computer)的思路敲了半天,但是efficiency是贼鸡儿低,而且最后我搞不明白怎么输出结果了....然后只好参考了这位同学的代码.思路大致是跟着lrj的走的,具体的实现有些需要注意的地方. 代码 #include <bits/stdc++.h> #define QUICKIO #…
题意 给定两个数组c和t,可以对c数组中的任何元素变换\(c_i\)​成\(c_{i+1}+c_{i-1}-c_i\)​,问c数组在若干次变换后能否变换成t数组. 分析 这种魔法题目我是同样的没做过.Editorial里说用差分来能够看出思路.问题是,如何能够想到差分来做?因为它的变换就是相邻的数的加减法,那么想要找到思路的突破口必须也得从这里突破. 考虑变换前后的数组: 原来:\(a_{i-1}, a_i, a_{i+1}\) 之后:\(a_{i-1}, a_{i-1}+a_{i+1}-a_i…