Codeforces Round #264 (Div. 2) C Gargari and Bishops 【暴力】

Codeforces Round #264 (Div. 2) C Gargari and Bishops 【暴力】

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

称号:

意甲冠军:给定一个矩阵,每格我们有一个数,然后把两个大象,我希望能够吃的对角线上的所有数字。我问两个最大的大象可以吃值。

分析:这种想法是暴力的主题,计算出每一格放象的话能得到多少钱,然后求出两个不冲突的最大值。我比赛的时候写的方法是先求出每个值,编号之后存到数组里面,然后在通过一系列处理得到,总之非常麻烦。写了一个多小时。最后才发现有一点小错误,没时间了。初始例子也没有通过。

然后看了下别人写的,太简洁了。直接用行和列和和差就能够直接求出来。看来代码能力还很有待提高啊。

我的AC代码:

#include <cstdio>
#include <iostream>
#include <queue>
#include <cstring>
#include <algorithm>
#include <stack>
#include <vector>
#include <utility>
#include <cmath>
using namespace std;

const long long N = 2200;
long long mp[N][N],num[N][N];
vector<long long> sum1,sum2;
long long n;
int main()
{
    //freopen("Input.txt","r",stdin);
    while(~scanf("%lld",&n))
    {
        for(long long i=1; i<=n; i++)
        {
            for(long long j=1; j<=n; j++)
                scanf("%lld",&mp[i][j]);
        }
        for(long long i=n; i>=1; i--)
        {
            long long tmp=0;
            for(long long x=1,y=i; x<=n; x++,y++)
            {
                tmp+=mp[x][y];
            }
            sum1.push_back(tmp);
        }
        for(long long i=2; i<=n; i++)
        {
            long long tmp=0;
            for(long long x=i,y=1; x<=n; x++,y++)
                tmp+=mp[x][y];
            sum1.push_back(tmp);
        }

        for(long long i=1; i<=n; i++)
        {
            long long tmp=0;
            for(long long x=i,y=1; x>=1; x--,y++)
            {
                tmp+=mp[x][y];
            }
            sum2.push_back(tmp);
        }
        for(long long i=2; i<=n; i++)
        {
            long long tmp=0;
            for(long long x=n,y=i; y<=n; x--,y++)
                tmp+=mp[x][y];
            sum2.push_back(tmp);
        }
        memset(num,0,sizeof(num));
        long long fx=1,fy=n;
        for(long long i=1;i<=n;i++)
        {
            long long xx=fx,yy=fy;
            for(long long j=1;j<=n;j++)
            {
                num[i][j]=sum2[xx-1]+sum1[yy-1]-mp[i][j];
                xx++,yy--;
                //printf("%lld ",num[i][j]);
            }
            fx++,fy++;
        }
        long long ans[3]={-1,-1};
        long long x[3],y[3];
        for(long long i=1;i<=n;i++)
        {
            for(long long j=1;j<=n;j++)
            {
                long long p=(i+j)%2;
                if(num[i][j]>ans[p])
                {
                    ans[p]=num[i][j];
                    x[p]=i,y[p]=j;
                }
            }
        }
        printf("%lld\n",ans[0]+ans[1]);
        printf("%lld %lld %lld %lld\n",x[0],y[0],x[1],y[1]);
        sum1.clear(),sum2.clear();
    }
    return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116787.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 直接sql 添加字段赋值

    直接sql 添加字段赋值SELECTuf.fans_idasfansId,u.`nickname`asnickname,u.`head`ashead,uf.`create_time`ascreateTime,1astypeFROM`user_fans`ufLEFTJOIN`user`uONuf.fans_id=u.idWHEREuf.`u…

    2022年10月25日
  • oracle提示未明确定义列_oracle数据库免费吗

    oracle提示未明确定义列_oracle数据库免费吗这种情况出现的原因一般是列名重复。数据库中创建如下表进行测试:createtableqq_test(aintPRIMARYkey,bvarchar2(32))首先执行:selecta,b,afromqq_test;执行结果如下:再执行:select*from(selecta,b,afromqq_test);执行结果如下:去掉重复的列名,或者用别名代替既可,如:select*from(select…

    2022年10月4日
  • unity3D 编辑器扩展,MenuItem 和 ContextMenu 的使用方法[通俗易懂]

    unity3D 编辑器扩展,MenuItem 和 ContextMenu 的使用方法[通俗易懂]官方也有一个文章,举了MenuItem类的一些使用方法。我是传送门,点我首先是unity顶部菜单栏的一些用法,如图:注意:MenuItem是编辑器类,所以技能导入usingUnityEditor;命名空间,且一般我们的类也不是集成自MonoBehaviour的,而是集成ScriptableObject的。最普通的MenuItem调用:[MenuItem(“MenuItem/普通…

    2022年10月29日
  • html中table美化,漂亮的css table样式「建议收藏」

    html中table美化,漂亮的css table样式「建议收藏」工作中发邮件通知人员样式总是一个麻烦事,工作的严肃性不能让邮件样式太花哨,但是又不能太简陋,所以找了下面的table样式和大家分享。效果如下图所示:漂亮CSSTables-幸凡学习网body{font:normal11pxauto”TrebuchetMS”,Verdana,Arial,Helvetica,sans-serif;color:#4f6b72;backgroun…

    2022年9月20日
  • Android定时器Timer简单使用「建议收藏」

    Android定时器Timer简单使用「建议收藏」Android定时器Timer简单使用Timer简介Timer使用总结Timer简介Timer(计时器)位于java.util包下,可用于创建定时任务,任务可以安排为一次性执行,也可以定期重复执行。每个计时器对象对应一个后台线程(TimerThread)。简单理解为创建Timer对象,对应TimerThread线程循环开始从TaskQueue队列中执行一个TimerTask任务。Timer使用创建Timer对象vartimer=Timer()添加需要执行的任务//创建计

    2022年7月25日
  • js 字符串截取(包含中英文)

    js 字符串截取(包含中英文)有一个项目中需要兼容ie6,在使用ztree中很难修改符合ie下面的字符截取样式,于是使用js方法来截取,字符串截取推荐使用: //截取字符串包含中文处理     //(串,长度,增加…)     functionsubString(str,len,hasDot){      varnewLength=0;    

    2022年6月6日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号