关键词:
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 }
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 }
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 }
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、编程要求: ... 查看详情