ZROI WC Round1 题解

Problem A

题意

一个 \(n \times m\) 格子图,一个人从左上角出发,每次向右或者向下走一格,方法如下:

  • 如果他在最下面一排,那么他会往右行走。如果他在最右边一排,他会往下行走。
  • 否则他看下面和右边的数字那个更大,他会选择一个更大的格子走过去。如果碰到两个相同的格子,那么他会往右走。

现在给每个格子填上一个 \(0 \sim S\) 之间的数,要求这个人这个格子图上从左上走到右下经过的格子和恰好是 \(S\),求有多少个不同的格子图满足条件

\(1 \leq n,m \leq 2500,1 \leq S \leq 100\)

题解

一个显然的 \(\text{dp}\) 是 \(f[i][j][k]\) 表示当前走到 \((i,j)\) 这个格子,经过的格子的权值和是 \(k\) 的方案数

然后可以枚举下一步向右还是向下和格子上的数,做到 \(O(n^4)\),可以得到 \(60\) 分

考虑怎样化简状态,首先发现,对于一条路径,我们只需要考虑它接触右边或者下边之前的部分,因为一旦它在最下面一排或者最右面一列,就必须向一个方向一直走,并且要求这一部分加上之后总和是 \(S\),这一部分可以用 \(\text{dp}\) 预处理。

那么把一条从左上到右下的路径定位在第一次走到右边界或者下边界的位置,发现对于两条路径,如果他们对应的位置相同,他们可以认为是等价的。原因如下:

不难发现一条路径所能影响到的格子是路径长度的两倍,即每走一格之前都比较一次,影响两个格子

对于对应点相同的两条路径,他们向右走的次数和向下走的次数也相同,所以影响到的格子数相同,并且每次比较时右边大的数量和下边大的数量都分别相同,所以我们可以移动其中一条路径的一些格子,把它变成另一条路径。

那么我们考虑枚举对应的位置,不妨设当前枚举到右边界,结束位置为 \((i,m)\),不难发现向右走 \((m-1)\) 次,向下走 \((i-1)\) 次,比较次数为 \((m+i-2)\),经过的格子数是 \((m + i - 1 + m + i - 2 + n - i)\) (包含了最后一段的格子数),不影响到的格子就是 \(n\times m\) 减去上面的式子,所有不影响到的格子都可以填任意数,然后枚举所有向右走的和以及向下走的和,\(\text{dp}\) 预处理出向右走 \(i\) 次,和为 \(j\) 的方案数,向下走 \(i\) 次,和为 \(j\) 的方案数,综合算一下即可,复杂度 \(O(nS^2)\)

Review

考场上我想到了找对应点并且把路径化归成 \(O(n)\) 条本质不同的路径,但是在处理向右向下次数的时候遇到了问题,其实就是我没有发现对应点相同的路径向右向下次数分别相同

Problem B

见 我自己的题解

Problem C

题意

有一个 \(n\) 个点 \(m(m≤n+15)\) 条边的无向连通图,求这个图的简单环的个数。简单环指不经过同一个节点两次的环。

题解

注意到非树边很少,所以可以把非树边拎出来建虚树,然后爆搜,然后惊人地发现过了。。。

事实上正解就是缩图之后爆搜。。。

考试的时候因为明显认为爆搜搜不了就没写虚树。。。

Review

要大胆地爆搜

