zoukankan      html  css  js  c++  java
  • CSU_BMW正式组队纪念赛出题+部分解题报告

    忙的要死了,要给三月月赛调试服务器,出题,还要筹办下个月的校赛,还有考研复试,还有毕业设计……这俩孩子得知考研成绩公布,咱的分数应该算过了初试了,竟然想到来办一场纪念赛,倒是颇为感动。。。

    事情太多,只出了两个水题,水了两个的朋友别忘了感谢我~~

    A:搞两个双端队列,一个是最大数单调队列,一个是最小数单调队列,一遍扫过去,随时把答案更新为两个队列较短那个(当较短那个比答案长的时候)

    B:还好测试的时候写了个n^2logn的代码水了过去,所以加强了数据。对X坐标排序,枚举Y坐标的低端,n^2扫描。

    C:把这串数字的过程倒过来看,双端DP。

    D:这题就是坑爹的,去看斌仔的题解吧。

    EFG没看,参考M-O和Burn-E的题解。

    H:printf的双引号里这个东西,就是个字符串常量,可以用一个定义好的字符串变量代替,那么~~

    char buf[100] = "%d";printf(buf, 1);好玩吧。

     1 while(gets(buf))
     2 {
     3     for(i = 0; buf[i] != '"'; ++ i);
     4     for(j = strlen(buf); buf[j] != '"'; -- j);
     5     strncpy(prin, buf + i + 1, j - i - 1);
     6     prin[j - i - 1] = 0;
     7     for(; buf[j] != ','; ++ j);
     8     sscanf(buf + j + 1, "%d,%d,%d", &a, &b, &c);
     9     printf(prin, a, b, c);
    10     printf("\n");
    11 }

    不过直接交上面代码会WA的,有什么和思路无关的trick就不讲了~~~

    I:统计三种字母的个数,输出个数最少的那个就可以了。

     1 while(gets(buf))
     2 {
     3     b = m = w = 0;
     4     for(i = 0; buf[i]; ++ i)
     5     {
     6         b += buf[i] == 'b' || buf[i] == 'B';
     7         m += buf[i] == 'm' || buf[i] == 'M';
     8         w += buf[i] == 'w' || buf[i] == 'W';
     9     }
    10     printf("%d\n", min(b, m, w));
    11 }

    其他题详细解题报告:

    Staginner解题报告

    Swimming解题报告

    题目链接

  • 相关阅读:
    【leetcode】19. Remove Nth Node From End of List
    【leetcode】18. 4Sum
    【leetcode】371. Sum of Two Integers
    【leetcode】17. Letter Combinations of a Phone Number
    【leetcode】16. 3Sum Closest
    【leetcode】13. Roman to Integer
    【leetcode】15. 3Sum
    【leetcode】14. Longest Common Prefix
    【leetcode】368. Largest Divisible Subset
    Linux学习总结(十四) 文件的打包和压缩
  • 原文地址:https://www.cnblogs.com/CSGrandeur/p/2659117.html
Copyright © 2011-2022 走看看