当前位置: 首页 > news >正文

32.代码题

接着上集......

派对:超时了,总该受到惩罚吧?

洛西:至于吗?就0.1秒!

晴/宇:十分应该。

洛西:我.....................

没办法,洛西只能按照要求去抓R了。

1.P1102 A-B 数对

题目描述

给出一串正整数数列以及一个正整数 C,要求计算出所有满足 A−B=C 的数对的个数(不同位置的数字一样的数对算不同的数对)。

输入格式

输入共两行。

第一行,两个正整数 N,C。

第二行,N 个正整数,作为要求处理的那串数。

输出格式

一行,表示该串正整数中包含的满足 A−B=C 的数对的个数。

#include<bits/stdc++.h>
#include <map>
using namespace std;
typedef long long LL;
LL b[200001];
map<LL,LL> m;
int main()
{
	int n;
    LL c;
    LL s=0;
    cin >> n >> c;
    for(int i=1;i<=n;i++)
	{
        cin >> b[i];
        m[b[i]]++;
        b[i]-=c;    
    } 
    for(int i=1;i<=n;i++)
	{
		s+=m[b[i]];
	} 
    cout << s << endl;
	
	return 0;
}

2.P1002 [NOIP 2002 普及组] 过河卒

题目描述

棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。

棋盘用坐标表示,A 点 (0,0)、B 点 (n,m),同样马的位置坐标是需要给出的。

现在要求你计算出卒从 A 点能够到达 B 点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。

输入格式

一行四个正整数,分别表示 B 点坐标和马的坐标。

输出格式

一个整数,表示所有的路径条数。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
const int x[] = {0, -2, -1, 1, 2, 2, 1, -1, -2};
const int y[] = {0, 1, 2, 2, 1, -1, -2, -2, -1};
int bx, by, mx, my;
ll f[40][40];
bool s[40][40]; 
int main()
{
    scanf("%d%d%d%d", &bx, &by, &mx, &my);
    bx += 2; by += 2; mx += 2; my += 2;
    f[2][1] = 1;
    s[mx][my] = 1;
    for(int i = 1; i <= 8; i++) s[mx + x[i]][my + y[i]] = 1;
    for(int i = 2; i <= bx; i++){
        for(int j = 2; j <= by; j++){
            if(s[i][j]) continue; 
            f[i][j] = f[i - 1][j] + f[i][j - 1];
            
        }
    }
    printf("%lld\n", f[bx][by]);
    
    return 0;
} 

3.P1030 [NOIP 2001 普及组] 求先序排列

题目描述

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 ≤8)。

输入格式

共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。

输出格式

共一行一个字符串,表示一棵二叉树的先序。

#include<iostream>
#include<cstring>
using namespace std;
void s(string i,string a)
{
	if(i.size()>0)
	{
		char ch=a[a.size()-1];
		cout<<ch;
		int k=i.find(ch);
		s(i.substr(0,k),a.substr(0,k));
		s(i.substr(k+1),a.substr(k,i.size()-k-1));
	}
}
int main()
{
	string i,a;
	cin>>i>>a;
	s(i,a);
	cout<<endl;

	return 0;
}

4.P1996 约瑟夫问题

题目描述

n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 1 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

注意:本题和《深入浅出-基础篇》上例题的表述稍有不同。书上表述是给出淘汰 n−1 名小朋友,而该题是全部出圈。

输入格式

输入两个整数 n,m。

输出格式

输出一行 n 个整数,按顺序输出每个出圈人的编号。

#include<cstdio>
using namespace std;
int main()
{
    int n,m,s=0;
	scanf("%d%d",&n,&m);
    bool v[200]={0};
    for(int k=0;k<n;k++){
        for(int i=0;i<m;i++){if(++s>n)s=1;if(v[s])i--;}
        printf("%d ",s);v[s]=true;
    }
    return 0;
}

5.结语

洛西:总算完成任务了!

相关文章:

  • 常用的排序算法------练习4
  • 蓝桥杯专项复习——前缀和
  • allegro skill
  • 中国固定资产投资统计年鉴(1950-2023年)
  • 创建和管理Pod
  • 深入解析最大公约数(GCD)与最小公倍数(LCM)的C++实现
  • 06_约束
  • Java的IO模型、Netty原理详解
  • IDEA中打开项目Vue+Vue基本语法
  • 内网穿透_ZeroTiers部署_广和通SC171_aidlux_嵌入式
  • 在机器人和无人机时代,测绘人的出路在哪里?
  • 【C++初阶】--- 内存管理
  • Java进阶——位运算
  • 系统间交互时,怎么校验两个系统所在服务器时间是否一致
  • 【android bluetooth 协议分析 06】【l2cap详解 5】【通俗易懂l2cap 定时器rtx和ertx】
  • Go中的逃逸分析
  • 11-项目涉及设备的问题
  • 单元测试的编写
  • Java【多线程】(6)定时器
  • HCIP【OSPF 详解】
  • 1万元左右的加盟店/seo网站关键词排名提升
  • 中国建设教育协会网站打不开/新乡百度关键词优化外包
  • 做网站的硬件成本/建设网站的网站首页
  • 全球网购平台排名前十/深圳关键词推广整站优化
  • 做网站需要展示工厂么/媒体发布平台
  • 合肥瑶海区/沈阳seo收费