• 【Luogu】【关卡1-8】BOSS战-入门综合练习2(2017年10月)【AK】------都是基础题


    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
    ", 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
  • 相关阅读:
    自制编译器 青木峰郎 笔记 Ch8 AST生成
    自制编译器 青木峰郎 笔记 Ch7 JavaCC的action和AST
    POJ 3349-Snowflake Snow Snowflakes-字符串哈希
    POJ 2112-Optimal Milking-二分答案+二分图匹配
    POJ 1258 -Agri-Net- 最小生成树
    POJ 1125-Stockbroker Grapevine-最短路
    POJ 3621-Sightseeing Cows-最优比率环|SPFA+二分
    POJ2976-Dropping tests-01分数规划
    POJ 3020 -Antenna Placement-二分图匹配
    POJ 3041-Asteroids-二分图匹配
  • 原文地址:https://www.cnblogs.com/zhangwanying/p/7663002.html
Copyright © 2020-2023  润新知