【7.10校内test】T2不等数列】的更多相关文章

[题目链接luogu] 此题在luogu上模数是2015,考试题的模数是2012. 然后这道题听说好多人是打表找规律的(就像7.9T2一样)(手动滑稽_gc) 另外手动 sy,每次测试都无意之间bibi正解,然后说自己是不会做是个什么骚气操作. 所以我们来看真.题解: SOLUTION: 首先,输入莫得什么好说的: 当然想用快读咱也拦不住(就是想用咬我啊): 咱可能最近因为学长讲了一道DP,印象比较深刻,所以咱居然看到这道题就想到正解应该是DP了!? 接下来就是设计DP状态了: dp[i][j]…
Description 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入">"和"<".问在所有排列中,有多少个排列恰好有k个"<".答案对2015取模. 注:1~n的排列指的是1~n这n个数各出现且仅出现一次的数列. Input 第一行2个整数n,k. Output 一个整数表示答案. Range 对于30%的数据:n <= 10 对于100%的数据:k < n <= 1000 Solutio…
不等数列 [题目描述] 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”.问在所有排列中,有多少个排列恰好有k个“<”.答案对2012取模. [输入格式] 第一行2个整数n,k. [输出格式] 一个整数表示答案. [样例输入] 5 2 [样例输出] 66 [数据范围] 对于30%的数据:n <= 10 对于100%的数据:k < n <= 1000, 对于30% n<=10的数据,搜索打表,状态压缩动态规划...... 对于1--n等…
Problem 2 不等数列(num.cpp/c/pas) [题目描述] 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”.问在所有排列中,有多少个排列恰好有k个“<”.答案对2012取模. [输入格式] 第一行2个整数n,k. [输出格式] 一个整数表示答案. [样例输入] 5 2 [样例输出] 66 [数据范围] 对于30%的数据:n <= 10 对于100%的数据:k < n <= 1000, #include<cstdio&g…
面试题 10. 斐波那契数列 题目一:求斐波那契数列的第n项 题目描述:求斐波拉契数列的第n项 写出一个函数,输入n,求斐波拉契(Fibonacci)数列的第n项.斐波拉契数列定义如下: C++ 实现 /* 斐波拉契数列 */ #include <iostream> using namespace std; /* 递归实现 */ long long Fibonacci1( unsigned int n ) { if ( n <= 1 ) { return(n); } return(Fib…
医院设置[题目链接] 感觉我超废 我是一个连floyd都不会写了的灵魂OI选手qwq(考场上写了半天spfa然后写炸了(微笑)) floyd的暴力: 1.先建树:用邻接矩阵存.存之前记得先初始化为INF 注意是无向图.然后注意自己到自己的情况dis值=0: 2.跑一遍floyd,求最短路: 3.枚举每个点建医院,相当于求每个点作为源点的单源最短路,然后乘people数,比较大小,输出最小的一个: #include<iostream> #include<cstdio> #includ…
面试题10:斐波那契数列 题目要求: 求斐波那契数列的第n项的值.f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2) n>1 思路:使用循环从下往上计算数列. 考点:考察对递归和循环的选择.使用递归的代码通常比循环简洁,但使用递归时要注意一下几点:1.函数调用的时间和空间消耗:2.递归中的重复计算:3.最严重的栈溢出.根据斐波那契数列递归形式定义很容易直接将代码写成递归,而这种方式有大量重复计算,效率很低. 解法比较: 解法3,4将问题数学化,借助数学工具的推导,从根本上减低时…
题目描述 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入">"和"<".问在所有排列中,有多少个排列恰好有k个"<".答案对2015取模. 注:1~n的排列指的是1~n这n个数各出现且仅出现一次的数列. 输入格式 第一行2个整数n,k. 输出格式 一个整数表示答案. 我们考虑现在我们已经有了n−1个数的排列,再插入nnn使其变成nnn个数的排列 显然,n有n个位置可以选择,我们先来考虑两边的位置. 如果插入到最…
每日一题 day25 打卡 Analysis dp[i][j]=dp[i-1][j-1]*(i-j)+dp[i-1][j]*(j+1); 其中i和j是表示前i个数中有j个小于号,j<=i-1 要在长度为i的数列中插入一个数,那么共有i+1个位置可以插入(第一个位置最后一个位置和中间的i-1个位置).由于插入的数字大于之前所有数,那么在原串中是小于号的位置插入这个数会多出来一个大于号,小于号数量则不变,如果在大于号位置插入会多一个小于号,而插在头位置也多一个大于,末位置多一个小于,总计,使小于号数…
题目描述 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”.问在所有排列中,有多少个排列恰好有k个“<”.答案对2015取模. 注:1~n的排列指的是1~n这n个数各出现且仅出现一次的数列. 输入输出格式 输入格式: 第一行2个整数n,k. 输出格式: 一个整数表示答案. 输入输出样例 输入样例#1: 复制 5 2 输出样例#1: 复制 66 说明 对于30%的数据:n <= 10 对于100%的数据:k < n <= 1000 //dp[…
这个题乍一看就应该是DP,再看一眼数据范围,1000..那就应该是了.然后就向DP的方向想,经过对小数据的计算可以得出,如果我们用f[i][j]来表示前i个数有j个是填了"<"的,那么f[i][j]显然可以表示为f[i][j]+=f[i-1][j]\*(j+1)+f[i-1][j-1] (i-j). 至于原因 1.与f[i-1][j-1] 在这种情况下,由于我们是从前往后去推的,所以当前加入的数一定比前面的都大.那么怎么才能使得其变为前n个有j个<呢? 仔细想一下你就会发现…
[题目描述] 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”.问在所有排列中,有多少个排列恰好有k个“<”.答案对2012取模. [输入格式] 第一行2个整数n,k. [输出格式] 一个整数表示答案. [样例输入] 5 2 [样例输出] 66 [数据范围] 对于30%的数据:n <= 10 对于100%的数据:k < n <= 1000, 从没有做过这么水的DP #include<iostream> using namespa…
这一次是交流测试?边交流边测试(滑稽 极值问题 乍一看这是一道数学题,因为1e9的数据让我暴力的心退却. 数学又不好,不会化简式子嘞,咋办? 不怕,咱会打表找规律.(考场上真的是打表找出了规律,打表打法好!!) 这里就不带着大家一起来打表了,我们是来正正经经的推式子滴. So,这道题就是求斐波那契数列的大水题啦. water_lift:其实这道题数据还是出水了,求斐波那契数列的时候完全可以卡到用矩阵加速. 我们:……(心里一万只草泥马跑过) 代码如下哦: #include<iostream>…
题目链接: p1  FBI树 p2  医院设置 p3  加分二叉树 | | | | | | 分 界 线 | | | | | | 应该算是一篇反思博. 对于OI,我真的算不上是热爱(当然不热爱不代表就不好好学),只能说是稍感兴趣,我也是尽力想把它学好,毕竟付出在这了,如果没有回报,感觉也对不起自己.其实我感觉自己之前的状态和学初中数学联赛差不多,并没有特别重视奥赛,就感觉是在玩?一直感觉自己状态不是特别好,但是并没有去改变,没有去认真的学,是那种学的会就学,学不会就不学的态度的感觉,总之感觉自己并…
[题目链接luogu] 它……又是个DP 我……我讨厌DP!? 然后又是读入,显然用快读啊:(数据范围还是很大的)(习惯) 然后我们发现,不论是损耗值维修值,还是采矿所得,维修花费,都带着个p,因此我们可以把p提出来? dp[i]表示第i个星球~第n个星球的最大赚取费用: 那么我们的解就是dp[1]: 考虑一下: 假设第i个是资源型,在之前已经求出dp[i+1](代表从i+1开始选,1-i一概略过)的最大金钱数,那么dp[i]=max(dp[i+1]/*这个不选*/, a[i]+dp[i+1]*…
10- I. 斐波那契数列 方法一 Top-down 用递归实现 def fibonacci(n): if n <= 0: return 0 if n == 1: return 1 return fibonacci(n-1) + fibonacci(n-2) 不过这种方法在leetcode上超时了. 方法二 Bottom-up 用循环实现 class Solution: def fib(self, n: int) -> int: if n <= 0: return 0 if n == 1…
题目传送门 题目大意 见题面. 思路 本来以为zcx.pxj变强了,后来发现是SPJ出问题了...考试的时候感觉有点人均啊...结果自己还是只想出来一半. 我们假设 \(f(x)=(\lfloor\frac{2x}{2^n}\rfloor+2x)\pmod{2^n}\),那么我们可以看出 \(f(x)\) 实际上就是 \(x\) 把第一位提到最后一位,那么我们就可以想到 \(f(a\otimes b)=f(a)\otimes f(b)\)(虽然我考试的时候就是这里没有想到). 考虑原问题,我们不…
其实有两种方法来解这道题# 第一种:找规律(非正经) 一看,这玩意像是个杨辉三角,还左右对称呢 因为新插入一个数$n$,有$n+1$个位置可以选,所以总数就乘$n+1$,对应的$f[n+1][i]$也就等于$f[n][i]$了大概.可是一看,不大对,好像不是这样.那么就像,反正加一个数要么没变,要么加一个小于号,那么不在$f[n+1][i]$的一定是分到了$f[n+1][i+1]$里去了.那么以$n=3$时为例,$f[3][1]*4=4,f[4][1]=1$也就是接收了$1$倍的$f[3][1]…
贪心思想.将a排序后,对于每一个a,找到对应的删除m个后最小的b,每次更新答案即可. 如何删除才是合法并且最优的?首先,对于排了序的a,第$i$个那么之前就应该删除前$i-1$个a对应的b.剩下$m-i+1$可以删,那么在剩下的b中查找第$m-i+2$小即可.每次做完就删除当前a对应的b. 注意离散化. 还有数组不要开大了.... #include<bits/stdc++.h> #define LL long long using namespace std; void read(int &a…
考虑DP. 如果把转移看出当前位填什么数的话,这样是有后效性的. 如果考虑当前的序列是将1至n依次插入序列中的话. 考虑将i插入1到i-1的序列中,如果插入到<号中或者首部,那么最后就会多出一个大于号. 如果插入到>号中或者尾部,那么最后就会多出一个小于号. 所以定义状态dp[i][j]表示1到i组成的序列中,小于号的数目为j的方法数.转移方程即为所求. # include <cstdio> # include <cstring> # include <cstdl…
传送门 f[i][j]表示前i个数有j个<的方案数 #include <cstdio> #define N 1001 #define p 2015 int n, k; int f[N][N]; int main() { int i, j; scanf("%d %d", &n, &k); f[2][0] = 1; f[2][1] = 1; for(i = 3; i <= n; i++) for(j = 0; j < i; j++) { //插…
一道数论好题(math) Time Limit:1000ms   Memory Limit:128MB 题目描述 rsy最近在研究欧几里得算法,不会的同学可以去看下课件以及代码…… 现在她想到了一个新的问题,求k个数的最大公约数! 事实上这个问题仍然很简单.所以rsy想强化一下,她觉得最大公约数等于1就不是很有趣了.因此她想在n个数中找最多的数,使得它们的最大公约数不等于1. 现在rsy想知道,能找最多多少个数. 输入格式(math.in) 第一行一个数n. 第二行n个数ai. 输出格式(mat…
看到这个题之后,一个很暴力很直接的想法就是贴上题目中的代码然后交上去走人,但是很显然这是会TLE+MLE的,想想谁会这么傻把主要代码给你QwQ~: 其实这段代码是想告诉你一件事:用序列中的大数减去小数,直到序列中所有的数一样为止! 这就意味着最后的答案一定是某个数乘以 n! 证明: n=2的情况 想一想n=2的情况.这时这段代码的任务就是:用两个数中较大的数减去较小的数,一直到两数相等为止. 这不就是更相减损术吗! 代码如下: #include<iostream> #include<cs…
可食用的题目链接 题解: 有题目得:这个题有巧做法而不是暴力模拟.废话 这个题看着像一道dp,因为可以由前一种(数据更小的推出数据更大的)推出后一种. 我们设已经得到了n-1个数的总方法(1~n-1),然后根据这个我们要推出1~n的方法, 于是我们考虑把新加入的一个数n枚举其插入位置, 因为每插入一个数,它一定比前面的任何数都大(从小到大) 如果插入到最左边,会造成新的序列比原来多一个大于号,如果插入到最右边,会造成新的序列比原来多一个小于号. (注意是这个数插入到符号的位置) 如果插入到大于号…
FBI树[题目链接] 感觉我超废. MY SOLUTION:     我的想法其实也是很简单的,递归的去做,因为最后要求输出FBI的后序遍历,也就是左右头,我的方法是递归存字符数组,(按照与后序遍历完全相反的顺序存的),然后倒序输出.非常遗憾的是,因为开始时写递归写炸了(微笑),于是我修改递归变成了main函数里先进行判整个串,当n=0时,就输出了两位. #include <iostream> #include <cstdio> #include <cstring> #…
加分二叉树[题目链接] 感觉我超废 这道题当时压根就不会qwq(我倒是挺适合写rand的qwq) 对于暴力的做法: 输入数据,定义数组men[i][i]=v[i](输入的第二行): dfs: dfs 1—n,首先是几个临界状态: 当左或右子树为空,即L>R(use L and R replace l and r to be clear)时,返回1 当L==R时,显然它的分数为它本身,所以return d[L] or d[R] 还有一个小优化,就是当我们之前已经算过某一段[L,R]时,可以直接拿来…
[题目链接luogu] 这是T1,但是是神仙T1: 对于前100%的数据很好写,直接数组模拟就可以了: (当然也有栈模拟的,据说有模拟炸了的) //50pts#include<bits/stdc++.h> using namespace std; inline int read() { ; char last=' ',ch=getchar(); ') last=ch,ch=getchar(); )+(ans<<)+ch-',ch=getchar(); if(last=='-') a…
题目链接. Solution 状态设计 设 \(f_{i, j}\) 为 \(1\) 到 \(i\) 的排列,其中有 \(j\) 个 \(\text{'<'}\) 的方案数. 状态转移 尝试从 \(i\) 转移到 \(i + 1\),实质是考虑把 \(i + 1\) 插入到序列的哪个位置. 如果插入到最左边,会新增一个大于号(\(1\) 种情况) 如果插入到最右侧,会新增一个小于号(\(1\) 种情况) 如果插入到一个小于号之间,会破坏一个小于号,产生一个小于号和一个大于号,相当于新增一个大于号…
励志整理所有的n次考试的博客: [五一qbxt]test1 [五一qbxt]test2 [校内test]桶哥的问题 [6.10校内test] noip模拟 6.12校内test [6.12校内test]T1单词序列 [6.12校内test]T2 子集 [6.12校内test]T3 城市交通费 6.18校内test(最近考试可是真勤)题目均来源于luogu [6.18校内test]T1多项式输出(luogu p1067) [6.18校内test]T2分数线划定(luogu p1068) [6.18…
目录 T1 二维部分有序数组查找 ☆ T2 字符串字符不等长替换 - 从后往前 T3 返回链表的反序 vector T4 重建二叉树 T5 两个栈模拟队列 T6 旋转数组中的最小元素 - 二分或暴力 ☆ T7 - 10 斐波那契数列 - 递推递归 - 两变量写法 T11 二进制中 1 的个数 T12 数值的整数次方 - 缜密 - 基数可能为负数 T1 二维部分有序数组查找 ☆ 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完…