A1128 | 逻辑想象能力、简洁高效美观的代码、memset的使用情景

写了三遍才AC,这真是对智商极大的侮辱

C++代码:

#include <stdio.h>
#include <memory.h>
#include <math.h>
#include <string>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
#include <map>

#define I scanf
#define OL puts
#define O printf
#define F(a,b,c) for(a=b;a<c;a++)
#define FF(a,b) for(a=0;a<b;a++)
#define FG(a,b) for(a=b-1;a>=0;a--)
#define LEN 10000
#define MAX 0x06FFFFFF
#define V vector<int>

using namespace std;

int C[3][LEN];//col, diag1, diag2

int main(){
//    freopen("d:/input/A1128.txt","r",stdin);
    int i,n,m;
    scanf("%d",&n);
    while(n-->0){
        scanf("%d",&m);
        memset(C,0,sizeof(C));
        bool ok=1;
        F(i,1,m+1){
            int r=i;
            int c;
            scanf("%d",&c);
            int d1=r-c+m;
            int d2=c-r+m;
            if(!ok) continue;
            if(C[0][c] || C[1][d1] || C[2][d2]){
                ok=0;
            }else{
                C[0][c]=1;
                C[1][d1]=1;
                C[2][d2]=1;
            }
        }
        OL(ok ? "YES" : "NO");
    }
    return 0;
}



1.应快速思考出对角线的ID表达式

2.应写出简洁高效美观的代码,原来的代码感觉写的太愚蠢了,也没有通过最后一个case。然后我在网上看到这段代码(左):

被深深的震撼到了,居然可以写的这么简洁,并且用二维数组代替我原来写的四个数组。然后我删掉了花20分钟写的代码,用了5分钟重写了一遍(右)。

3.memset的使用情景:

memset只能赋值全是0(0x0……0),或者全是1(0xF……F),后者 反映在int上,就是用补码表示的-1。memset的方便之处在于他可以对高维数组进行初始赋值,并且速度相对较快。

4.sizeof的返回值

如果是已经分配好内存的静态数组,如int arr[LEN],sizeof(arr)的返回值就是4*LEN

如果是分配的堆,如int *arr=new int[LEN],sizeof(arr)的返回值就是4

原文地址:https://www.cnblogs.com/TQCAI/p/8167760.html

时间: 2024-11-05 13:04:04

A1128 | 逻辑想象能力、简洁高效美观的代码、memset的使用情景的相关文章

打造简洁高效的企业运行流程

市场萎缩.消费疲软.资金短缺--相信绝非一家企业的难题.如何破解市场困局,在实力相当.毅力相同的情况下,创新能力就成了取胜的关键.变革组织运行流程,实行流程重组,无疑是谋求企业发展的快捷方式之一.经济学家郎咸平教授2008年年底率先提出,国内企业要改变在全球产业链中6+1的地位,其中一项很重要的工作就是优化流程工序,提高产品附加值.郎教授惯于用通俗易懂的词句解释复杂的经济现象或管理理论.他曾用总结优化大厨制作"鱼香肉丝"的流程.提高饭店竞争力的例子,来说明流程优化对于企业发展的积极作用

Mockplus(摩客)- 简洁高效的原型图设计工具

Mockplus(摩客) 是一款简洁高效的在线原型图设计工具,很好的标题,基本说明了这篇文章的主要内容--! 原型设计是你对设计方案的一种直观的表达.也许你说,着跟你没啥关系.那我说个实际点的场景,小凡本人是做网站设计的,然后呢,各位卖家朋友向我表达他们对页面的设想的时候--方法各式各样,QQ 截图,Word,PPT,文本--最让我觉得难以面对的是 Excel,但是很多人喜欢用它,因为可以通过表格表达布局. 但是如果有一种只需要简单拖拽几个明确的图示加上文字就可以说的很清楚的方法,你还会又截图又

2015.1.15 利用Oracle函数插入表结构 Bulk collect into 不用循环,简洁高效

如果表结构只对应一个字段,可以 select col1 bulk collect into 变量,不用游标循环,简洁高效 create or replace function get_airway_subpoint(awid in number) return airway_subpnts_tab is --CREATE OR REPLACE TYPE AIRWAY_SUBPNTS_TAB  as table of number(11) v_ptns airway_subpnts_tab; --

jQuery --checkbox全选和取消全选简洁高效的解决办法

最近在公司做了一个小项目,其中有一个全选和取消全选的这么一个模块,搞了半天找不到一种最佳的解决方案!后来通过各种努力找到了一种简洁高效的解决办法,这里想和大家分享一下.有问题的话,还望各路大神指导一二. html代码如下: <fieldset data-role="controlgroup">  <label><input type="checkbox" name="boxes" id="select_al

编写高效的Android代码

为什么在这就意味着没有多少剩余空间给你去浪费了,因此,在你写Androi编写Android程序时要时刻考虑执行的效率,这些系统不是想象中的那么快,并且你还要考虑它电池的续航能力.写程序的时候,要尽可能的使你的代码优化而提高效率. 对于如何判断一个系统的不合理,这里有两个基本的原则: 1.不要做不必要做的事情. 2.尽可能的节省内存的使用. 下面是常用的几点优化建议: 1.尽可能避免创建对象(Object) 因为对象的创建并不是没有代价的,如果你在一个用户界面的循环中分配一个对象,你不得不强制的进

利用|,&amp;,^,~,&lt;&lt;,&gt;&gt;&gt;写出高效艺术的代码

简介: 大家在阅读源码的时候经常会看到一些比如下面这样特别难理解的代码. cancelEvent.setAction(MotionEvent.ACTION_CANCEL | (motionEvent.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT)); order = ((order) >> (INDEX_OFFSET -1) + 1) << INDEX_OFFSET; 类似与这种"高大上&

高效重构 C++ 代码

引言 Martin Fowler的<重构:改善既有代码的设计>一书从2003年问世至今已有十几年时间了,按照计算机领域日新月异的变化速度,重构已经算是一门陈旧的技术了.但是陈旧并不代表不重要,恰恰随着演进式设计被越来越广泛的使用,重构技术已经被认为是现代软件开发中的一项必备的基本技能!所以今天在任何软件开发团队中,你都会不时听到或看到和重构相关的代码活动.然而对于这样一种被认为应该是如同“软件开发中的空气和水”一样的技术,在现实中却比比皆见对重构的错误理解和应用.首先是不知道重构使用的正确场合

高效的CSS代码(2)

——阅读笔记,欢迎纠错^_^ 内容比较零散..... 1.让浮动元素的父容器根据元素的高度而自适应高度的方法: <div class="clearfix"><div class="fl"></div></div> /*意思就是最外面的一层<div></div>是父容器,给他加上清除浮动的功能,clearfix的代码再高效的CSS代码(1)中有*/ 2.再写代码前不是要先分析一下页面的模块吗,模块

我的女神——简洁实用的iOS代码调试框架

我的女神--简洁实用的iOS代码调试框架 一.引言 这篇博客的起源是接手了公司的一个已经完成的项目,来做代码优化,项目工程很大,并且引入了很多公司内部的SDK,要搞清楚公司内部的这套框架,的确不是件容易的事,并且由于这个项目是多人开发的,在调试阶段会打印出巨量的调试信息,使得浏览有用信息变的十分困难,更加恐怖的是,很多信息是SDK中的调试打印,将这些都进行注销是非常费劲甚至不可能的事,于是便有了这样一些需求:首先,我需要清楚了解各个controller之间的跳转关系,需要快速的弄清每个stroy