首页 > 其他分享 >B3928 [GESP202312 四级] 田忌赛马

B3928 [GESP202312 四级] 田忌赛马

时间:2024-09-01 19:57:12浏览次数:15  
标签:GESP202312 int sum long 数组 马匹 B3928 田忌 田忌赛马

题目描述

你要和田忌赛马。你们各自有 NN 匹马,并且要进行 NN 轮比赛,每轮比赛,你们都要各派出一匹马决出胜负。

你的马匹的速度分别为 u_1,u_2,\cdots,u_nu1​,u2​,⋯,un​,田忌的马匹的速度分别为 v_1,v_2,\cdots,v_nv1​,v2​,⋯,vn​。田忌会按顺序派出他的马匹,请问你要如何排兵布阵,才能赢得最多轮次的比赛?巧合的是,你和田忌的所有马匹的速度两两不同,因此不可能出现平局。

输入格式

第一行一个整数 NN。保证 1\le N \le 5\times 10^41≤N≤5×104

接下来一行 NN 个用空格隔开的整数,依次为 u_1,u_2,\cdots,u_nu1​,u2​,⋯,un​,表示你的马匹们的速度。保证 1\le u_i\le 2N1≤ui​≤2N。

接下来一行 NN 个用空格隔开的整数,依次为 v_1,v_2,\cdots,v_nv1​,v2​,⋯,vn​,表示田忌的马匹们的速度。保证 1\le v_i\le 2N1≤vi​≤2N。

输出格式

输出一行,表示你最多能获胜几轮。

输入输出样例

输入 

3
1 3 5
2 4 6

输出 

2

输入 

5
10 3 5 8 7
4 6 1 2 9

输出 

5

说明/提示

样例解释 1

第 1 轮,田忌派出速度为 2 的马匹,你可以派出速度为 3 的马匹迎战,本轮你获胜。

第 2 轮,田忌派出速度为 4 的马匹,你可以派出速度为 5 的马匹迎战,本轮你获胜。

第 3 轮,田忌派出速度为 6 的马匹,你可以派出速度为 1 的马匹迎战,本轮田忌获胜。

如此,你可以赢得 2 轮比赛。

一道GESP四级的真题,我第一反应是,太简单了。

#include<bits/stdc++.h>
using namespace std;
long long n,a[100005],b[100005]; 
int main(){
    cin>>n;
    long long sum=0;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>b[i];
    sort(a+1,a+n+1);   //a数组排序
    sort(b+1,b+n+1);  //b数组排序
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[i]>b[j] && a[i]!=0 && b[j]!=0){
                a[i]=0;
                b[j]=0;
                sum++;
            }
        }
    }
    cout<<sum;
    return 0;
}

然后.......90分(TLE)

于是我大脑飞速运转

发现,还是会觉得很简单

首先

先排序

 cin>>n;
    long long sum=0;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>b[i];
    sort(a+1,a+n+1);   //a数组排序
    sort(b+1,b+n+1);  //b数组排序

然后用a数组的值和b数组的值一个一个比

第一步:用1,看有没有比1小的。

第二步:用3,这里发现3>2,sum++。(sum为计数器)

于是3和2都标记(绿色为标记)

第三步:用5,用5时,发现b数组的2已经被标记了

于是2不算是b数组的值,从4开始寻找。

又发现5>4,sum++。(sum为计数器)

第四步:发现a数组已经扫描完了,程序结束,输出sum。

最后是完整代码:

注意,这里代码有小问题,要把数组按题目开大一点(防止有人直接不动脑子抄代码)。

#include<bits/stdc++.h>
using namespace std;
long long n,a[10005],b[10005]; 
int main(){
	cin>>n;
	long long sum=0;
	for(int i=1;i<=n;i++) cin>>a[i];
	for(int i=1;i<=n;i++) cin>>b[i];
	sort(a+1,a+n+1);
	sort(b+1,b+n+1);
	int j=1;
	for(int i=1;i<=n;i++){
		if(a[i]>b[j]){
			sum++;
			j++;
		}
	}
	cout<<sum;
	return 0;
}