ZROI WC Round1 题解的更多相关文章

  1. ZROI WC Round5 题解

    ZROI WC Round5 题解 Problem A 题意 给定一个长度为 \(n\) 的序列,操作是交换两个相邻的数,要求将序列变成先单调不降再单调不升,求最小操作数,注意可以完全单调不降或者完全 ...

  2. WC 2018 题解

    WC 2018 题解 一些感受.jpg 题目难度相较前些年会相对简单一点?(FAKE.jpg 平均码量符合WC风格?(甚至更多一点 出题人良心! [WC2018] 通道 一个不知道对不对的$\log ...

  3. ZROI 部分题目题解

    ZROI 部分题目题解 335 首先发现一个性质: 对于最短的边而言,所有点的路径如果经过了这条边,那么路径的权值就是这条边的边权(废话) 那么我们把最短的边拎出来,可以发现,博物馆确定时,每个点按照 ...

  4. 【待填坑】bzoj上WC的题解

    之前在bzoj上做了几道WC的题目,现在整理一下 bzoj2115 去膜拜莫队的<高斯消元解xor方程组> bzoj2597 LCT维护MST bzoj1758 分数规划+树分治+单调队列 ...

  5. SDOI2016 Round1 题解

    BZOJ4513 储能表 数位DP,f[i][2][2][2]表示前i位,是否卡n的上界,是否卡m的上界,是否卡k的下界,枚举每一维的下一位直接转移. #include<cstdio> # ...

  6. SDOI2017 Round1 简要题解

    我们 TM 怎么又要上文化课..我 哔哔哔哔哔哔 「SDOI2017」数字表格 题意 有 \(T\) 组数据,求 \[ \prod_{i = 1}^{n} \prod_{j = 1}^{m} fib[ ...

  7. 【ZROI 537】贪心题 题解

    [ZROI 537]贪心题 题解 Link Solution 最大的一边直接放到一起贪心即可 着重讲小的一边 已知对于二分图匹配,其答案即为最大流 令时间集合为 \(T = {1,2,3,\dots, ...

  8. 【题解】JSOIWC2019 Round1

    题面(T1变成5s(毒瘤出题人发现std超时了qaq)): 啥都不会qaq.但也送了不少分 题解: T1: 当T=0时直接异或前缀和,但T=1时就有点恶心 暴力能有80pts(防止大家爆零) 还珂以用 ...

  9. Codeforces Global Round1 简要题解

    Codeforces Global Round 1 A 模拟即可 # include <bits/stdc++.h> using namespace std; typedef long l ...

随机推荐

  1. BZOJ 3016 [Usaco2012 Nov]Clumsy Cows:贪心

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3016 题意: 给你一个括号序列,问你至少修改多少个括号,才能使这个括号序列合法. 题解: ...

  2. ThreadPoolExecutor线程池进阶使用

    一.简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int ...

  3. tensorflow实现svm iris二分类——本质上在使用梯度下降法求解线性回归(loss是定制的而已)

    iris二分类 # Linear Support Vector Machine: Soft Margin # ---------------------------------- # # This f ...

  4. (转)C++经典面试题(最全,面中率最高)

    1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与free是C++/C语言的标准库函数,new ...

  5. 如何解压deb文件

    有两种方法: Bash代码 1.dpkg -x xx.deb /tmp/oo 注意:/tmp/oo为自己解压文件路径,可以随意指定路径 2.ar -vx xx.deb 这会解压出3个文件debian- ...

  6. poj3709 K-Anonymous Sequence[贪心+斜率优化dp]

    地址 n个数,可进行把一个数减小的操作,代价为减小的值.现求使数列任意一个数都存在至少k-1个数和他相同,问操作的最小代价. 可以先考虑最小的数,由于只能减,所以必须得至少k-1个数减为最小数,贪心策 ...

  7. 洛谷 U6931 灯光

    题目背景 明天就是校园活动了,小明作为场地的负责人,将一切都布置好了.但是在活动的前几天,校园里的灯却都坏掉了,无奈之下,只好再去买一批灯.但是很遗憾的是,厂家看马上要过年了,就没有在进货了,现在只剩 ...

  8. this在方法赋值过程中无法保持(隐式丢失)

    在看<高级程序设计>(我的红宝书) P.183页时遇到下面一个问题 var name = "77"; var obj = { name: "88", ...

  9. Java中的内部类介绍(1)

    栗子1: package campu; //外部类 class Out{ private int age =12; //内部类 class In{ public void print(){ Syste ...

  10. 性能测试之Jmeter学习(八)

    本节主要学习:断言 JMeter也有像LR中的检查点,本节就来介绍下JMeter的检查点如何去实现. JMeter里面的检查点通过添加断言来完成. 检查点:上一节讲到,我们对用户名和密码进行了参数化, ...