首页 > 其他分享 >牛客周赛 Round 40

牛客周赛 Round 40

时间:2024-04-18 23:33:12浏览次数:16  
标签:yi mm xi int 40 牛客 using Round dp

A 小红进地下城

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s,t;
	cin>>s;
	cin>>t;
	if(s==t)
	{
		cout<<"Yes"<<endl;
	}
	else
	{
		cout<<"No"<<endl;
	}
	return 0;
}

B 小红打怪

点击查看代码
#include<bits/stdc++.h>
using namespace std;
char mm[1005][1005];
int flag[1005][1005];
int main()
{
	int n,m;
	cin>>n>>m;
	int xi,yi;
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=m;++j)
		{
			cin>>mm[i][j];
			if(mm[i][j]=='A')
            {
                xi=i,yi=j;
            }
            else if(mm[i][j]=='W')
            {
                xi=i,yi=j;
            }
            else if(mm[i][j]=='S')
            {
                xi=i,yi=j;
            }
            else if(mm[i][j]=='D')
            {
                xi=i,yi=j;
            }
		}
	}
	int ans=0;
	if(mm[xi][yi]=='A')
    {
        for(int i=1;i<=yi;++i)
        {
            if(mm[xi][i]=='*')ans++;
        }
    }
    else if(mm[xi][yi]=='W')
    {
        for(int i=1;i<=xi;++i)
        {
            if(mm[i][yi]=='*')ans++;
        }
    }
    else if(mm[xi][yi]=='S')
    {
        for(int i=xi;i<=n;++i)
        {
            if(mm[i][yi]=='*')ans++;
        }
    }
    else if(mm[xi][yi]=='D')
    {
        for(int i=yi;i<=m;i++)
        {
            if(mm[xi][i]=='*')ans++;
        }
    }
    cout<<ans<<endl;
    return 0;
}

C 小红的排列构造

开两个数组判断数字是否在 \(p\) 或 \(q\) 排列中出现过,如果都出现过,直接输出 -1 ,然后对于排列 \(p\) 和 \(q\) 中那些空缺的位置,遍历没有被填的数,然后填上

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int a[maxn],p[maxn],q[maxn],t1[maxn],t2[maxn];
int main()
{
    int n;
    int j1=1,j2=1;
    cin>>n;
    int jud=0;
    for(int i=1;i<=n;++i)
    {
        cin>>a[i];
        if(!t1[a[i]])p[i]=a[i],t1[a[i]]=1;
        else if(!t2[a[i]])q[i]=a[i],t2[a[i]]=1;
        else jud=1;
    }
    if(jud)return cout<<-1,0;
    for(int i=1;i<=n;++i)
    {
        if(!p[i])
        {
            while(t1[j1])j1++;
            p[i]=j1;
            t1[j1]=1;
        }
        if(!q[i])
        {
            while(t2[j2])j2++;
            q[i]=j2;
            t2[j2]=1;
        }
    }
    for(int i=1;i<=n;++i)cout<<p[i]<<" ";
    cout<<endl;
    for(int i=1;i<=n;++i)cout<<q[i]<<" ";
    cout<<endl;
    return 0;
}

D 小红升装备

点击查看代码
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll dp[305][305];
//dp[i][j]为考虑前i件装备,使用金币数不超过j时,可以获得的最大战力
int main()
{
    int n,x;
    cin>>n>>x;
    memset(dp,-0x3f,sizeof dp);
    dp[0][0]=0;
    ll res=0;
    for(int i=1;i<=n;++i)//遍历每一件装备
    {
        ll a,b,c,d,e;
        cin>>a>>b>>c>>d>>e;
        for(int j=0;j<=x;++j)
        {
            dp[i][j]=dp[i-1][j];
        }
        for(int k=0;k<=x;++k)//遍历金币数
        {
            for(int j=0;j<=e;++j)//遍历升的级
            {
                if(b+c*j>k)break;
                dp[i][k]=max(dp[i][k],dp[i-1][k-(b+c*j)]+a+j*d);
                res=max(res,dp[i][k]);
            }
        }
    }
    cout<<res<<endl;
    return 0;
}

E 小红的矩阵划分

首先,有引理,如果 \(n\) 是 3 的倍数,则一定可以填满,如果 \(n\) 不是 3 的倍数,则一定有一种方案可以做到只剩一个方块

因此当 \(n\) 为 3 的倍数时,选择 \(L\) 型或正方形中的一种填满即可,\(n\) 不为 3 的倍数时,比较最后一个块的方案