标签:GESP202312,int,sum,long,数组,马匹,B3928,田忌,田忌赛马
From: https://blog.csdn.net/zzzoureiojg/article/details/141784057

相关文章

  • 【3.5】贪心算法-解优势洗牌(类田忌赛马问题)
    一、问题        给定两个大小相等的数组A和B,A相对于B的优势可以用满足A[i]>B[i]的索引i的数目来描述。返回A的任意排列,使其相对于B的优势最大化。二、解题思路        这个问题要求我们重新排列数组A,使得在相同位置上,数组A的......
  • 题解:P10111 [GESP202312 七级] 纸牌游戏
    题目大意给出三个序列:\(a\),\(b\),\(c\)分别表示:分数,罚分以及小杨从第\(1\)轮至第\(......
  • P10111 [GESP202312 七级] 纸牌游戏 题解
    看标签知道要用DP。于是开始分析。状态:$dp(i,j,k)=$前\(i\)轮中,第\(i\)轮出\(j\),一共换了\(k\)次牌的最大钱数。很好理解。转移也不难,不就是不换和换两种吗!所以,转移就是:\[dp(i,j,k)=\max\begin{cases}dp(i-1,j,k)+\operatorname{pk}(j,c_i)\times......
  • B3927 [GESP202312 四级]小杨的字典(入门小白版)
    本题包括:1.简单的map使用2.字符串简单处理本题参考洛谷题解: https://www.luogu.com.cn/problem/solution/B3927难度:普及-对于笔者而言:不会用map,在b站和csdn上搜map的使用方法,只能说是杂而乱杂在于:介绍的种类方法多种多样,但是底下的使用方法寥寥无几,与开头的介绍有......
  • P10111 [GESP202312 七级] 纸牌游戏
    原题链接思路1.任意一轮出牌,只有三种选择2.每一轮的得分只与当前一轮出的牌和上一轮出的牌相关由此我们可以设\(dp[i][j]\)为第\(i\)轮,出牌\(j\)的得分3.由于扣分机制,扣的分数与扣的次数有关,所以我们再加一层\(dp\)代表扣的次数code,注意细节#include<bits/stdc++.......
  • 田忌赛马的算法逻辑
    田忌赛马的故事大家应该都听说过:田忌和齐王赛马,两人的马分上中下三等,如果同等级的马对应着比赛,田忌赢不了齐王。但是田忌遇到了孙膑,孙膑就教他用自己的下等马对齐王的上等马,再用自己的上等马对齐王的中等马,最后用自己的中等马对齐王的下等马,结果三局两胜,田忌赢了。当然,这段历史......
  • B3929 [GESP202312 五级] 小杨的幸运数 题解
    因为一些众所周知的原因,不放代码。分享一种考场思路:\(a\le10^7\),顺序查找肯定会废,所以可以用一种类似埃氏筛的方法将所有满足条件的数标记一下,并将其加入一个答案数组\(a\)当中。然后每次查询只需要用lower_bound函数二分查找一下,假如找到了第\(i\)个:\(a_i=x\),直接......
  • 现代版“田忌赛马”:IPMT如何实现资源利用最大化
    摘要:在流程调整和产品重整过程中,IPMT发挥了至关重要的作用。IPMT是什么?它的职责到底是什么?每个公司必须要有IPMT吗?1992年,IBM在激烈的市场竞争下,遭遇到了严重的财政困难,利润急剧下降。为了重新获得市场竞争优势,IBM公司率先应用了IPD(集成产品开发)体系,从流程调整和产品重整两个方面来......
  • hdu:田忌赛马(贪心,双指针)
    ProblemDescription“田忌赛马”是中国历史上一个著名的故事。大约2300年前,齐国大将田忌喜欢和国王赛马,并且约定:每赢一场,对方就要付200元。假设已知田忌和国王的各自马匹的速度都不相同,请计算田忌最好的结果是什么。Input输入包含多组测试样例。每组样例的第一行是一个整数......
  • 【LBLD】田忌赛马背后的算法决策
    田忌赛马背后的算法决策870.优势洗牌classSolution{public:vector<int>advantageCount(vector<int>&nums1,vector<int>&nums2){intn=nums1.size();priority_queue<pair<int,int>,vector<pair<int,int>&......