ccpc网络赛总结

这是我入队以来第一次打团队赛,团队一共做出来了4个题,我算是单独解出了两个题,团队赛不同于个人赛大家是三个人一起打题,团队打题基本有两种方式:
1.大家集中针对一道题进行讨论和分析,集体打代码看最终那个代码可以AC就用哪一个
2.大家分开来打代码,每个人都有每个人不同的题。
两种方式我个人更认为第二种方式可能效率相对更高,但是这个对各个队员的实力是有相当高的硬性要求的,我们队暂时采用的是第二种方法,比较难的题大家一起讨论,相对简单的题大家分题由个人高效率的完成。
至于哪一种方法更合适,这是我们团队第一次团队打题我觉得后续我们关于如何更加高效的合作这一方面还需要继续研究和磨合。
我们一共打了Express Mail Taking,CCPC Training Class,Reports,3x3 Convolution这四道题
我们打题的方式是先打通过率比较高的题,然后再考虑其余的题
其中我打了Express Mail Taking,3x3 Convolution这两道题
1.Express Mail Taking

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

int main()
{
    speed_up;
    int t;
    cin>>t;
    while(t--)
    {
        ll n,m,a;
        cin>>n;
        cin>>m;
        cin>>a;
        ll b[m];
        ll i;
        for(i=0;i<m;i++){
            cin>>b[i];
        }
        sort(b,b+m);
        ll num=0;
        num+=a-1;
        for(i=m-1;i>0;i--){
            if(b[i]>a){
                num+=(b[i]-a)*2;
            }else{
                num+=(a-b[i])*2;
            }
        }
        if(b[0]>a){
            num+=b[0]-a;
        }else{
        num+=a-b[0];
        }
        num+=b[0]-1;
        cout<<num<<endl;
    }
}

错误点:
1.最初我编了一个代码,但是我由于太着急,读题不仔细而导致我对题目的误解让我误解题目,误以为题目只仅仅是要经历一次K,所以以后做题的时候一定要仔细不能粗略的读仅仅只是知道大意。
收获点:
1.将复杂的问题分成几个不同的情况,并且通过画图举例将个例找到个例的共通点。
2.头文件 #include<bits/stdc++.h> 超级好用
3.#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);可以大大提高cin>>的速度

2.3x3 Convolution

#include <iostream>
#include <stdio.h>
#include <iomanip>
#include <math.h>
using namespace std;

int a[1000][1000];
int b[1000][1000];
int main()
{
   int t;
   cin>>t;
   while(t--)
   {
       int n;
       cin>>n;
       //cout<<n;
       for(int i=0;i<n;i++)
       {
           for(int j=0;j<n;j++)
           {
               cin>>a[i][j];
           }
       }
       for(int i=0;i<3;i++)
       {
           for(int j=0;j<3;j++)
           {
               cin>>b[i][j];
           }
       }
       //分类型
       int sum=0;
       for(int i=0;i<3;i++)
       {
           for(int j=0;j<3;j++)
           {
               if(b[i][j]!=0)
               {
                   sum++;
               }
           }
       }
       //判断
       if(sum==1)
       {
       for(int i=0;i<n;i++)
       {
           for(int j=0;j<n-1;j++)
           {
               cout<<a[i][j]<<" ";
           }
           cout<<a[i][n-1]<<endl;
       }
       }

       if(sum>1)
       {
        for(int i=0;i<n;i++)
       {
           for(int j=0;j<n-1;j++)
           {
               cout<<0<<" ";
           }
           cout<<0<<endl;
       }
       }
   }
}

收获:
1.打题一定要坚持到最后一秒,这个题就是我在最后几分钟之内AC的,打题很注重心态一定要在最后几分钟之中稳住坚持打题。
2.复杂的题要学会找到简单的技巧,要通过样例寻找答案,可以直接输出样例,但是这种情况十分少见,不到万不得已的时候尽量不要用,尽量还是寻找正确的解决方法
3.可以把大型数组定义在main()函数之外

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值