zoukankan      html  css  js  c++  java
  • 2017.5.21入门组总结

    入门组总结

    第一题:

    题意:如果每个数字的每一位都不能出现t,则数到第m个是第几个

    思路:数据规模不大,就1≤m≤100000,足足可以过,“暴力出奇迹!!!”

               于是开码,也就是一个循环,每次将i转为字符串,post一 下有没有t,没有就+1

     

    第二题:

    题意:有两种人,每个人都有一个能力值,如果第一种人的任意一个  人的能力值比第二种的人大,就算一种友好关系,求有多少对  友好关系

    考试思路:将两种人都按小到大排序,用贪心思想,记录下上一个人 的能力值最多到第几位。每次判断,这个人的能力值还可 以大于多少 人的能力值。

     

    结果:请况“惨不忍睹”,快排的“while b[j]>mid do”

    写成了“while b[i]>mid do”结果全部超时,荣获0!!分

     

    做法:①全:两个快排,找到如果大于a[i]的就break,居然能 过,这数据也是......(没谁了)

               ②将第二种人快排,然后用二分查找到,最多能大于第二       种人能力值的位置,用一个整形统计即可

    ③即考试思路,同上

     

    第三题:

    题意:给出一个方阵,求t个位置的(x,y)的左上角+右下角(不只是  两个位置)

    思路:不是很难AC

       首先,先求出前缀和

     公式为a[i,j]=a[i-1,j]+a[i,j-1]-a[i-1,j-1]

     然后每一个位置,可以推出一个!!公式!!

     公式为:a[n,n]+a[x-1,y-1]-a[x,n]-a[n,y]+a[x,y]

     凭这个公式就能A掉第三题。

     

    第四题:

    题意:有t组数据,每一组包括一个方阵、两个人所在的位置和走的  方向。走过的地方不可以走(单方),第一个人遇到不可以走的  地方就右转,第二个人左转。判断这两个人能不能相遇。

    思路:首先看数据1<=t<=10,1<=n<=1000。在最坏情况下,时间复杂  度就是O(10*1000*1000)=O(10000000)。暴力+模拟觉对能过,  只是想不想打罢了。

     首先,定义两个布尔类型bool1、bool2,来判断第一个人能不  能走和第二个人能不能走

     在每一次循环中,将当前方向的坐标求出,判断这个坐标可不  可走:

    ①如果可走,就替换x和y,并将当前位置设为已走过。

    ②如果不可以,就左转或右转,再将转后的坐标求出,再   次判断可走否。如果不可走,就将这个人设为已经不可    走了 ;如果可以,替换记录。

     如果到最后,两个人的坐标相等,就输出坐标。如果两个人都

     不可以走,就输出“-1 ”

  • 相关阅读:
    基于注解的mybatis(转)
    git分支删除
    java多线程同步(转)
    hadoop学习笔记(五):java api 操作hdfs
    java常用设计模式一:单例模式
    mysql CONCAT用法
    mysql date_sub用法
    hadoop学习笔记(四):hdfs常用命令
    try-catch+thows异常范围说明
    Python 类的多态
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412290.html
Copyright © 2011-2022 走看看