![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ural
文章平均质量分 65
允雨琉
永远的萌新
展开
-
ural1010 Discrete Function
不难发现倾角最大的肯定是相邻两点。 #include using namespace std; typedef long long LL; const int N = 100005; LL a[N]; int main() { int n; scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%lld", &a[i])原创 2017-02-24 00:50:30 · 256 阅读 · 0 评论 -
ural1009 K-based Numbers (递推)
设f[i][0]表示取了i个数最前面的数为0的合法数的数量,f[i][1]表示取了i个数最前面的数不为0的合法数的数量 则 f[i][0] = f[i - 1][1] f[i][1] = (k - 1) * (f[i - 1][0] + f[i - 1][1]) 边界条件 f[1][0] = 1 f[1][1] = k - 1 (代码中习惯性地使用dp作为数组名,不用在意) #原创 2017-02-23 20:54:09 · 259 阅读 · 0 评论 -
ural1005 Stone Pile (枚举)
枚举n个石头的状态(即分在左还是右),然后找到答案最小的状态。 #include using namespace std; int a[25]; int main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); int ans = 0x3f3f3f3f;原创 2017-02-22 22:58:05 · 361 阅读 · 0 评论 -
ural1017 Staircases (动态规划)
设dp[i][j]表示使用i个砖块,最后一个台阶的方块数量为j的不同方案数(先不考虑条件Every staircase consists of at least two steps) 那么状态转移方程即为dp[i][j] = ∑dp[i-j][k] (0 最后考虑每个楼梯都必须包含至少两层,这时只需要最终答案减1便可 #include using namespace std; typ原创 2017-02-22 19:59:06 · 697 阅读 · 0 评论 -
ural1000 A+B Problem
#include using namespace std; int main() { int a, b; scanf("%d%d", &a, &b); printf("%d\n", a + b); return 0; }原创 2017-02-17 16:01:42 · 219 阅读 · 0 评论 -
ural1001 Reverse Root (递归)
读入时可以直接使用long long的读入,会自动跳过空格 由于输出是反方向的,这时我们便可以利用递归的特性来输出 #include using namespace std; void Read() { long long x; if (scanf("%lld", &x) != EOF) { Read(); printf("%.4f\n",原创 2017-02-17 16:05:12 · 289 阅读 · 0 评论 -
ural1028 Stars (树状数组)
因为数据中的y坐标已经是安照升序排序,所以可以完全不用考虑y,只考虑x。由于之前的y坐标都小于等于当前的,后面的肯定也不会等级比当前点低,所以我们只需要统计之前的点中x坐标小于等于当前点的有多少个,这种的话,可以很容易想到使用树状数组来维护。 #include using namespace std; const int N = 320005; int sum[N], ans[N]; in原创 2017-02-22 17:14:08 · 630 阅读 · 0 评论 -
ural1014 Product of Digits (枚举)
从9到2对原来的数进行试除,除完之后若不等于1,则无解,否则将之前的试除出来的因子从小到大输出。特殊情况:0的时候为10,1的时候为1。 #include using namespace std; int a[100]; int m; int main() { int n; scanf("%d", &n); if (n == 0) { printf("10\原创 2017-02-22 19:15:46 · 161 阅读 · 0 评论 -
ural1007 Code Words (字符串处理)
三种情况分别对应m n。然后对每一位进行枚举判断即可。有几个地方要注意一下: 1. 对于n = m的情况,只能将1改为0,而不能将0改为1。 2. 数据中字符串的数目并不是n。 3. 可能原字符串就是正确答案(样例中已经包含了这种情况)。 #include using namespace std; char s[3010], ss[3010]; bool IsOk(char *s,原创 2017-02-26 15:24:32 · 296 阅读 · 0 评论