栈(NOIP2003&水题测试2017082501)】的更多相关文章

题目链接:栈 这题不难. 我们看一下,其实可以发现是卡特兰数. 不知道卡特兰数?没事,给你简单讲一下. 卡特兰数的递推式f(n)=f(0)*f(n-1)+f(1)*f(n-2)+-+f(n-2)*f(1)+f(n-1)*f(0) 这样你应该能发现规律了. 我们枚举栈空的情况就能发现是卡特兰数,我们一定有一刻是栈空的,我们枚举这一个时刻,就好像将这个序列分成两部分,第一部分为i,第二部分为n-1-i,又是乘法原理,所以相乘,最后累加即可. 给代码: #include<bits/stdc++.h>…
日常水题测试又来了! 以后答案都以单题形式公布. 下面看今天的水题: 时间限制:5小时 题目一:无法形容的水 题目二:比上一题还水 题目三:一元三次方程求解 题目四:单词接龙 题目五:统计单词个数 题目六:乒乓球 题目七:栈 题目八:守望者的逃离 水题没话说,昨天感觉时间都多了! 开始吧! Let's do it!…
哈,水题测试又来了! 上次的水题简单吧! 答案是以单题形式发布的(旅行家的预算随后发布). 下面来看今天的题,还是水题. 时间限制:5小时 题目一:看上去就很水 题目二:比上面一题还水 题目三:数的划分 题目四:装箱问题 题目五:金明的预算方案 题目六:税收与补贴问题 题目七(水题加试):均分纸牌 今天题目更多,但还是很水的. Let's do it!…
题目链接:失踪的7 水题,不解释. #include<bits/stdc++.h> using namespace std; int main(){ int t; scanf("%d",&t); while(t--){ int n,ans; scanf("%d",&n); ans=n; for(int i=7;i<=n;i++){ int x=i; while(x>0){ if(x%10==7){ ans--; break;…
题目链接:子数整数 水题,不解释,自己看代码: #include<bits/stdc++.h> using namespace std; int main(){ int k; scanf("%d",&k); int num[5]; int ok=0; for(int i=10000;i<=30000;i++){ int sub1=0,sub2=0,sub3=0; int x=i; for(int j=0;j<5;j++){ num[j]=x%10; x/…
题目链接:旅行家的预算 这题还可以,不算太水. 这题贪心即可. 我们采取如下动作: 如果在装满油的情况下能到达的范围内,没有加油站,则无解. 如果在装满油的情况下能到达的范围内,油价最低的加油站的油价比当前高,那就装满油再走. 如果在装满油的情况下能到达的范围内,油价最低的加油站的油价比当前低,我们使油够到达那个加油站即可,如果当前的油比需要的多,我们分两种情况考虑:第一,这个最低油价比上一个加油的站价格高,那么我们就直接过去:第二,这个最低油价比上一站油价低,那么我们把多余的油退回上一个加油站…
你们从题目也能看出来今天的题是很水的. 前几期答案还没出,效率有点低,谅解,谅解. 今天的答案应该会出的很快. 下面给题目: 时间限制:3小时 题目一:旅行家的预算 题目二:进制转换 题目三:乘积最大 题目四:求先序排列 题目五:要多水有多水 题目六:比上一题还水 时间应该是够的,最后两题真心水. 答案今晚应该能出,要不就是明晚. 尽量今晚出. 祝各位好运.…
题目链接:装箱问题 这题经典的01背包. 动规. 设计状态f[n][V]表示前n个物体放在V中的最大体积是多少. 所以代码如下: #include<bits/stdc++.h> using namespace std; int f[35][20003]; int dp(int* v,int V,int n){ if(f[n][V]>0){ return f[n][V]; } if(n==0){ return 0; } if(V>=v[n-1]){ f[n][V]=max(dp(v,…
题目链接:数的划分 这题直接搜索就行了.给代码,思路没什么好讲的,要讲的放在代码后面: #include<bits/stdc++.h> using namespace std; int dfs(int n,int k,int cur){ if(k==1){ return 1; //1 } int ans=0; for(int i=cur;i*k<=n;i++){ //2 ans+=dfs(n-i,k-1,i); } return ans; } int main(){ int n,k; s…
题目链接:HXY玩卡片 很水, 简单讲一下思路. 如果没有0,直接无解,因为不可能是10的倍数. 是9的倍数,则各个数位上的数字和为9的倍数,所以5的数量一定是9的倍数,所以只要尽可能多输出9的倍数个5,然后把0全放后面就行. 下面给代码: #include<bits/stdc++.h> using namespace std; int main(){ int n; int nz=0,nf=0; scanf("%d",&n); for(int i=0;i<n;…