北大OJ

北大oj百练-1005 小知识:上网发现,PI可以用反三角函数表示,还是很巧妙的。 #include #define PI acos(-1) #include<iostream> #include <cmath> #define PI acos(-1) using namespace std; int main() { int T,year=1,count=1; float x,y; sc... 阅读详情

以前一直在九度OJ上做题,最近这个OJ登陆不上去,转到北大OJ做题,希望通过做题学习和熟悉一些常用的算法。

一.1657-distance on chessboard

 这是一道比较简单的模拟题,只要分情况讨论,一一求解即可

1 首先把起点到终点的方向定为西北、西、西南、南,由8个方向减少到4个方向。

2 考虑王的步数情况,分西北、西、西南、南四种情况考虑,对于西北方向,即终点在起点的左上方,则起点先沿西北方向走,当与终点平行的时候,再选择往西或者往东走到终点的位置,此时,走过的步数就是王的步数;对于西这个方向,直接从起点向西走到终点就是王的总步数;对于西南方向,则先沿西南方向走,当与终点平行的时候,再往西或者东走。对于正南方向则直接走向终点,即为总步数。

3 后和车的情况比较简单。

5 马只考虑西北和西南两个方向,假如终点在起点的左上方,则马往西北方向走,每走一步,判断终点是否在该点的西南或者东北方向;假如终点在起点的右下方,则马往西南方向走,没走一步,判断终点是否在该点的西北或者东南方向。

代码如下:

#include "stdio.h"
#include "math.h"
#include "stdlib.h"
int main(int argc, char **argv)
{
    int t;
    int i, j;
    char start[10], end[10];
    char temp, tmpStartX, tmpStartY, tmpEndX, tmpEndY;
    int cnt;
    int flag = 0;
    scanf("%d", &t);
    for (i = 0; i < t; i++)
    {
            flag = 0;
            scanf("%s%s", start, end);
            if (start[0] == end[0] && start[1] == end[1])//起点和终点重合
            {
                printf("0 0 0 0\n");
                continue;
            }
            if (start[0] > end[0])//减少讨论范围,只考虑西北,西,西南,南四个方向
            {
                temp = end[0];
                end[0] = start[0];
                start[0] = temp;
                temp = end[1];
                end[1] = start[1];
                start[1] = temp;
            }
            cnt = 0;
            tmpStartX = start[0];
            tmpStartY = start[1];
            tmpEndX = end[0];
            tmpEndY = end[1];
            //王
            if (start[0] != end[0])
            {
                if (start[1] < end[1])//西南方向
                {
                    while (start[1] < end[1])
                    {
                        start[0]++;
                        start[1]++;
                        cnt++;
                    }
                }
                else if (start[1] > end[1])//西北方向
                {
                    while (start[1] > end[1])
                    {
                        start[0]++;
                        start[1]--;
                        cnt++;
                    }
                } 
                else//正西方向,什么都不做
                {
                }
                flag = 1;
            }
            if (flag == 0)//正南方向
            {
                cnt += abs(start[1] - end[1]);
            }
            else
            {
                cnt += abs(start[0] - end[0]);
            }
            start[0] = tmpStartX;
            start[1] = tmpStartY;
            end[0] = tmpEndX;
            end[1] = tmpEndY;
            printf("%d ", cnt);
            cnt = 0;
            tmpStartX = start[0];
            tmpStartY = start[1];
            tmpEndX = end[0];
            tmpEndY = end[1];
            //后
            if (start[0] == end[0] || start[1] == end[1]
                    || abs(end[0] - start[0]) == abs(end[1] - start[1]))
            {
                printf("1 ");
            }
            else
            {
                printf("2 ");
            }
            //车
            if (start[0] == end[0] || start[1] == end[1])
            {
                printf("1 ");
            }
            else
            {
                printf("2 ");
            }
            //马
            int flag = 0;
            if (abs(end[0] - start[0]) == abs(end[1] - start[1]))
            {
                printf("1\n");
            }
            else
            {
                while (start[0] <= 'h' && start[1] <= '8')
                {
                    if (end[1] >= start[1])//西南方
                    {
                        start[0]++;
                        start[1]++;
                    }
                    else //西北方向
                    {
                        start[0]++;
                        start[1]--;
                    }
                    if (abs(end[0] - start[0]) == abs(end[1] - start[1]))
                    {
                        printf("2\n");
                        flag = 1;
                        break;
                    }
                }
                if (0 == flag)
                {
                    printf("Inf\n");
                }
            }
    }
    return 0;
}

