CF-928

排名四千多,目前为止排名最高的一场~

E题我赛时基本上是猜的结论(但是也推了快一小时才想到有这个可能性),因此目前只能放个码在这(⊙﹏⊙)

D的话问了学长思路,正在补了0-^-0

……但是上一场牛客打得特别烂(⊙﹏⊙),还是等我补了牛客的再更新吧-^-

B

分析

观察它的性质,答案为正方形时,所有出现1的行里,1的左右边界一定相等,且这个边界等于出现1的上下边界

操作

用l[]与r[]数组以出现1的行数为下标记录它的左右边界,同时用b与e记录出现1的上下边界,这些行里所有边界一定相等,因此之后再遍历b~e,若满足所有l等于r同时r-l等于e-b,则输出"SQUARE",否则输出"TRIANGLE"

其中左右上下边界的记录是难点,我这里用的是标记,使得左边界只更新一次,右边界一直更新

代码

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define db(x) cout<<x<<" "<<endl;
#define _db(a,n) for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
#define mem(a) memset(a,0, sizeof(a))
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define per(i,r,l) for(int i=r;i>=l;i--)
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t,n,x,cnt=0,ans=0;cin>>t;
while(t--){
cin>>n;
char a[11][11];
char op;int l[11],r[11];
int b,e,fff=0;
for(int i=1;i<=n;i++){
int f=0;
for(int j=1;j<=n;j++){
cin>>op;//a[i][j];
if(op=='1'){
r[i]=j;//只要出现1就更新右边界
if(f==0){
l[i]=j;//如果1在此行第一次出现,记录左边界
f=1;
}
}
}
//同理记录与更新上下边界
if(f){
e=i;
if(fff==0){
b=i;
fff=1;
}
}
}
int ff=1;
for(int i=b+1;i<=e;i++){
if(l[i]==l[i-1]&&r[i]==r[i-1]&&r[i]-l[i]==e-b) continue;
ff=0;
}
if(ff) cout<<"SQUARE";
else cout<<"TRIANGLE";
cout<<endl;
}
return 0;
}

C

分析

即求1~n的数位之和,同时要注意时间限制是0.5s,意味着我们需要将答案预处理

操作

我们可以遍历1~2e5,用tmp记录i的数位和,再用a数组记录数位和的前缀和,这样在查询时直接输出a[n]就行

代码

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define db(x) cout<<x<<" "<<endl;
#define _db(a,n) for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
#define mem(a) memset(a,0, sizeof(a))
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define per(i,r,l) for(int i=r;i>=l;i--)
const int N=2e5+5;
int a[N];
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t,n,x,cnt=0,ans=0;cin>>t;
string s;
//预处理
rep(i,1,2e5){
int res=0,tp=i;
while(tp){
res+=tp%10;
tp/=10;
}
a[i]=res+a[i-1];
}
while(t--){
cin>>n;
int sum=a[n];
cout<<sum<<endl;
}
return 0;
}

E

代码

赛时是边写边想,所以最后的注释代码巨长……这里是删了之后的

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define db(x) cout<<x<<" "<<endl;
#define _db(a,n) for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
#define mem(a) memset(a,0, sizeof(a))
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define per(i,r,l) for(int i=r;i>=l;i--)
int fp(int b,int p){
int res=1;
while(p){
if(p&1) res=res*b;
b=b*b;
p>>=1;
}
return res;
}
signed main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t,n,x,cnt=0,ans=0;cin>>t;
int k;
while(t--){
cin>>n>>k;
int o,e;
if(n&1){
o=n/2+1;
e=n-o;
}
else{
o=e=n/2;
}
if(k<=o){
cout<<k*2-1<<endl;
continue;
}
k-=o;
//这里就是公式部分了
for(int i=1;i<=32;i++){
int tp=(n/fp(2,i)+1)/2;
if(k<=tp){
cout<<(k*2-1)*fp(2,i)<<endl;
break;
}
k-=tp;
}
}
return 0;
}

