Codeforces Round #619 (Div. 2)

场次链接
在这里插入图片描述
成功上橙!!
A、Three Strings
题目链接
给你a,b,c,3个串,对于a,b,c的每一位你必须将 a i , c i a_i,c_i ai,ci互换或者 b i , c i b_i,c_i bi,ci互换,问是否有可能使得a串等于b串。
数据范围 1 ≤ t ≤ 100 1\leq t\leq 100 1t100, 1 ≤ ∣ s ∣ ≤ 100 1\leq |s|\leq 100 1s100
解 对于每一位判断 a i = = c i a_i==c_i ai==ci b i = = c i b_i==c_i bi==ci即可
复杂度 O ( ∣ s ∣ ) O(|s|) O(s)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
char a[105],b[105],c[105];
void work()
{
    scanf("%s%s%s",a,b,c);
    int l=strlen(a);
    for(int i=0;i<l;i++){
        if(a[i]!=c[i]&&b[i]!=c[i]){
            printf("NO\n");
            return;
        }
    }
    printf("YES\n");
}
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int T=1;
    scanf("%d",&T);
    //cin>>T;
    while(T--){
        work();
    }
}

B、Motarack’s Birthday
题目链接
给n个数,你要求相邻2个数差的绝对值的最大值,值为-1的位置你可以统一变成一个数,问这个最大值和你将-1变成什么数。
数据范围 1 ≤ t ≤ 1 0 4 1\leq t\leq 10^4 1t104, 2 ≤ n ≤ 1 0 5 2\leq n\leq 10^5 2n105, − 1 ≤ a i ≤ 1 0 9 -1\leq a_i\leq 10^9 1ai109
解 先将没有-1的情况的最大值统计出来,然后把有-1的位置的相邻的数的最大值最小值统计出来,要填入的数即(max+min)/2,再求个最大值即可。
复杂度 O ( n ) O(n) O(n)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[100005];
void work()
{
    int n;
    scanf("%d",&n);
    int maxx=0;
    int minn=1e9;
    int ans=0;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;i++){
        if(i>1){
            if(a[i]==-1){
                if(a[i-1]!=-1){
                    maxx=max(a[i-1],maxx);
                    minn=min(a[i-1],minn);
                }
            }
        }
        if(i<n){
            if(a[i]==-1){
                if(a[i+1]!=-1){
                    maxx=max(a[i+1],maxx);
                    minn=min(a[i+1],minn);
                }
            }
        }
    }
    for(int i=2;i<=n;i++){
        if(a[i]!=-1&&a[i-1]!=-1){
            ans=max(ans,abs(a[i]-a[i-1]));
        }
    }
    printf("%d %d\n",max(ans,(maxx-minn+1)/2),(maxx+minn)/2);
}
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int T=1;
    scanf("%d",&T);
    //cin>>T;
    while(T--){
        work();
    }
}

C、Ayoub’s function
题目链接
给一个n,m,即在一个n长度的字符串中有m个1,这m个1的位置可以任选,要求最大有多少个子段存在1。
数据范围 1 ≤ t ≤ 1 0 5 1\leq t\leq 10^5 1t105, 1 ≤ n ≤ 1 0 9 1\leq n\leq 10^9 1n109, 0 ≤ m ≤ n 0\leq m\leq n 0mn
解 答案就是所有子段减掉全0子段的数量,即将n-m个0平均分为m+1份,计算即可。
复杂度 O ( 1 ) O(1) O(1)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
void work()
{
    ll n,m;
    scanf("%lld%lld",&n,&m);
    if(m==0){
        printf("0\n");
        return;
    }
    ll ans=n*(n+1)/2;
    n=n-m;
    ll tmp=n/(m+1);
    ll tmp1=n%(m+1);
    ans-=(tmp+1)*(tmp+2)/2*tmp1;
    ans-=tmp*(tmp+1)/2*(m+1-tmp1);
    printf("%lld\n",ans);
}
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int T=1;
    scanf("%d",&T);
    //cin>>T;
    while(T--){
        work();
    }
}

