ICode9

精准搜索请尝试: 精确搜索
  • [ZJOI2010]排列计数2022-08-04 14:31:51

    题意 求满足 \(\displaystyle \forall i\in [2, n], p_i > p_{\lfloor i / 2\rfloor}\) 的 \(1\sim n\) 的排列 \(p_1, p_2\dots p_n\) 的数量,输出模 \(m\) 后的值。 思路 上述问题可以转化为求节点标号为 \(1\sim n\) 且满足小根堆性质的完全二叉树的数量。 设节点 \(u\) 的两个

  • 洛谷P2602 [ZJOI2010] 数字计数 (数位DP)2022-06-25 12:03:05

    白嫖的一道省选题...... 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 typedef long long LL; 6 int dig[15],pos; 7 LL dp[15][10][15],ans[2][10]; 8 9 LL dfs(int pos,int val,int cnt,bool lead,bool li

  • 【P2602 [ZJOI2010]数字计数】题解2022-01-13 14:32:38

    题目链接 题目 原题来自:ZJOI 2010 给定两个正整数 \(a\) 和 \(b\),求在 [\(a,b\)] 中的所有整数中,每个数码 (\(digit\)) 各出现了多少次。 思路 首先在数位dp中,对于当前枚举的数,乘上后面的方案数。 那么后面的数如何多次计算呢? 我们发现这些数具有传递性,于是我们每次可以把后面的数

  • 【ZJOI2010 Day1】网络扩容2021-12-15 15:02:38

    Problem 给定一张有向图,每条边都有一个容量\(C\)和一个扩容费用\(W\)。这里扩容费用是指将容量扩大\(1\)所需的费用。求: 1.在不扩容的情况下,\(1\)到\(N\)的最大流; 2.将\(1\)到\(N\)的最大流增加\(K\)所需的最小扩容费用。 Solution 第一问显然很好求,但第二问怎么处理呢? 将最大流增

  • P2602 [ZJOI2010]数字计数2021-05-31 02:32:20

    原题链接 考察:数位dp 思路:   预处理f[i][j][k]表示前i位数,最高位是j,k出现的次数.  f[i][j][k] = \(\sum_{t=0}^9\) f[i-1][t][k]; (j!=k)  f[i][j][k] = 10i-1+\(\sum_{t=0}^9\) f[i-1][t][k]; (j!=k,i-1位一共10i-1个数)   接下来按模板写即可,但是注意当数位上的数

  • 洛谷 P2602 [ZJOI2010]数字计数2021-02-03 19:03:59

    比较普通的数位DP,有个要注意的地方就是状态应该要是2维的 dp[i][j]表示前i位个数为j的数量,这样的话,后续加上去一位数字之后才能统计到之前本来就有的。 另外开两维,一维是表示统计的数字,还有一维标记前导零。 下附代码: 1 #include<bits/stdc++.h> 2 #define ll long long 3 us

  • 【YBTOJ】【Luogu P2605】[ZJOI2010]基站选址2021-01-25 08:32:32

    链接: 题目 题目大意: 在 \(n\) 个点里建不超过 \(k\) 个基站,每个点的位置是 \(d_i\),在 \(i\) 建基站的钱是 \(c_i\),如果在 \(i\) 不超过 \(s_i\) 的范围内没有基站,就要再付 \(w_i\)。求最小费用。 正文: 考虑动态规划。设 \(f_{i,j}\) 表示在第 \(i\) 个点建第 \(j\) 个基站的最小费

  • [P2602] [ZJOI2010]数字计数(数位dp)2020-12-15 09:35:15

    原题 题目描述 给定两个正整数 \(a\) 和 \(b\),求在 \([a,b]\) 中的所有整数中,每个数码(digit)各出现了多少次。 输入格式 仅包含一行两个整数 \(a,b\),含义如上所述。 输出格式 包含一行十个整数,分别表示 \(0∼9\)在 \([a,b]\)中出现了多少次。 输入输出样例 输入 #1 1 99 输出 #1

  • [洛谷P2606] ZJOI2010 排列计数2020-07-26 21:32:19

    问题描述 称一个 \(1 \sim n\) 的排列 \(p_1,p_2, \dots ,p_n\) 是 Magic 的,当且仅当 \(\forall i \in [2,n],p_i > p_{\lfloor i/2 \rfloor}\) 。计算 \(1 \sim n\) 的排列中有多少是 Magic 的,答案可能很大,只能输出模 \(m\) 以后的值。 输入格式 一行两个整数 n,m,含义如上所述。

  • luogu P2605 [ZJOI2010]基站选址 线段树优化dp2020-07-10 22:05:29

    LINK:基站选址 md气死我了l达成1结果一直调 显然一个点只建立一个基站 然后可以从左到右进行dp. \(f_{i,j}\)表示强制在i处建立第j个基站的最小值。 暴力枚举转移 复杂度\(n\cdot k^2\)。 考虑如何求一个区间中的贡献 显然我们需要把每个点的左右给求出来 这个其实可以利用二叉堆来

  • 洛谷 P2606 [ZJOI2010]排列计数2020-06-10 13:58:46

    定义一个 \(1\) 到 \(n\) 的排列是 magic 的当且仅当 \(\forall i \in [1, n], a_i > a_{\lfloor \frac i 2 \rfloor}\)。求有多少个 \(1\) 到 \(n\) 的 magic 的排列。 奇水无比的大水题。不难发现答案就是一个完全二叉树的拓扑计数。 #include <cstdio> typedef long long ll

  • P2602 [ZJOI2010]数字计数2020-01-30 19:54:40

    ------------恢复内容开始------------ 蒟蒻不会数位dp也不会dfs怎么办呢? 利用类似于倍增的思想…… 输入a b两数,我们把\([a,b]\)划分为三段分别计算 以下用 \(lena,lenb\) 代指 \(a,b\) 的位数 首先,我们要统计 \(a\) 到 最大的 \(lena\) 位数的答案 (通俗:a 到 lena个9的数) 第二

  • [BZOJ1833][ZJOI2010]数字计数(暴力+组合计数)2020-01-15 14:01:26

    Solution 听说这题要用数位dp。 不会。 只能用暴力了...... 举个例子:求\([29,3246]\)中每个数码的出现次数。 首先想到把每个数码分开求。 好像很难。 然后想到\([1,3246]\)的答案减去\([1,28]\)的答案。 好像还是很难。 最后突发奇想,把位数也分开,例如:求\([1,3246]\)中十位出现\(4

  • P2604 [ZJOI2010]网络扩容2019-12-27 17:54:30

    题意 第一问没什么好说的,就是个最大流。 第二问我们考虑怎么处理费用和增大\(K\)的限制。 费用: 每条边重新建一遍,带上费用就好了。 增大\(K\): 我们可以利用残余网络,新建虚拟源点\(S\),从\(S\)向\(1\)连容量为\(K\)费用为\(0\)的边,这样我们从S再跑一遍最小费用最大流即可。 code: #i

  • 洛谷$P2605\ [ZJOI2010]$基站选址 线段树优化$dp$2019-09-24 12:01:11

    正解:线段树优化$dp$ 解题报告: 传送门$QwQ$ 难受阿,,,本来想做考试题的,我还造了个精妙无比的题面,然后今天讲$dp$的时候被讲到了$kk$ 先考虑暴力$dp$?就设$f_{i,j}$表示选的第$j$个基站是$i$的最小费用,就有$f_{i,j}=min(f_{k,j}+cost(k,i))+c_i$,这个$cost$就$[k+1,i-1]$之间所

  • P2604 [ZJOI2010]网络扩容2019-09-19 18:50:57

    题目描述 给定一张有向图,每条边都有一个容量C和一个扩容费用W。这里扩容费用是指将容量扩大1所需的费用。求: 1、 在不扩容的情况下,1到N的最大流; 2、 将1到N的最大流增加K所需的最小扩容费用。 输入格式 输入文件的第一行包含三个整数N,M,K,表示有向图的点数、边数以及所需要增加

  • 【ZJOI2010】排列计数2019-09-04 19:01:27

    题面 https://www.luogu.org/problem/P2606 题解 数列按广度优先搜索序搜索,变成一个堆。所以形态是给定的。 只需记忆化搜索就可以了,复杂度$O(logn)$。顺序递推亦可。 对于阶乘超过$p$的情况,我们把$p$的次幂记下来,算的时候直接减去。$aysn$说这是卢卡斯定理,我只能$orz$了。 #incl

  • Luogu P2602 [ZJOI2010]数字计数 数位DP2019-07-18 18:50:51

    很久以前就。。。但是一直咕咕咕   思路:数位$DP$ 提交:1次 题解:见代码 #include<cstdio>#include<iostream>#include<cstring>#define ll long long#define R register llusing namespace std;ll f[15][15],a,b;//f[l][sum]对应dfs中(因为只在!ul&&!ck的时候记忆化)int num[15];l

  • 洛谷P2606 [ZJOI2010]排列计数2019-06-28 11:37:53

    B. Perm 排列计数 题目描述 称一个1,2,...,N的排列P1,P2...,Pn是Magic的,当且仅当2<=i<=N时,Pi>Pi/2. 计算1,2,...N的排列中有多少是Magic的,答案可能很大,只能输出模P以后的值 输入格式 输入文件的第一行包含两个整数 n和p,含义如上所述。 输出格式 输出文件中仅

  • [ZJOI2010] 基站选址2019-06-16 17:50:54

    TheLostWeak 讲解得十分清楚,就不造轮子了 #include <bits/stdc++.h> #define ll long long #define ls (x<<1) #define rs (x<<1|1) using namespace std; const int N=2e4+10; const int inf=0x3f3f3f3f; int n,K; int d[N],c[N],s[N],w[N],f[N]; vector<pair<

  • 解题报告 『[ZJOI2010]数字计数(数位动规)』2019-06-11 10:44:07

    原题地址 不了解数位DP的建议先看一下这位大佬的文章。 对于这道模板题应该就能直接看懂代码了。   代码实现如下: #include <bits/stdc++.h>using namespace std;#define int long long#define rep(i, a, b) for (register int i = (a); i <= (b); i++)const int maxn = 20;int

  • P2602 [ZJOI2010]数字计数(递推)2019-05-16 19:50:47

    P2602 [ZJOI2010]数字计数 思路: 首先考虑含有前导0的情况,可以发现在相同的\(i\)位数中,每个数的出现次数都是相等的。所以我们可以设\(f(i)\)为\(i\)位数每个数的出现次数。 那么就有递推方程:\(f(i)=f(i-1)*10+10^{i-1}\)。 假设现在要求的数为\(x\)位,那么我们依次从\(x\)位往下面求

  • 【题解】P2602 [ZJOI2010]数字计数2019-04-15 15:51:17

    $Description: $ 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。 \(Sample\) \(Input:\) 1 99 \(Sample\) \(Output:\) 9 20 20 20 20 20 20 20 20 20 \(Solution:\) 状态 \(f[i][j]\) 表示前 \(i\) 位当前这个数出现了 \(j\) 次 。 那么就可以

  • 【ZJOI2010】【BZOJ1834】—网络扩容(最大流+最小费用最大流)2019-01-27 16:02:46

    传送门 第一问都不用说了吧 对于第二问 考虑到扩容一个单位就可以多通过一个单位的流 我们可以把扩容看成流过这条边,扩容费用作为费用 那么就在原图的基础上再跑一个最小费用最大流 在每条边两端连一个流量为infinfinf,费用为www的边 至于只多kkk个单位,新建一个源点向111连一条

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有