luogu关卡1-8boss战-入门综合练习2(2017年10月)

zhangwanying zhangwanying     2022-09-22     801

关键词:

P1426 小鱼会有危险吗

我个人觉得这个题目出的不好,没说明白,就先只粘贴的AC代码吧

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 int main() {
 5     double s, x;
 6     cin >> s >> x;
 7     double start = s - x, endd = s + x; //探测器的范围
 8     double speed = 7.0, length = 0.0;
 9     //没有游到探测器范围之前
10     while(length < start) {
11         length += speed;
12         speed *= 0.98;
13     }
14     if (length + speed > endd) {
15         cout << "n" << endl;
16     }
17     else {
18         cout << "y" << endl;
19     }
20 
21     return 0;
22 }
View Code

 

P1464 Function

对于一个递归函数w(a,b,c)

如果a<=0 or b<=0 or c<=0就返回值1.

如果a>20 or b>20 or c>20就返回w(20,20,20)

如果a<b并且b<c 就返回w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c)

其它别的情况就返回w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1)

这是个简单的递归函数,但实现起来可能会有些问题。当a,b,c均为15时,调用的次数将非常的多。你要想个办法才行.

/*

absi2011 : 比如 w(30,-1,0)既满足条件1又满足条件2

这种时候我们就按最上面的条件来算

所以答案为1

*/

解答:记忆化,直接用个数组存了。

一开始全WA, 我还没想通为啥,后来发现有个条件是【如果a>20 or b>20 or c>20就返回w(20,20,20)】

这个放在一开始的主函数判断里面了,但是如果这个数比20大,就把这个数字=20.

但是假如这个元组是 (25, 3, 2) ------> 正确答案是 (20, 20,20)

如果按照我当时的算法就是 (25,3,2) ------> 就会变成 (20,3,2) 就会去计算这个数。

还有个错误点就是又踩内存了... 访问||更新数组之前一定要判断下标是否能取到。

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int w[25][25][25] = {0};
 6 
 7 int cal(int a, int b, int c) {
 8     if (a <= 0 || b <= 0 || c <= 0) {
 9         return 1;
10     }
11     if (a > 20 || b > 20 || c > 20) {
12         return cal(20, 20 ,20);
13     }
14     if (w[a][b][c] != -1) {
15         return w[a][b][c];
16     }
17     if (a < b && b < c) {
18         w[a][b][c] = cal(a, b, c-1) + cal(a, b-1, c-1) - cal(a, b-1, c);
19         return w[a][b][c];
20     }
21     w[a][b][c] = cal(a-1,b,c) + cal(a-1,b-1,c) + cal(a-1,b,c-1) - cal(a-1,b-1,c-1);
22     return w[a][b][c];
23 }
24 
25 int main() {
26     memset(w,0xFF,sizeof(w));
27     long long a, b, c;
28     cin >> a >> b >> c;
29     while (a != -1  || b != -1 || c != -1) {
30         int a1 = a > 20 ? 21 : a;
31         int b1 = b > 20 ? 21 : b;
32         int c1 = c > 20 ? 21 : c;
33         int ans = cal(a1, b1, c1);
34         if (a1 >= 0 && b1 >= 0 && c1 >= 0) {
35             w[a1][b1][c1] = ans;
36         }
37         printf("w(%lld, %lld, %lld) = %d\n", a, b ,c, ans);
38         cin >> a >> b >>c;
39     }
40     return 0;
41 }
View Code

 

P1014 Cantor表

我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…输出表中的第N项

解答:找规律发现第一行1个数,第二行2个数,第三行3个数...等差数列。注意下细节就好。

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int main() {
 6     int n;
 7     cin >> n;
 8     int summ = 0, lines = 0;
 9     while(n > summ) {
10         ++lines;
11         summ += lines;
12     }
13     summ -= lines;
14 
15     int left = n - summ;
16 
17     int fenfu, fenzi;
18     if (lines % 2 == 0) {
19         fenfu = lines + 1, fenzi = 0;
20         for (int i = 1; i <= left; ++i) {
21             fenfu--; fenzi++;
22         }
23     } else {
24         fenfu = 0, fenzi = lines + 1;
25         for (int i = 1; i <= left; ++i) {
26             fenfu++; fenzi--;
27         }
28     }
29     cout << fenzi << "/" <<fenfu << endl;
30     return 0;
31 }
View Code

 

luogu关卡2-16线性动态规划(2017年10月)

任务说明:这也是基础的动态规划。是在线性结构上面的动态规划,一定要掌握。  P1020导弹拦截 导弹拦截 合唱队形 尼克的任务 石子合并 低价购买 多米诺骨牌 查看详情

luogu关卡2-6贪心(2017年10月)

任务说明:贪心就是只考虑眼前的利益。对于我们人生来说太贪是不好的,不过oi中,有时是对的。P1181数列分段SectionI给一个n个元素的数组,和一个数字m,问最少能把这个数组分成几段,每段的和小于等于m。直接贪心。第一次... 查看详情

luogu关卡2-14树形数据结构(2017年10月)

任务说明:由一个根节点分叉,越分越多,就成了树。树可以表示数据之间的从属关系P1087FBI树给一个01字符串,0对应B,1对应I,F对应既有0子节点又有1子节点的根节点,输出这棵树的后序遍历。字符串长度小于等于2^10。心情好... 查看详情