北大OJ——求幂算法解析(1001) 本文章只代表作者自己的思路,如有不对,欢迎各位大佬指导,博主还是个菜鸟,博文只做笔记使用 题目描述: 题目样本: 思路: 常见的int,double,long已经满足不了那么高精度的数值 我们可以用字符串存入字符数组中,再进行计算 例如1.23和1.23相乘 从字符串的输入,从小数点位置判断出小数点后的位数,这里是2位 在字符串中去掉小数点,这里是123 然后取数依次相乘,产生的进位相加,根据位置再错位相加,这里是 123 0246 00369.. 阅读详情

相关推荐

北大oj百练-1006/4148生理周期

易错点:时间轴的遍历,起点应该为d+1~d+21252,有两个小陷阱,一个是所给的p e i不一定是最先出现的峰值,可以是任意峰值;另一个是最后算出的答案要比d大,不然相减是负数输出不对。 相关知识:欧几里得定理、中国剩余定理 #include<iostream> #include <algorithm> using namespace std; int main() { ...

柠檬鱼泡秋刀茶的博客 476

OJ(Online Judge)系统汇总

OJ百度百科 在线判题系统_百度百科 ***Openjudge和Poj 北大OJ(英文),经常服务器坏, Welcome To PKU JudgeOnline 备用网站 OpenJudge - NOI - 首页 ***《信息学奥赛一本通(C++版)》配套OJ 信息学奥赛一本通(C++版)在线评测系统 信息学奥赛一本通(C++版)在线评测系统 难度:中等,适合零基础 啊哈添柴: 在线OJ网站 - 啊哈添柴 ***洛谷 Luogu 洛谷比赛 比赛列表 - 洛谷 有很多网

青少年趣味编程 7812

东北大学OJ-1531: 实验1-2:程序改错2

东北大学OJ-1531: 实验1-2:程序改错2   大家好,我叫亓官劼(qí guān jié ),在优快云中记录学习的点滴历程,时光荏苒,未来可期,加油~博客地址为:亓官劼的博客,B站昵称为:亓官劼,地址为亓官劼的B站 本文原创为亓官劼,请大家支持原创,部分平台一直在盗取博主的文章!!! 本专栏为东北大学C语言课程题库的题解,内含盖课程要求的50题的题解,请各位支持原创,每个都是一字一字亲手玛出来的代码,目前仅在优快云发布。 本栏目的文章导航为:东北大学C语言课程题库题解专栏目录 如果订

一起加油 1846

OJ —— Online Judge

OJ介绍、OJ网站推荐

Edward2022的博客 7831

北大oj北大OJ离线题目

很好的离线题库。。。。。 非常不错北大OJ题目

北大oj题集(清晰版,poj上原题集)

POJ 是“北京大学程序在线评测系统”(Peking University Online Judge)的缩写,是个提供编程题目的网站,兼容Pascal、C、C++、Java、Fortran、Python等多种语言。 “北京大学程序在线评测系统”是一个免费的公益性网上程序设计题库,网址为http://poj.grids.cn/ 及 http://acm.pku.edu.cn/JudgeOnline,它包含2000多道饶有趣味的程序设计题,题目大部分来自ACM国际大学生程序设计竞赛,很多题目就反映工作和生活中的实际问题。用户可以针对某个题目编写程序并提交,让POJ自动判定程序的对错,几秒之内即可知道对还是错。作为教学支持,每个学生在POJ上可以建立自己的账号,教师在POJ上一眼就能看到布置的习题学生是否已经完成,这几乎将教师评判学生作业的工作量减少到零。POJ对于程序的正确性评判是极为严格的,不仅逻辑要对,而且数据的格式也要对。这对于培养严谨、周密的程序设计作风极为有效,学生必须考虑到每一个细节和特殊边界条件,而不是大体上正确就能通过。传统的人工评判是难以做到这一点的。

北大OJ刷题——1000

