[NOIP2001] 普及组

装箱问题

裸01背包,速刷过

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 using namespace std;
 5 int sp[50000]={0};
 6 int f[50000]={0};
 7 int main(){
 8     int v,n;
 9     cin>>v>>n;
10     int i,j;
11     for(i=1;i<=n;i++){
12         scanf("%d",&sp[i]);
13     }
14     for(i=1;i<=n;i++)
15      for(j=v;j>=sp[i];j--){
16          f[j]=max(f[j],f[j-sp[i]]+sp[i]);
17      }
18     cout<<v-f[v];
19     return 0;
20 } 

装箱问题

求先序排列

中序排列串中的任意位置都可能是根。

后序排列串的最后一位一定是树的总根。

根据这两个性质,就可以寻找根节点,并递归处理左右子树了。

 1 /*by SilverN*/
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<cstring>
 5 #include<cstdio>
 6 #include<cmath>
 7 using namespace std;
 8 char s[10],c[10];
 9 void solve(int l,int la,int r,int ra){
10     if(l>la || r>ra)return;
11     printf("%c",c[ra]);
12     for(int i=l;i<=la;i++){
13         if(s[i]==c[ra]){
14             solve(l,i-1,r,r+i-l-1);
15             solve(i+1,la,r+i-l,ra-1);
16             break;
17         }
18     }
19     return;
20 }
21 int main(){
22     scanf("%s",s+1);
23     scanf("%s",c+1);
24     int i,j;
25     int len=strlen(s+1);
26     solve(1,len,1,len);
27     return 0;
28 }

求先序排列

数的计算

记忆化DFS

其实DP也可以

 1 #include<algorithm>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<cmath>
 6 using namespace std;
 7 const int mxn=1200;
 8 int h[mxn];
 9 int n;
10 int dfs(int x){
11     if(h[x])return h[x];
12     int i,j;
13     int res=0;
14     for(i=1;i<=x/2;i++){
15         res++;
16         res+=dfs(i);
17     }
18     if(!h[x])h[x]=res;
19     return res;
20 }
21 int main(){
22     scanf("%d",&n);
23     cout<<dfs(n)+1<<endl;
24     return 0;
25 }

数的计算

时间: 2024-10-09 11:46:17

[NOIP2001] 普及组的相关文章

NOIP2001 普及组 装箱问题

标准的01背包,就不写分析了,标准就看 我的背包问题的解析 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 /* * ===================================================================================== * *

NOIP2001普及组解题报告

数的计算 分析:递归即可.不用学他造数. #include<iostream> #include<algorithm> using namespace std; int f(int n){ int ret=1; for(int i=1;i<=n/2;++i){ ret+=f(i); } return ret; } int main(){ int n; cin>>n; cout<<f(n); return 0; } 求先序排列 分析:将中序排列分为l到r

【递归】Vijos P1132 求二叉树的先序序列(NOIP2001普及组第三题)

题目链接: https://vijos.org/p/1132 题目大意: 给定二叉树的中序和后序遍历,求该二叉树先序遍历. 题目思路: [递归] 这题妥妥递归. 二叉树先序根左右,中序左根右,后序左右根. 对于每一颗子树,它的后序最后一个必定是根,于是可以根据根在中序的位置把左子树和右子树区分开来. 1 // 2 //by coolxxx 3 // 4 #include<iostream> 5 #include<algorithm> 6 #include<string>

2017年8月14日套题记录 | 普及组

写在前面 今天登洛谷发现离Noip剩下88天了??(虽然看起有点久),然后觉得似乎水了一个暑假什么也没做(虽然学了点数据结构和一些奇奇Gaygay的东西),于是打开题库发现去年Long Happy的集训套题我似乎没有提交过,那就一天一套题,顺便码个题解+心得(雾? T2.传作业 题目描述 某十三同学一日上学迟到,此时已经开始上早自习了,所以他只好请同学帮忙把作业传到组长那里.由于刚开学不久,某十三同学还没来得及认识所有同学,所以传作业时只好找熟悉的同学.已知某十三与组长之间有N个他熟悉的同学,并

1143 纪念品分组 2007年NOIP全国联赛普及组

1143 纪念品分组 2007年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作.为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数.为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少. 你的任务是写一个程序

采药 2005年NOIP全国联赛普及组&amp;疯狂的采药

时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:"孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大."

[NOIP2013] 普及组

计数问题 纯模拟 1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 int main(){ 5 int n,x; 6 cin>>n>>x; 7 int i,c=0; 8 for(i=1;i<=n;i++){ 9 int a=i; 10 while(a!=0){ 11 if(a%10==x)c++; 12 a/=10; 13 } 14 } 15 cout<<c;

NOIP2008 普及组T2 排座椅 解题报告-S.B.S

题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道.于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了两个会交头接耳的同学,那么

noip2008普及组3题题解-rLq

(第一次写题解,随意喷) (只是前一天的作业哈) (先凑个数) 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师在此吹哨子时,传球停止,此时,拿着球没有传出去的那个同学就是败者,要给大家表演一个节目.聪明的小蛮提出一个有趣的问题:有多少种不同的传球方法可以使得从小蛮手里开始传的球,传了m次