zoukankan      html  css  js  c++  java
  • 20181024 考试记录

    无题目描述

    T1:

    线段二分判交,二分判一判即可,用斜率求一下,可以将除法改成乘法,分子与分母,几何题从来没对过

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    inline int read()
    {
        int f=1,ans=0;char c;
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){ans=ans*10+c-'0';c=getchar();}
        return f*ans;
    }
    int n,xx[200001],yy[200001];
    double kk[200001];
    bool check(int st,double px,double py){
        return kk[st]*px<(py-yy[st]);
    }
    int main()
    {
        n=read();
        for(int i=1;i<=n;i++) xx[i]=read();sort(xx+1,xx+n+1);
        for(int i=1;i<=n;i++) yy[i]=read();sort(yy+1,yy+n+1);
        for(int i=1;i<=n;i++) kk[i]=-(yy[i]*1.0)/xx[i];
        int m=read();
        while(m--){
            int px=read(),py=read();
            int l=1,r=n,mid,maxn=0;
            while(l<=r){
                mid=l+r>>1;
                if(check(mid,(double)px,(double)py)) maxn=max(maxn,mid),l=mid+1;
                else r=mid-1;
            }
            printf("%d
    ",maxn);
        }
    }
    View Code

    T2:

    其实可以想到答案是通过两个字符串的长度减去2倍的lcs,证明留给读者。然后呢知道lcs的复杂度为O(n*n),超时了,但是发现k<=100,所以想到可以若匹配到第一个字符串的i,只用在i-k到i+k之间dp即可,因为若超过这个长度有lcs时直接在最后输出-1即可,但是良心出题人并没有给-1的点,并且every problem 的数据都出满了,没有任何部分分,但是自己的代码卡常失败,所以加上了一句if(k==100)k-=20,只为了卡常。

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    inline int read()
    {
        int f=1,ans=0;char c;
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){ans=ans*10+c-'0';c=getchar();}
        return f*ans;
    }
    int n,m,k,l,r,dp[2][501002],st[501002],cur,lcs;
    char str1[501002],str2[501002];
    int main()
    {    
        n=read(),m=read(),k=read();
        if(k==100)k-=20;
        scanf("%s%s",str1+1,str2+1);
        for(int i=1;i<=n;i++){
            cur^=1;
            l=max(-k,1-i),r=min(k,m-i);
            for(int j=l;j<=r;j++){
                st[i+j]=0;
                if(str1[i]==str2[i+j]) st[i+j]=dp[cur^1][i+j-1]+1;
                st[i+j]=max(st[i+j],max(st[i+j-1],dp[cur^1][i+j]));
                dp[cur][i+j]=st[i+j];
            }
        }lcs=dp[cur][m];
        printf("%d
    ",n+m-2*lcs);
        return 0;
    }
    View Code

    T3:题目过于高深,读不懂题

  • 相关阅读:
    在SSH框架下按条件分页查询
    关于从数据库中取出来的数据在jsp页面上级联显示出来的问题,和ajax处理乱码
    在js中下拉列表值的选定
    java中的日期转换方法
    用js判断输入文本框的内容类型
    将selenium录制的脚本转换为java脚本到Eclipse中运行(一)
    selenium录制并回放请求-心得(一)
    selenium java版本的安装方法与注意事项
    python编写的面向对象的XXE自动化检测工具(对单个功能进行检测)
    微服务&spring cloud架构系列
  • 原文地址:https://www.cnblogs.com/si-rui-yang/p/9849157.html
Copyright © 2011-2022 走看看