两个整数 a,b (0<=a,b<=10)

m0_62669698的博客 498

北大oj 题目分类

初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj3259,poj1062,poj2253,poj1125,poj2240) (3)最小生成树算法(prim,kruskal) (poj1789,poj2485,poj1258,poj3026) (4)拓扑排序 (poj1094) (5)二分图的最大匹配 (匈牙利算法) (poj3041,poj3020) (6)最大流的增广路算法(KM算法). (poj1459,poj3436) ......

OJ:整除n解题报告

整除n解题报告 Regular Expression for Binary Numbers Divisible by n: https://www.codewars.com/kata/5993c1d917bc97d05d000068 这道题主要的思路是借助DFA,先写出读取01串对应的DFA,然后化简成正则表达式。以下对这种思路进行详细介绍。Codewars目前Python下最高赞版本就是相同的思路,同时代码简化到极致。 DFA的构造 具体来说,从前到后地1读取01串,以当前读到的部分串对n的余数情况,确定

WinterShiver 506

北京大学OJ题目详细分类

对于ACMer特别有用的东西,初学者特别适合,有需要其他知名大学OJ题目分类的,可以直接联系我。邮箱:514103008@qq.com

北大OJ试题集

包含北大OJ上的几百道题目

杭电北大OJ题目保存

【代码】杭电北大OJ题目保存。

FWJ的博客 409

华为防火墙 策略路由实现多ISP接入Internet

PC3上网访问Server1时走ISP1。PC4上网访问Server1时走ISP2。1、配置接口IP并加入相应的安全区域。二、ISP2 运营商 R2路由器。一、ISP1 运营商 R1路由器。

一直被模仿,从未被超越 3014

棋盘问题——北大OJ

题目链接 http://poj.org/problem?id=1321 思路 由于是北大OJ所以代码部分万能头文件不能用,整体思路就是按行枚举,找到‘#’同时判断对应行列标记数组是否已经被标记,本题唯一的坑在于,按行遍历的起始行需要在上一层的行数基础上+1枚举下一行,否则会导致后面的与前面重复配对,而且你还没来得及WA就TLE了。 c++代码 #include<iostream> #include<stdio.h> using namespace std; char a[9][9];

洞·爺·湖的博客 447

[FreeRTOS+STM32CubeMX] 03 USART串口调试-基于中断实现接收和发送数据

我们接着上一小节,上一节讲到,接收上位机传来的数据时,需要事先知道传来的数据的字节数,这一操作实在有些反人类,那么如何解决这个问题,上位机输入多少,我们就接收多少数据呢? 接下来我将把USART引入中断,在接收数据的回调函数中引入二值信号量、消息队列,来让我的接收数据能够存储在队列中,并一个一个的在任务中输出出来,并最终在上位机回显。

RichieHuang的博客 2649

Macbook Pro Bootcamp 安装触控板驱动mac-precision-touchpad在Windows系统下实现更好的触控板操作

由于很多软件的限制,所以不得不在Windows和MacOS之间进行切换,然而,Windows下虽然Bootcamp提供了触控板的驱动,然而只能实现简单的上下滑动和点击等操作,而且在滑动页面的时候滑动非常不流畅,体验极差。 今天无意间发现了一款第三方撰写的驱动,可以较为完美地实现Macbook笔记本在Windows系统下的触控板操作支持,通过在我的2015款Macbook Pro(A1502)进行安装测试,感觉体验很不错,在这里分享给大家。 驱动来自于Github上的imbushu,他的项目地址如下: htt

博客 1万+

C++ 在线编译软件介绍、杭电OJ、北大OJ、力扣OJ

杭州电子科技大学开发的一个免费的写代码地址 ,杭电OJ。

qq_43355454的博客 733

windows系统下,如何为comfyui如何安装triton

​ 有些加速插件、模型在安装的时候,比如说sageattention的安装,就需要提前安装triton这个包,不过这个包有点特殊,windows下略微不好装,经常会装失败。 🎠如何安装 之前也有人介绍过,要到github上找个wheel文件,找到对应的版本安装下就好了。 问题是:https://github.com/woct0rdho/triton-windows/releases 这个git地址上,已经找不到wheel文件了... ​

聚梦小课堂 4499