luogu关卡2-13线性数据结构(2017年10月)

任务说明:数组,链表,队列,栈,都是线性结构。巧用这些结构可以做出不少方便的事情。约瑟夫问题 P1115最大子段和做了这个题才颠覆了我对最大字段和的认识。以前默认的解法就是用dp[i]表示a[0..i]的和,然后用二重循... 查看详情

luogu关卡2-15动态规划的背包问题(2017年10月)

任务说明:这是最基础的动态规划。不过如果是第一次接触会有些难以理解。加油闯过这个坎。P1060开心的金明小明的妈妈给小明N元钱,小明想买m件物品,每个物品价值为价格*重要度,求出不超过N元钱的情况下,最多能买多少... 查看详情

《java从入门到放弃》javase篇:综合练习——单身狗租赁系统(数组版)

因为现在只学习了基本语法,所以在综合练习之前,先补充关于方法概念。方法的作用:把一系列的代码放在一起,然后再取个别名。之后通过这个别名的调用,就相当于执行了这一系列的代码。方法的语法:([]中的内容表示... 查看详情

生物信息学练习1-综合使用软件-2

p{margin-bottom:0.25cm;direction:ltr;color:#000000;line-height:120%;orphans:2;widows:2}p.western{font-family:"LiberationSerif","TimesNewRoman",serif;font-size:12pt}p.cjk{font-family:"NotoSansCJKSCRegu 查看详情

练习:自己写一个容器arraylist集合一一数组综合练习2

1packagecn.bjsxt.collection;23/**4*自己实现一个ArrayList5*/6importjava.util.ArrayList;7importjava.util.List;89publicclassSxtArrayList/*implementsList*/{1011privateObject[]elementDate;12//要放入的元素大小13privatein 查看详情

入门练习2

publicclassMain{ /** *@paramargs */ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Scannerin=newScanner(System.in); intx; int[]numbers=newint[100]; doublesum=0; intcnt=0; x= 查看详情

educoder(头歌)平台java实训作业答案(代码片段)

头歌educoder实训java1-1Java入门-Java入门基础1-2Java入门-变量与数据类型1-3Java入门-运算符和表达式1-4Java入门-分支结构1-5Java入门-循环结构基础1-6Java入门-循环结构进阶1-7Java入门-分支与循环练习1.8Java入门-数组基础1.9Java入门-数组进... 查看详情

一道很好的mysql面试练习题,having综合应用(代码片段)

写一条SQL语句,求出2门以及2门以上不及格的科目平均分>要出现2门以及2门以上的学科不及格>计算该考生所有学科的平均分,不单是,不及格的那几门 #创建表:createtable`ecs_mian2`(`user_name`varchar(20),`subject`varchar(20),`score`int(4... 查看详情

学习总结

...八  总复习实验时间2018-12-301、实验目的与要求(1)综合掌握java基本程序结构;(2) 综合掌握java面向对象程序设计特点;(3)综合掌握javaGUI 程序设计结构;(4)综合掌握java多线程编程模型;(5)综合编程练习。2、实验内... 查看详情

javascript入门练习2:鼠标移入移出改变div大小

有一个位于屏幕正中央的红色div正方形盒子,宽高为200×200像素,鼠标移入(悬停),正方形会变成400×400像素,鼠标移出,正方形恢复200×200像素。使用CSS3、JavaScript两种方式实现。效果如下图:用到的知识点:  1、让盒子居... 查看详情

数据库作业14——综合练习反馈情况

数据库作业14——综合练习(二)反馈情况一、作业要求复述1、创建数据库CPXS,保存于E盘根目录下以自己学号+姓第一个字母(阿拉伯数字+大写字母)方式创建的文件夹中,初始大小5MB,最大20MB,以10%方式增长,日志文件存于同... 查看详情

13.go语言高并发与微服务实战---综合实战:秒杀系统的设计与实现

13.综合实战:秒杀系统的设计与实现 秒杀系统设计原则: 1.数据要尽量少 2.请求数尽量少 3.路径要尽量短 4.依赖要尽量少 5.尽量不要有单点       查看详情

13.go语言高并发与微服务实战---综合实战:秒杀系统的设计与实现

13.综合实战:秒杀系统的设计与实现 秒杀系统设计原则: 1.数据要尽量少 2.请求数尽量少 3.路径要尽量短 4.依赖要尽量少 5.尽量不要有单点       查看详情

组合数据类型综合练习

字符串联系: ss=[‘ff‘,‘ss‘,‘re‘]foriinss:  print(i)ffssre  列表:lis=list(ss)lis[‘ff‘,‘ss‘,‘re‘]lis.append(list(‘132456‘))lis[‘ff‘,‘ss‘,‘re‘,[‘1‘,‘3‘,‘2‘,‘4‘,‘5‘,‘6‘]]foriinlis:print(i)ffssre[‘1 查看详情

educoder-java入门-变量与数据类型各关卡题目总结(代码片段)

第一关:变量与常量1、相关知识回顾: (1)描述变量的三要素:变量类型、变量名、变量值。 (2)要素解释:   (3)变量类型分类:数值型和非数值型。 (4)数值类型分类:整形和非整形。 2、编程要求:  ... 查看详情