点击查看代码
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int main()
{
    ll n,x,y;
    cin>>n>>x>>y;
    if(n%3==0)
    {
        cout<<max(n*n/3*x,n*n/4*y);
    }
    else
    {
        cout<<max({n*n/3*x,n*n/4*y,n*n/3*x-x+y});
    }
    cout<<endl;
    return 0;
}

F 小红拿宝箱

标签:yi,mm,xi,int,40,牛客,using,Round,dp
From: https://www.cnblogs.com/ataraxyyeah/p/18144686

相关文章

  • 20240418-这事我能吹一年/鱼梓酱你真是三班背刺王
    哈哈哈哈今天下午体考我tm满了!!!哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈......
  • P4423 / YC271A [ 20240411 CQYC省选模拟赛 T1 ] 三角形(triangle)
    题意给定\(n\)个点,求平面最小三角形周长。Sol其实挺简单一算法,一直没学。先随机转个∠,然后按照\(x\)排序。考虑分治。注意到分治左右两边的答案对当前可用的区间有限制。将满足限制的点按照\(y\)排序。这里可以归并做到一只\(log\)。然后集中注意力,发现对于每个点......
  • 【计算几何】牛客专题第二章 二维基础
    元素的表示点1.复数类·complex<int/duble>·特点:慢,自带各种运算,不怎么用2.pair·自带排序·自由度不高·基本不在几何题目中使用3.结构体(推荐,常用)自由度高,成员函数,重载运算符structPoint{ doublex,y;};向量(直接用Point)向量点积与几何意义及应用\vec{......
  • 20240416
    T1TopcoderSRM573div1Medium-SkiResorts一定存在一种方案使得最终所有高度都是原高度序列中出现过的数。考虑倒着来,\(dp[i][j]\)表示\(i\)高度变成原来\(j\)的高度之后能够从\(n\)到达的最小代价。转移是简单的,但是需要使用dijkstra。代码#include<iostream......
  • 20240415
    T1TopcoderSRM579div1Medium-TravellingPurchasingMan发现行动肯定是从当前点沿最短路走到目标然后等开门然后买然后去下一个目标。所以先对每个关键点为原点跑一遍最短路,然后状压一下,\(dp[S][i]\)表示已经买了\(S\)集合,当前在\(S\)中的\(i\)。转移就枚举目的地,看过......
  • [ABC240E] Ranges on Tree 题解
    [ABC240E]RangesonTree题解思路解析由题意可知,只要一个点的所有儿子节点都被确定了,那么当前节点也就被确定了。也就是说,只要确定了所有叶子节点,也就能一层层地确定所有节点,而叶子节点没有儿子节点不受此条件的约束,同时我们希望\(\max\limits^N_{i=1}R_i\)最小,所以我们把所......
  • ABC240 复盘
    ABC240复盘[ABC240C]JumpingTakahashi思路解析显而易见,求是否可能,用可能性dp即可。code#include<bits/stdc++.h>usingnamespacestd;constintN=1e2+10,M=1e4+10;intn,x,a[N],b[N];boolf[N][M];intmain(){ cin>>n>>x; for(inti=1;i......
  • 40岁女人人生感悟的句子
    【40岁女人人生感悟的句子】每个40岁的女人都有自己的人生感悟,经历了青春的风华,步入成熟的年纪,她们已经拥有了足够的人生经验和智慧。在这个年龄段,很多女性开始思考生活的意义,反思过去的选择,展望未来的可能。以下是一些40岁女人人生感悟的句子,或许能给你一些启发。"人生最重要......
  • Educational Codeforces Round 163 (Rated for Div. 2) 补题记录(A~A)
    A容易发现若\(S\)串中\(s_i\)为特殊字符,则令\(s_i=s_{i+1}\),此时\(s_i\neqs_{i-1}\)。则找到一个\(j\)满足\(s_i=s_{i+1}=s_{i+2}=\ldots=s_j\neqs_{j+1}\),则\(s_j\)也一定为特殊字符。所以若\(2\midn\)则构造\(\frac{n}{2}\)个AAB,否则必然无解。#include<......
  • CodeTON Round 8 (Div. 1 + Div. 2, Rated, Prizes!) 补题记录(A~A)
    A猜测结论。发现当且仅当\(k=1\)或者\(n=k\)时有解,否则无解。对于\(k=1\)时构造序列\(1,2,3,\ldots,n\)满足条件。对于\(k=n\)时构造序列\(1,1,1,\ldots,1\)满足条件。时间复杂度为\(O(n)\)。#include<bits/stdc++.h>#defineintlonglongusingnamespaces......