Virtual Judge周赛四//2023上半学年//实验体更新ing~

  • A

    #include<bits/stdc++.h>
    using namespace std;
    int t,i,n,y,z=512;//因为输入的行数在1~512之间,eg:行数为4时就要z=5时才输出不乱码
    char q[262144];//为了保证能存下数据用2的18次方存2的9次方的平方
    void w(int i){
    if(t&&q[i]==88/*X*/)//第二种情况是没有消耗完w就走完了,出去后是初始的0了
    q[i]=46/*'.'*/,t++,w(i-z),w(i+z),w(i-1),w(i+1);
    }
    int main(){
    	for(scanf("%d%d%d",&n,&y,&t);
    		i<n;
    	scanf("%s",q+(++i*z)));//数据实际是用一维度数组存储的,写个512保证就算一行输满500个也不影响
    	for(i=0;i<z*z;i++)     //又因为字符串数组会自带一个'\0'终止符所以就有了eg的情况
    		if(q[i]==46)    //对表象二维迷宫地图实际一维数组全部遍历//并且用2的次方数可以加快读取速度
    			q[y=i]=88,t--;//q = [10, 20, 30, 40, 50],i = 2,y = q[i]
    	for(w(y);
    	t<n;
    	printf("%s\n",q+(++t*z)));
     
    	return 0;
    }
     

    解决问题的反思:降维编程,升维思考。

  • B

    #import<iostream>
    using namespace std;
    int main()
    {
        string s;
        cin>>s;
        long long res=0,q=1,r=0,mod=1e9+7,i,e,n=s.size();
        for(i=n;--i+1;)
        {
            e=(i*(i+1)/2*q+r)%mod;
            res=(res+e*(s[i]-48))%mod;
            r=(r+(n-i)*q)%mod;q=q*10%mod;
        }
        cout<<res;
    }
    

  • C

  • D

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {int t,r,l,n,q;
    string s;
    cin>>t;
    while(t--){
    cin>>n>>q>>s;
    while(q--){
    cin>>l>>r;
    cout<<(((s.find(s[l-1])<l-1)||(s.rfind(s[r-1])>r-1))?"YES\n":"NO\n");
    }
    }
    return 0;
    }
    

  • E

    #include<bits/stdc++.h>
    using namespace std;
    long long i,k,n,s,t,a[200040];
    main()
    {
    for(cin>>t;t--;)
    {
    cin>>n>>k;
    for(i=s=0;i<n*k;i++)cin>>a[i];
    for(i=(n-1)/2*k;i<n*k;i+=n/2+1)s+=a[i];
    cout<<s<<endl;
    }
    }
    

  • F

  • G

        #include <bits/stdc++.h>
         
        using namespace std;
        int t,n,m;
         
        char s[110][110]; 
         
        int main()
        {
        	cin>>t;
        	while (t--)
        	{
        		cin>>n>>m;
        		for (int i=0;i<n;i++) scanf("%s",s[i]);
        		int num=0;
        		for (int i=0;i<n;i++) for (int j=0;j<m;j++) if (s[i][j]=='1') num++;
        		num*=3;
        		printf("%d\n",num);
        		for (int i=0;i<n;i++) for (int j=0;j<m;j++) if (s[i][j]=='1')
        		{
        			int ki=1,kj=1;
        			if (i==n-1) ki=-1;
        			if (j==m-1) kj=-1;
        			printf("%d %d %d %d %d %d\n",i+1,j+1,i+ki+1,j+1,i+1,j+kj+1);
        			printf("%d %d %d %d %d %d\n",i+1,j+1,i+ki+1,j+kj+1,i+1,j+kj+1);
        			printf("%d %d %d %d %d %d\n",i+1,j+1,i+ki+1,j+1,i+ki+1,j+kj+1);
        		}
        	}
        }


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值