D、Time to Run
给你n*m的矩阵,每个格子分别有一条有向边指向相邻的格子,你开始在(1,1),需要走k步,要求不经过同一条边,最后停在任意位置,问走法或者无法走成功,走法输出要求少于3000行,输出格式为总行数,然后后面跟上每一步的方向和步数。
数据范围 1 ≤ n , m ≤ 500 1\leq n,m\leq 500 1n,m500, 1 ≤ k ≤ 1 0 9 1\leq k\leq 10^9 1k109
解 首先可以确定 所有边都是可以经过的 那么k的范围只要在边数以内即可, n , m > = 2 n,m>=2 n,m>=2时边数为 4 ∗ n ∗ m − 2 ∗ n − 2 ∗ m 4*n*m-2*n-2*m 4nm2n2m,n为1时边数为 2 ∗ ( m − 1 ) 2*(m-1) 2(m1),m为1时边数为 2 ∗ ( n − 1 ) 2*(n-1) 2(n1)。n=1和m=1的时很好写。对于n>1并且m>1时,选择的走法可以是先右到底,然后往左走回来,再往下一格,这样所有横向边全部可以走过,然后在走到最后一行回来时,将纵向边也走掉即可。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node
{
	char a;
	int s;
}ans[3005];
void work()
{
    int n,m,k;
    scanf("%d%d%d",&n,&m,&k);
    if(m==1){
    	if(k>2*n-2){
    		printf("NO\n");
    		return;
    	}
    	printf("YES\n");
    	if(k>n-1){
    		printf("2\n");
    		printf("%d %c\n",n-1,'D');
    		printf("%d %c\n",k-n+1,'U');
    	}else{
    		printf("1\n%d %c\n",k,'D');
    	}
    	return;
    }
    if(n==1){
    	if(k>2*m-2){
    		printf("NO\n");
    		return;
    	}
    	printf("YES\n");
    	if(k>m-1){
    		printf("2\n");
    		printf("%d %c\n",m-1,'R');
    		printf("%d %c\n",k-m+1,'L');
    	}else{
    		printf("1\n%d %c\n",k,'R');
    	}
    	return;
    }
    int sum=4*n*m-2*n-2*m;
    if(sum<k){
    	printf("NO\n");return;
    }
    int cnt=0;
    for(int i=1;i<n;i++){
    	if(k>=2*m-1){
    		ans[++cnt].a='R';
    		ans[cnt].s=m-1;
    		ans[++cnt].a='L';
    		ans[cnt].s=m-1;
    		ans[++cnt].a='D';
    		ans[cnt].s=1;
    		k-=2*m-1;
    	}else if(k>m-1){
    		ans[++cnt].a='R';
    		ans[cnt].s=m-1;
    		ans[++cnt].a='L';
    		ans[cnt].s=k-m+1;
    		k=0;break;
    	}else if(k>0){
    		ans[++cnt].a='R';
    		ans[cnt].s=k;
    		k=0;
    		break;
    	}else{
    		break;
    	}
    }
    if(k>0){
    	ans[++cnt].a='R';
    	ans[cnt].s=min(k,m-1);
    	k-=min(k,m-1);
    }
    for(int i=m;i>1;i--){
    	if(k>=2*n-1){
    		ans[++cnt].a='U';
    		ans[cnt].s=n-1;
    		ans[++cnt].a='D';
    		ans[cnt].s=n-1;
    		ans[++cnt].a='L';
    		ans[cnt].s=1;
    		k-=2*n-1;
    	}else if(k>n-1){
    		ans[++cnt].a='U';
    		ans[cnt].s=n-1;
    		ans[++cnt].a='D';
    		ans[cnt].s=k-n+1;
    		k=0;break;
    	}else if(k>0){
    		ans[++cnt].a='U';
    		ans[cnt].s=k;
    		k=0;
    		break;
    	}else{
    		break;
    	}
    }
    if(k!=0){
    	ans[++cnt].a='U';
    	ans[cnt].s=k;
    }
    printf("YES\n");
    printf("%d\n",cnt);
    for(int i=1;i<=cnt;i++){
    	printf("%d %c\n",ans[i].s,ans[i].a);
    }
}
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int T=1;
    //scanf("%d",&T);
    //cin>>T;
    while(T--){
        work();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本火锅店点餐系统采用Java语言和Vue技术,框架采用SSM,搭配Mysql数据库,运行在Idea里,采用小程序模式。本火锅店点餐系统提供管理员、用户两种角色的服务。总的功能包括菜品的查询、菜品的购买、餐桌预定和订单管理。本系统可以帮助管理员更新菜品信息和管理订单信息,帮助用户实现在线的点餐方式,并可以实现餐桌预定。本系统采用成熟技术开发可以完成点餐管理的相关工作。 本系统的功能围绕用户、管理员两种权限设计。根据不同权限的不同需求设计出更符合用户要求的功能。本系统中管理员主要负责审核管理用户,发布分享新的菜品,审核用户的订餐信息和餐桌预定信息等,用户可以对需要的菜品进行购买、预定餐桌等。用户可以管理个人资料、查询菜品、在线点餐和预定餐桌、管理订单等,用户的个人资料是由管理员添加用户资料时产生,用户的订单内容由用户在购买菜品时产生,用户预定信息由用户在预定餐桌操作时产生。 本系统的功能设计为管理员、用户两部分。管理员为菜品管理、菜品分类管理、用户管理、订单管理等,用户的功能为查询菜品,在线点餐、预定餐桌、管理个人信息等。 管理员负责用户信息的删除和管理,用户的姓名和手机号都可以由管理员在此功能里看到。管理员可以对菜品的信息进行管理、审核。本功能可以实现菜品的定时更新和审核管理。本功能包括查询餐桌,也可以发布新的餐桌信息。管理员可以查询已预定的餐桌,并进行审核。管理员可以管理公告和系统的轮播图,可以安排活动。管理员可以对个人的资料进行修改和管理,管理员还可以在本功能里修改密码。管理员可以查询用户的订单,并完成菜品的安排。 当用户登录进系统后可以修改自己的资料,可以使自己信息的保持正确性。还可以修改密码。用户可以浏览所有的菜品,可以查看详细的菜品内容,也可以进行菜品的点餐。在本功能里用户可以进行点餐。用户可以浏览没有预定出去的餐桌,选择合适的餐桌可以进行预定。用户可以管理购物车里的菜品。用户可以管理自己的订单,在订单管理界面里也可以进行查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值