第一问: 先不考虑山的高度有相同的:直接按照高度降序排序,试着将每一座山插入到前面山的缝隙中. 当然,这并不代表这些山的相对位置是固定的,因为后面高度更低的山是有机会插入进来的,所以就可以做到将所有情况都考虑到. 假设现在要插入第 $i$ 座山,前面已插入了 $i-1$ 座比当前山高的山,那么当前能插入的选择应该是 $min(key_{i},i)$ 种. (既然前面的山都高于第 $i$ 座,所以能且只能插入到这些位置上). 令 $f_{i}$ 表示从大到小插入了 $i$ 座山的方案数,则 $f_…
3193: [JLOI2013]地形生成 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 459  Solved: 223[Submit][Status][Discuss] Description     最近IK正在做关于地形建模的工作.其中一个工作阶段就是把一些山排列成一行.每座山都有各不相同的标号和高度.为了遵从一些设计上的要求,每座山都设置了一个关键数字,要求对于每座山,比它高且排列在它前面的其它山的数目必须少于它的关键数字.  显然满足要…
[BZOJ3193][JLOI2013]地形生成(动态规划) 题面 BZOJ 洛谷 题解 第一问不难,首先按照山的高度从大往小排序,这样子只需要抉择前面有几座山就好了.然而有高度相同的山.其实也不麻烦,把高度相同的山按照关键数字排序,这样子即使是高度相同的山,也可以变成多出位置可以放进来,只需要记录前面有多少高度相同的山就可以直接累乘了. 第二问其实也没什么,就是同高度的山要一起放,因为它们最终对于答案的贡献是相同的. 既然不能组合数直接计算答案,考虑\(dp\). 设\(f[i][j]\)表示…
[JLOI2013]地形生成 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3193 题解: 这种求总排列的题,一种常规做法就是所有的元素按照某种排列方式然后一个一个往里插. 这个题就是从大到小排序这样,对后面的元素没有影响. 现在有一些相等的元素我们怎么弄? 如果是标号序列的话,就是瞎$jb$排就行了. 如果是等高线序列的话,只要按照$a$作为第二关键字就好. 代码: #include <bits/stdc++.h> #defin…
BZOJ3193 [JLOI2013]地形生成 Solution 第一问不是很简单吗? 直接计数就好了. 第二问思考无果看了看hyj神仙的代码,发现可以dp求解. 具体可以看代码(其实主要是我说不清楚...) 代码实现 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<algorithm> #include<queue>…
[BZOJ3193][JLOI2013]地形生成 Description 最近IK正在做关于地形建模的工作.其中一个工作阶段就是把一些山排列成一行.每座山都有各不相同的标号和高度.为了遵从一些设计上的要求,每座山都设置了一个关键数字,要求对于每座山,比它高且排列在它前面的其它山的数目必须少于它的关键数字.  显然满足要求的排列会有很多个.对于每一个可能的排列,IK生成一个对应的标号序列和等高线序列.标号序列就是按顺序写下每座山的标号.等高线序列就是按顺序写下它们的高度.例如有两座山,这两座山的一…
题意 \(n\) 元素各有一个高度 \(h\) 和关键数字 \(b\) .求有多少个下标序列和高度序列,满足对任意 \(i\),\(j< i\) 且 \(h_j < h_i\)的 \(j\) 个数小于 \(b_i\) \(n \leq 1000\). 分析 因为只有比 \(i\) 高的元素才会影响 \(i\) ,所以考虑把所有元素按照高度降序排列. 下标序列 考虑每个元素插入之前的排列中,一共有 \(min(b_i,i)\) 种方案. 考虑相同高度的元素按照 \(b\) 的大小升序排列,这样能…
出题人语文真好... 各不相同的标号和高度 = 各不相同的标号 + 单独的高度... 第一问比较简单,考虑从大到小插入,在相同情况下,按关键值从小到大插入 这样子,关键大的元素一定会影响到关键小的元素,不会漏统计 插入$i$号元素时,不妨设比它大的数为$S$个,限制为$lim$,和它相同的且已经插入的数有$j$种 那么有$min(S, lim) + j$种插入的方案 第二问也比较简单 考虑$dp$,令$f(i, j)$表示在相同的数中,插入到了$i$,并且$i$插入在第$j$段 由于插入的顺序是…
JLOI2013过了好长时间,才写第四题.. 第一问比较好想. 第二问我想到了n^3次方的做法,但是数据....于是没敢写,然后上网查了一下题解,居然是O(n^3)过的,数据这么弱... /* * Problem: JLOI2013-Terrain * Author: Shun Yao */ #include <string.h> #include <stdlib.h> #include <limits.h> #include <assert.h> #inc…
题目链接 BZOJ3193 题解 注意\(key\)是小于 第一问,显然按高度降序排序,逐个插入 如果高度各不相同,那么之前插入的都比当前插入的\(i\)大,可插入的位置个数就确定了 由于存在高度相同的情况,将key作为第二关键字升序排序 这样后面插入的就一定能插入前面插入的之后,统计一下之前插入了\(cnt\)个相同高度的,可插入的位置就加上\(cnt\) 第二问 如果高度各不相同,答案同第一问 否则要考虑相同高度带来的影响 分段\(dp\)计算每一段相同高度的贡献 我们默认\(key\)大的…
传送门 Sol 第一问可以考虑按照山的高度从大到小放 但是这样如果遇到高度相同的就不好考虑,那么同时要求数量限制从小到大 这样每次放的时候后面的一定不会影响前面,并且高度相同的时候前面能放的位置后面的也能放 直接乘起来就好了 对于第二问,此时高度相同的会有影响 对于高度相同的一段,强制要求数量限制从小到大,并且后面的位置必须小于前面 设 \(f_{i,j}\) 表示放了 \(i\) 个到 \(j\) 个空位,最后一个放的在最后,的方案数 那么 \(f_{i,j}=\sum_{k\le j}f_{…
一道组合数问题--出自 曹钦翔_wc2012组合计数与动态规划 [问题描述] 众所周知,xyc 是一个宇宙大犇,他最近在给他的学弟学妹们出模拟赛. 由于 xyc 实在是太巨了,他出了一套自认为很水的毒瘤模拟赛(看看这题的文件名你就 知道是什么难度了). 这些题目对于选手来说实在是太 hard 了,愤怒的选手们在评测的时候蜂拥而上,把 xyc 抬了起来--在这一过程中,xyc 用于评测的电脑也被选手们给砸坏了. 尽管选手们的成绩极其惨淡,xyc 还是想研究一下选手们的分数分布情况,他尝试还原 出了…
[BZOJ2576][JSOI2011]序的计数 (动态规划) 题面 BZOJ 题解 首先构建一个新的虚拟节点连接所有目标节点,强行将其作为第一个被访问的节点,这样子就解决了图不连通的问题. 除了目标节点外,所有其他点都可以缩成一个节点. 这样子的图实际上只有\(k+2\)个节点,\(k+1\)个目标节点. 预处理\(G[S][u]\)表示已经在\(dfs\)序中出现过的点的集合为\(S\),当前在点\(u\)能够访问到的点. 设\(f[S][u]\)表示当前在点\(u\),已经确定\(dfs\…
[BZOJ1494][NOI2007]生成树计数(动态规划,矩阵快速幂) 题面 Description 最近,小栋在无向连通图的生成树个数计算方面有了惊人的进展,他发现: ·n个结点的环的生成树个数为n. ·n个结点的完全图的生成树个数为n^(n-2).这两个发现让小栋欣喜若狂,由此更加坚定了他继续计算生成树个数的 想法,他要计算出各种各样图的生成树数目.一天,小栋和同学聚会,大家围坐在一张大圆桌周围.小栋看了看, 马上想到了生成树问题.如果把每个同学看成一个结点,邻座(结点间距离为1)的同学间…
出处:http://bbs.ednchina.com/BLOG_ARTICLE_3013262.HTM 综合软件:Quartus II 一.有优先级的if语句 if..else if.. else if … …else..语句中是有优先级的,第一个if具有最高优先级,最后一个else优先级最低.Quartus综合出的RTL图认为,最高优先级的电路靠近电路的输出,输入到输出的延时较短:最低优先级的电路远离输出端,输入到输出的延时较长. module single_if_late(A, C, CTR…
摘要: 使用位图生成真值组合. 难度: 初级.   /** * 问题描述: 给定 n 个布尔变量,打印所有真值组合. * 例如, n = 2 时 , 所有真值组合为 (true, false),(true, true),(false, true),(false, false). * * 算法的基本思路: * 使用一个长度为 n 的数组存储着 n 个布尔变量:位 1 表示 true , 位 0 表示 false, * 生成每一个真值元组,实际上是生成一个由 0 和 1 表示的 数组. * * 生成…
[题目]C. Maximum Element [题意]给定n和k,定义一个排列是好的当且仅当存在一个位置i,满足对于所有的j=[1,i-1]&&[i+1,i+k]有a[i]>a[j],求长度为n的好的排列数.n<=10^6. [算法]排列组合+动态规划 [题解]设D(n)表示长度为n且满足a[n]=n的好的排列数,考虑这样的一个排列w. 如果数字n-1的位置j<n-k,那么显然这是一个好的排列. 如果数字n-1的位置j>=n-k,那么位置j前的数字一定<n-1…
bzoj 2111: [ZJOI2010]Perm 排列计数 1 ≤ N ≤ 10^6, P≤ 10^9 题意:求1~N的排列有多少种小根堆 1: #include<cstdio> 2: using namespace std; 3: const int N = 1e6+5; 4: typedef long long LL; 5: LL m, p, T, x, y, F[N]; 6: LL n, size[N<<1]; 7: LL f[N]; 8: LL inv(LL t, LL…
---恢复内容开始--- 今天桃子好像还是没什么动静,不过媳妇倒是有一点见红~ 希望这是马上要出来的前兆了~ 桃子都已经晃点我俩好多回了~ 已经都快习惯来她这个狼来了的征兆了~ -------------------------------任性的分割线--------------------------------- 因为想做一个类似<Minecraft>的游戏,所以各种找关于地形生成的算法~ 虽然之前弄得那个柏林噪音的算法可以,但是欠缺太多东西了~ 不知道是不是我太钻牛角尖了~ 对应该如何制…
目录 前言 生成地形高度 生成生物群落 模拟雨水侵蚀.生成河流(未完) 生成洞穴.裂谷 生成植被 放置树木(Bezier曲线) 生成建筑 生成发展域(元胞自动机模型) 放置建筑(DFS) 连接道路(A*寻路) 优化 地形加载&渲染 数据存储&查询 前言 在毕业之际,总算是做出了一个关于Minecraft类游戏地形生成的DEMO作为毕业设计,虽然说不上有多高大上,但也算是给 Gameplay 技能栈多点了一个熟练度,了解了下一些关于地形生成的算法.不过由于博主并未透彻研究过Minecraft…
4555: [Tjoi2016&Heoi2016]求和 题意:求\[ \sum_{i=0}^n \sum_{j=0}^i S(i,j)\cdot 2^j\cdot j! \\ S是第二类斯特林数 \] 首先你要把这个组合计数肝出来,于是我去翻了一波<组合数学> 分治fft做法见上一篇,本篇是容斥原理+fft做法 组合计数 斯特林数 \(S(n,i)\)表示将n个不同元素划分成i个相同集合非空的方案数 考虑集合不相同情况\(S'(n,i)=S(n,i)*i!\),我们用容斥原理推♂倒她…
2467: [中山市选2010]生成树 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 638  Solved: 453[Submit][Status][Discuss] Description 有一种图形叫做五角形圈.一个五角形圈的中心有1个由n个顶点和n条边组成的圈.在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形.这些五角形只在五角形圈的中心的圈上有公共的顶点.如图0所示是一个4-五角形圈.   现在给定一个n五…
比较头疼的计数题. 我们发现,放置一个棋子会使得该棋子所在的1个行和1个列都只能放同种棋子. 定义状态 $f_{i,j,k}$ 表示目前已使用了 $i$ 个行,$j$ 个列,并放置了前 $k$ 种棋子的方案数. 假设当前枚举到的是第 $k$ 个棋子,该种棋子有 $num_{k}$ 个. 枚举 $d1,d2$ 表示安排这 $num_{k}$ 个棋子需要用 $d1$ 个行,$d2$ 个列. 可以将 $d1$ 个行和 $d2$ 个列并到一起,这就构成了一个 $d1\times d2$ 的矩形. 在这个…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3505 [题意] 在n个格子中任选3点构成三角形的方案数. [思路] 任选3点-3点共线的情况. [代码] #include<cstdio> #include<iostream> using namespace std; typedef long long ll; ll C[][]; void get_pre(int n) { C[][]=; ;i<=n;i++)…
2302: [HAOI2011]Problem c Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 648  Solved: 355[Submit][Status][Discuss] Description 给n个人安排座位,先给每个人一个1~n的编号,设第i个人的编号为ai(不同人的编号可以相同),接着从第一个人开始,大家依次入座,第i个人来了以后尝试坐到ai,如果ai被占据了,就尝试ai+1,ai+1也被占据了的话就尝试ai+2,……,如果一直…
Description Input   Output 求一棵树编号序列不同的方案数: 令 $f[u],g[u]$ 分别表示 $u$ 选/不选 的方案数. 则 $f[u]=\prod_{v\in son[u]}g[v]$,$g[u]=\prod_{v\in son[u]}g[v]+f[v]$. 然而如果要求本质不同,那么那些子树结构相同的就会算重. 假设有 $k$ 个儿子树形态相同,每一个儿子可选的方案为 $h$. 则我们要求给每一个儿子都分一种方案的方案数. 即有 $m$ 个相同的盒子,有 $k…
Description: \(1<=n<=1e9,1<=m,k<=100\) 模数不是质数. 题解: 先选m个点,最后答案乘上\(C_{n}^m\). 不妨枚举m个点的度数和D,那么我们需要解决两个问题: 一共m个有标号盒子,D个有标号小球放到盒子里,且每个盒子的球数不超过k的方案数. n-m个有标号点的D棵有根树的森林划分 Task1: 事实上这个东西可以直接NTT卷起来,效率应该是最高的,但是因为模数不是质数,所以不行. 设\(f[i][j]\)表示i个盒子,j个小球的方案数.…
                                         Default.aspx 网页界面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.…
                                         Default.aspx 网页界面 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.…
题目传送门 快速的传送门 慢速的传送门 题目大意 给定一棵无根树,每个点可以染成黑色或者白色,第$i$叶节点到根的路径上最后有颜色的点必须为$c_{i}$(叶节点可以染色).问最少要染颜色的点的个数. 假设有根.显然动态规划.用$f[i][0 / 1]$表示考虑到$i$号点的颜色染成什么,它子树内的点最少要染多少个. 这里考虑使染色的深度尽量小(相当于钦定根节点染色,没有影响的),方便转移.枚举根节点染什么颜色.如果子树的根的颜色和它一样,那个点就没必要染色了. 于是愉快地解决了有根的时候. 对…