首页 > 其他分享 >最近的oj

最近的oj

时间:2022-10-16 19:11:13浏览次数:48  
标签:oj xb yc yb ya 最近 && printf

对最近OJ的反思

最近学会了Markdown!
写这篇文为了试试手而已,以后博客并不会把这么简单的东西放上来......

最近c语言学的相当痛苦啊,虽然基本语法、惯用法都已经早早预习过了,简单的OJ也信手拈来,但稍微上一点难度我就寄了。感觉还是见识太少,很多基础的算法课程都没涉及到,我也了解不多。。。。除此之外熟练度也不够,做题用的时间过长了。需要积累经验。

2022-1-types-io:

double a = pow(-8.0,1.0/3);

这是不对的!!!首先pow是double型的,又因为对负数进行小数的指数运算,结果是复数,而math.h库中的pow函数是实数函数, 只能返回一个实数。因此这种运算需要自己写,或者找找有没有复数运算的库。至于想求个三次根号,只需

double a = cbrt(-8);

2022-2-if-for-array:

A题就是个桶计数法。。。B题用模的性质处理大数问题,D题要求得到计算过程中出现的最大值(含初始值)也是很常见的,E题obstacle.c真是难坏了我。。。因为情况实在是太多了,很难找到统一的方法,以致我最后很蠢地用了goto语句来省一些情况。最终解决并不完美,而且有个if的条件写错了一直没发现(abc?acb?),总之磨蹭了好久在这个题。

#include<stdio.h>
#include<stdlib.h>

int main() {


    int xa, ya, xb, yb, xc, yc, i;
    scanf("%d %d %d %d %d %d", &xa, &ya, &xb, &yb, &xc, &yc);
    int nowx = xa, nowy = ya;
    if (!(  /*共线*/
            (/*共横坐标*/xa == xb && xb == xc && ((ya < yc && yc < yb) || (ya > yc && yc > yb))/*共横坐标*/) ||
            (ya == yb && yb == yc && ((xa < xc && xc < xb) || (xa > xc && xc > xb)))      /*共线*/ )) {
        printf("%d\n", abs(yb - ya) + abs(xb - xa));
    } else {
        printf("%d\n", abs(yb - ya) + abs(xb - xa) + 2);
    }


    if (!(  /*共线*/
            (/*共横坐标*/xa == xb && xb == xc && ((ya < yc && yc < yb) || (ya > yc && yc > yb))/*共横坐标*/) ||
            (ya == yb && yb == yc && ((xa < xc && xc < xb) || (xa > xc && xc > xb)))      /*共线*/ )) {
        if (xa == xb & xb == xc || ya == yb & yb == yc) { goto here; }
        if (xa == xc) {
            if (xa > xb) {
                printf("L");
                nowx--;
            } else {
                printf("R");
                nowx++;
            }
            goto here;
        } else if (ya == yc) {
            if (ya > yb) {
                printf("D");
                nowy--;
            } else {
                printf("U");
                nowy++;
            }
            goto here;
        }

        if (yb == yc && xa < xb && ya < yb && xc < xb) {
            for (int i = 0; i < (xb - xa); i++) { printf("R"); }
            for (int i = 0; i < (yb - ya); i++) { printf("U"); }
            goto finish;
        } else if (yb == yc && xa < xb && ya > yb && xc < xb) {
            for (int i = 0; i < (xb - xa); i++) { printf("R"); }
            for (int i = 0; i < (ya - yb); i++) { printf("D"); }
            goto finish;
        } else if (yb == yc && xa > xb && ya > yb && xc > xb) {
            for (int i = 0; i < (xa - xb); i++) { printf("L"); }
            for (int i = 0; i < (ya - yb); i++) { printf("D"); }
            goto finish;
        } else if (yb == yc && xa > xb && ya < yb && xc > xb) {
            for (int i = 0; i < (xa - xb); i++) { printf("L"); }
            for (int i = 0; i < (yb - ya); i++) { printf("U"); }
            goto finish;
        }


        here:
        while (nowx != xb || nowy != yb) {
            if (yb - nowy < 0 && (nowy - 1 != yc || nowx != xc)) {
                nowy--;
                printf("D");
            } else if (yb - nowy > 0 && (nowy + 1 != yc || nowx != xc)) {
                nowy++;
                printf("U");
            } else if (xb - nowx > 0 && (nowx + 1 != xc || nowy != yc)) {
                nowx++;
                printf("R");
            } else if (xb - nowx < 0 && (nowx - 1 != xc || nowy != yc)) {
                nowx--;
                printf("L");
            } else {
                break;
            }
        }
    } else {
        if (nowx < xb) {
            printf("U");
            for (i = 0; i < (xb - nowx); i++) {
                printf("R");
            }
            printf("D");
        } else if (nowx > xb) {
            printf("U");
            for (i = 0; i < (nowx - xb); i++) {
                printf("L");
            }
            printf("D");
        } else if (nowy > yb) {
            printf("R");
            for (i = 0; i < (nowy - yb); i++) {
                printf("D");
            }
            printf("L");
        } else {
            printf("R");
            for (i = 0; i < (yb - nowy); i++) {
                printf("U");
            }
            printf("L");
        }
    }
    finish:
    return 0;
}