java北大oj1001_北大OJ 1001题 Exponentiation

作者:林子木大体思路就是用递归的方法求幂的次数其中乘法,使用大数乘法的原理,不拘泥本题的六位的输入其中整型字符串 和 字符串转整型 采用自己写的函数,如果使用系统自带的,速率会跟高些。AC的时间是16MS 内存是232K这里的主要问题是有块内存不能释放在,在注释的//free(s2);//free(s1); 这里的内存指向是最后的char *Int2Str(int *n,int len)中产生的内...

weixin_33940469的博客 272

4、基于STM32 NUCLEO - F030R8开发板的嵌入式编程入门

本文详细介绍了如何在STM32 NUCLEO-F030R8开发板上实现LED闪烁功能,作为嵌入式编程的入门实践。内容涵盖开发板组成、跳线设置、项目创建、代码编写与解析、编译运行步骤,以及常见问题解决方法和拓展应用。通过本文学,习者可以掌握嵌入式开发的基本流程,并为后续深入学习打下基础。

m9n0o的博客 83

量化 insider 爆料! 散户打板必亏?(打板必看!量化资金如何“隔日砸盘”收割散户)

量化开发 insider 爆料💥 散户追的涨停板📉,可能是机构故意做的陷阱!本文从技术视角拆解“涨停陷阱”,帮你看清市场真实逻辑🧠。

XiaoqiangClub的博客 451

北大oj百练-4017:爬楼梯

递归/动态规划题 两种写法: 递归 #include<iostream> using namespace std; int stairs(int n) { if(n<0) return 0; if(n==0) return 1; return stairs(n-1)+stairs(n-2); } int main() { int n; while(~scanf("...

柠檬鱼泡秋刀茶的博客 294

PY32F406K1CU6 FLASH模拟EEPROM

摘要:本文介绍了基于STM32 FLASH模拟EEPROM的实现方法。头文件flash.h定义了FLASH页大小(256字节)、用户存储区域(4页)及地址范围,提供了等待周期配置和地址校验宏,声明了EEPROM初始化、读写操作等函数接口。源文件flash.c实现了具体功能:配置FLASH等待周期(144MHz需3WS)、页读写擦除操作,以及EEPROM初始化(解锁-擦除-验证-锁定)和缓冲区读写功能。其中写操作采用"读页→更新→擦除→编程"的流程,确保数据安全写入。该方案适用于需要非易失

sam的博客 194

北大oj百练-1013:Counterfeit Dollar(WA)

(WA)代码,debug失败,先码着 #include <iostream> #include <cstring> using namespace std; char Left[3][20];//天平左边硬币 char Right[3][20];//天平右边硬币 char result[3][20];//存储结果 bool IsFake(char c,bool...

柠檬鱼泡秋刀茶的博客 301

FPGA实现的AES加解密算法——Verilog源代码详解

本文将介绍基于FPGA的AES加解密算法的Verilog实现,并提供相应的源代码。根据密钥长度的不同,AES算法分为AES-128、AES-192和AES-256三种模式。对于已知的明文-密钥组合,可以使用在线的AES加解密工具计算出正确的密文,然后将该密文与FPGA加速器的输出进行比较。本文以AES-128算法为例,介绍基于FPGA的AES加解密算法的设计思路和Verilog实现。以上是基于FPGA的AES加解密算法的Verilog实现的相关内容。模块接受输入的明文和密钥,并输出加密后的密文。

HackSquad的博客 1976

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

东北大学新OJ答题界面重新布局脚本

需求 最近重新刷起了学校自己的OJ。老版本OJ答题界面是全屏展示的,而新版本左半部分展示题目,右半部分为文本输入框,这样有一些影响阅读。每次做新的题目我都要通过更改前端代码的方式把界面调成图二所示,将文本输入框移动至题目下方,但这样无疑有一些麻烦。为了避免每次都要更改前端代码的麻烦,于是这个脚本诞生了。 如果想要直接使用的话按照下一节内容配置即可。在那之后我会简述原理。 如何使用 Tampermonkey安装 Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chro

FengLing的博客 1503

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 九度OJ
下一篇: 计数器管理
Ftworld21
博客等级 码龄14年 150粉丝 527原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值