CF-928(已更新:B C E)的更多相关文章

  1. 微信快速开发框架(九)-- V3.0发布,代码已更新至Github 新增微店功能

    版本内容 1.修正了缺少对Event.View的支持 2.增加了用户UnionID 3.新增微信小店功能 4.多客服功能 5.单元测试 什么是UnionID 我们知道,每个用户针对一个微信公众账号都有 ...

  2. 微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github

    4月28日,已增加多媒体上传及下载API,对应MediaUploadRequest和MediaGetRequest ------------------------------------------ ...

  3. 微信快速开发框架(七)--发送客服信息,版本更新至V2.2 代码已更新至github

    在V2版本发布的博文中,已经介绍了大多数Api的用法,同时也收到了很多意见,其中发布了几个修正版本,修改了几个bug,在此感谢大家的使用,有了大家的支持,相信快速开发框架会越来越好,也会越来越完善的. ...

  4. 目录 of 2013-2014-1(内容已更新结束)

    (内容已更新结束) UML部分: ---------------1.概述2.用例图3.类图4.顺序图 MVC部分: ----------------1.概述2.路由3.控制器4.视图5.模型6.安装部 ...

  5. intellij idea 13&14 插件推荐及快速上手建议 (已更新!)

    原文:intellij idea 13&14 插件推荐及快速上手建议 (已更新!) 早些年 在外企的时候,公司用的是intellij idea ,当时也是从eclipse.MyEclipse转 ...

  6. Asky极简教程:零基础1小时学编程,已更新前8节

    Asky极简架构 开源Asky极简架构.超轻量级.高并发.水平扩展.微服务架构 <Asky极简教程:零基础1小时学编程>开源教程 零基础入门,从零开始全程演示,如何开发一个大型互联网系统, ...

  7. 【sql server】"已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行" 解决方案

    #事故现场: 1.在手动修改某表中数据是,出现如下错误提示:  已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行 2.表结构及数据: #解决方法: 1.原因分析:提示被删除的行不是唯一行, ...

  8. SRM12 T2夏令营(分治优化DP+主席树 (已更新NKlogN)/ 线段树优化DP)

     先写出朴素的DP方程f[i][j]=f[k][j-1]+h[k+1][i] {k<i}(h表示[k+1,j]有几个不同的数)  显然时间空间复杂度都无法承受   仔细想想可以发现对于一个点 i ...

  9. 【干货】电路设计师指导手册(已更新完毕)(转载EDN)

    [干货]电路设计师指导手册(已更新完毕) 第一部分:接地与布线第二部分:电源返回路径与I/O信号接地第三部分:板间互连.星形接地及屏蔽第四部分:安全地以及电线/电缆第五部分:射频电缆.双绞线与串扰

  10. 激活windows10(已更新工具)

    激活windows10 1.用cmd命令: 自己动手,KMS激活win10 2016 长期服务版.步骤如下:命令提示符(管理员),依次输入以下3条命令 slmgr /ipk DCPHK-NFMTC-H ...

随机推荐

  1. 分享一个在线二维码生成器(基于qrcode.js开发)

    一种二维码扫描与生成的工具, 它可生成个性化二维码, 支持文本.网址.图片.短信.电话等格式及主题,提供融合码功能 演示地址 https://qrcode.gitapp.cn 关键代码 var qrc ...

  2. [转帖]六千字带你了解 Oracle 统计信息和执行计划

    https://cloud.tencent.com/developer/article/1616706 大家好,我是 JiekuXu,很高兴又和大家见面了,今天分享下 Oracle 统计信息和执行计划 ...

  3. [转帖]使用 TiUP 部署运维 TiDB 线上集群

    https://docs.pingcap.com/zh/tidb/stable/tiup-cluster 本文重在介绍如何使用 TiUP 的 cluster 组件,如果需要线上部署的完整步骤,可参考使 ...

  4. [转帖]/proc文件简介

    https://www.jianshu.com/p/2610241770be 简介 /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提 ...

  5. [转帖]【JVM】JDK命令行工具

    在JDK/bin目录下我发现了许多命令行工具 这些命令有哪些作用呢,接下来我就来详细介绍一下 常用JDK命令行工具 命令名称 全称 用途 jstat JVM Statistics Monitoring ...

  6. [转帖]Linux命令拾遗-%iowait指标代表了什么?

    https://www.cnblogs.com/codelogs/p/16060759.html 简介# 一直以来,我都知道top.vmstat.mpstat中有一个叫wa(%iowait)的cpu指 ...

  7. linux使用脚本给文件的最后一行不换行的方式插入一句话

    处理一下 sed -i '$s/$/&,xxxx.com/' /deploy/mailfailstart

  8. echarts去除坐标轴上的x和y轴

    通过 show:false控制手否显示 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  9. 压缩软件 WinRAR 去广告

    别去中国的那个代理网站下载 去国外的官网下载英文版或者湾湾版的, 这样用网上的rarreg.key文件方式就没有广告了, 不然中国的就是有广告. 这里是湾湾版的链接: https://pan.baid ...

  10. MeshFilter mesh vs sharedMesh

    MeshFilter有两个属性mesh和sharedMesh,从官方文档和实际使用来说说这两者的区别 MeshFilter文档 Unity的MeshFilter文档:https://docs.unit ...