F题字符翻转 Ⅱ (Inverse2.c)是一道很好的题,考察了对scanf的理解,用getchar啥的能够简化代码。

标签:oj,xb,yc,yb,ya,最近,&&,printf
From: https://www.cnblogs.com/tengjun12/p/16796817.html

相关文章

  • AUSTOj6
    #include<stdio.h>#include<malloc.h>#defineMAXQSIZE10//最大队列长度,实际使用MAXQSIZE-1typedefintElemType;//1.循环队列(☆☆☆☆少用一个存储单元☆......
  • pip安装pyqt5-tools的时候Preparing metadata (pyproject.toml) error
    遇到了,未解决,在这里卡主了python版本3.10.5 python3.10上安装pyqt5_染指13的博客-CSDN博客_python安装pyqt5解决办法(有人说要降级Python3.9啥的,或者降pyqt5的版本,我......
  • 解决Project facet Java version 11 is not supported.问题
    出现该提示说明项目是其他版本jdk编译的,在eclipse里运行时会报版本不支持。解决方法:首先查看本机电脑的jdk版本(cmd→Java-version),然后选中项目Properties,选择Projec......
  • OJ项目环境搭建
    OJ项目环境搭建数据库建库:problem,user,submit,category/*NavicatPremiumDataTransferSourceServer:localhostSourceServerType:MySQLS......
  • TZOJ 1693:银牛派对(最短路/dijstra)
    描述 N个农场(1≤ N ≤1000)中的每一个都有一头奶牛,编号为1.. N将参加在农场# X(1≤ X ≤ N)举行的大型奶牛聚会。总共有M (1≤ M ≤100,000)条单向(单向......
  • videojs调整音频播放语速
    参考:​​https://stackoverflow.com/questions/19112255/change-the-video-playback-speed-using-video-js​​以下代码相比stackoverflow添加了一个延时,否则无法正常播放,官......
  • LOJ 分块入门 1~9
    LOJ数列分块\(1\sim9\)T1区间加,单点查。没啥好说的,分块都不想写。树状数组+差分解决。#include<bits/stdc++.h>#definemem(a,b)memset(a,b,sizeofa)#define......
  • videojs播放直播
    index.html引入css和js<linkhref="https://cdn.bootcdn.net/ajax/libs/video.js/7.10.1/alt/video-js-cdn.min.css"rel="stylesheet"><scripttype="text/javascrip......
  • SPOJ PHONELST - Phone List | UVA11362 Phone List
    简要题意\(t\)组数据,每组数据给定\(n\)个长度不超过\(10\)的数字串,判断是否有两个字符串\(A\)和\(B\),满足\(A\)是\(B\)的前缀,若有,输出NO,若没有,输出YES。......
  • TZOJ 7871:维护序列 单链表应用(创建/查询/插入/删除)
    描述 给定一个长度为n的整数序列。现在有m个操作,操作分为三类,格式如下:(1)1i:询问序列中第i个元素的值,保证i小于等于当前序列长度。(2)2iv:在序列中第i个元素前加......