当前位置: 首页 > news >正文

CSU-ACM2018寒假集训选拔-入门题

【题目链接】:http://vj.bit-studio.cn/contest/205664#overview

A:

【给你一个长度为n的序列,尾部插入再反转,求n次后最终序列】【规律/思维】

【分析】:STL-deque会超时,只能找规律。

【代码】:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5+7;
int a[maxn],ans[maxn];
int n;
int main()
{
   scanf("%d",&n);
   for(int i=1;i<=n;i++){
    scanf("%d",&a[i]);
   }
   int l=1,r=n,k=n,cnt=1;
   for(int i=n;i>=1;i--){
        if(cnt&1)
            ans[l++]=a[k--];
        else
            ans[r--]=a[k--];
        cnt++;
   }
   for(int i=1;i<=n-1;i++)
    printf("%d ",ans[i]);
   printf("%d\n",ans[n]);
}
/*
1 2 3 4
4 2 1 3

0   6  7  6 7 0
n-2 3 n-1 2 n 1
↓
0 6 6 0 7 7
*/
规律

 

B:

【将长度为n的序列分为两部分,满足这两部分差值的绝对值最小】【前缀和】

【分析】:求出前缀和,然后打擂台求某部分前缀和sum[i]和n-sum[i]的差值abs最小值,注意防爆int。

【代码】:

#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int maxn = 2e5+100;
LL a[maxn],sum[maxn],tot;
LL Min = 1000000000000000000LL;
int n;
int main()
{
   scanf("%d",&n);
   for(int i=1;i<=n;i++){
    scanf("%lld",&a[i]);
    sum[i]=sum[i-1]+a[i];
    tot+=a[i];
   }
   for(int i=1;i<n;i++){
    Min=min(Min,abs(2*sum[i]-tot));
   }
   printf("%lld\n",Min);
}
前缀和

 

C:

【判断重排后的序列是否能够相邻元素乘积为4的倍数】【规律/思维】

【分析】:分成4的倍数,2的倍数,奇数。只要奇数和4的倍数可以交叉相邻即可。

【代码】:

#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int maxn = 2e5+100;
int a[maxn],cnt1,cnt2,cnt4;
int n;
int main()
{
   scanf("%d",&n);
   for(int i=1;i<=n;i++){
    scanf("%d",&a[i]);
    if(a[i]%4==0) cnt4++;
    else if(a[i]%2==0) cnt2++;
    else cnt1++;
   }
   if(cnt1>cnt4+1 || (cnt2 && (cnt1==cnt4+1)))
    puts("No");
   else puts("Yes");

}
规律

 

D:

【类似蛇形填数】【模拟】

【代码】:

 

E:

【区间相交长度】【贪心】

【分析】:选取b/d较小-a/c较大,不小于0输出,否则说明不相交输出0

【代码】:

#include <bits/stdc++.h>

using namespace std;

#define MP make_pair
#define PB push_back
typedef long long LL;
typedef pair<int,int> PII;
const double eps=1e-8;
const double pi=acos(-1.0);
const int K=1e6+7;
const int mod=1e9+7;

int a,b,c,d;
LL ans;
int main()
{
    cin>>a>>b>>c>>d;
    ans=min(b,d)-max(a,c);
    if(ans<0) ans=0;
    cout<<ans<<'\n';
    return 0;
}
贪心

 

转载于:https://www.cnblogs.com/Roni-i/p/8135068.html

相关文章:

  • 云数据库 Redis 版功能特性
  • bootstrap和elementUI真的会冲突
  • LeetCode:26. Remove Duplicates from Sorted Array(Easy)
  • jvm 内存分配
  • 从Storm和Spark 学习流式实时分布式计算的设计
  • Nginx + Tomcat + HTTPS 配置原来不需要在 Tomcat 上启用 SSL 支持
  • 应用多级缓存模式支撑海量读服务
  • iOS 兼容多个有crash 收集机制的SDK
  • 37.3. HQL
  • 详细解析漏洞4个boom
  • HSRP、VRRP、ACL
  • 407. 加一
  • NoClassDefFoundError
  • 压缩打包介绍 gzip压缩工具 bzip2压缩工具
  • 数组注意事项
  • android 一些 utils
  • css布局,左右固定中间自适应实现
  • express + mock 让前后台并行开发
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JS实现简单的MVC模式开发小游戏
  • Linux gpio口使用方法
  • Linux中的硬链接与软链接
  • Service Worker
  • unity如何实现一个固定宽度的orthagraphic相机
  • 关于Flux,Vuex,Redux的思考
  • 关于List、List?、ListObject的区别
  • 猴子数据域名防封接口降低小说被封的风险
  • 聊聊hikari连接池的leakDetectionThreshold
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端面试之CSS3新特性
  • 手写一个CommonJS打包工具(一)
  • 算法-图和图算法
  • 推荐一个React的管理后台框架
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 栈实现走出迷宫(C++)
  • Python 之网络式编程
  • 国内开源镜像站点
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • #{}和${}的区别?
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (3)nginx 配置(nginx.conf)
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (学习日记)2024.01.19
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ******之网络***——物理***
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?