HDOJ 5821 Ball 贪心 (16多校day8 1001) )

该博客主要介绍了HDOJ 5821 Ball问题,通过贪心算法进行求解。博主分享了题目的链接、题意和解题思路,并给出了代码实现。
摘要由CSDN通过智能技术生成


题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5821

https://vjudge.net/contest/180311#problem/J


题意:

给定数组a和数组b,长度为n,给定m组数据,每组数据两个数L和R ,代表从1开始计数的这两个数组的第L号位置到第R号位置期间的数可以重新排列,问经过m次的随机打乱可否由a数组变为b数组。
(观众:你 tm 这叫什么叙述,你高中上过语文课嘛!你怎么一点数学素养都没有。)

没看懂题意的可以参考这篇博客,捂脸逃

思路:

看了题解才明白,其实就是对于每次输入的数字,记录下在b数组里的位置,把每次的【L,R】的数字按照位置排序,就好啦。
嘛,哭晕在厕所。
两个致命错误:
1.没有彻底搞懂(说的好像你现在彻底搞懂了一样!)结构体的一些基本原理。
以 a[5].4 作为数字5在b数组的4号位的方式来存储,果断WA。
2.记录过的数字就不记录了,其实应该顺序记录,无论出没出现过都要记录。

6 1
1 4 4 0 3 2
0 4 2 4 1 3
× ×...
这种情况把数字 4 的位置都存为 2 就麻烦了。

改掉之后和AC代码对拍发现都对就是WA,WA两天后发现YES -> Yes抓狂

附:多校题解

上代码:

#include<cstdio>
#include<cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define N 1005
int b[N];
struct Node
{
    int x;
    int p;
    int ps;
} a[N];
int n;
int m;
int t;
bool compare(Node a,Node b)
{
    return a.p < b.p;
}
int main()
{
    int R = 0;
//    freopen("data.txt", "r", stdin);
//    freopen("outWA.txt", "w", stdout);
    scanf("%d", &t);
    while(t --)
    {
        int T;

        memset(a, 0, sizeof(a));
        memset(b, 0, sizeof(b));
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值