A. Remove Smallest

题意:数组是否满足任意i,j保证|ai-aj|<=1,如果都可以满足,输出YES,否则输出NO

思路:直接排序遍历即可

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstring>
4 #include<cstdio>
5 #include<cmath>
6 #include<queue>
7 #include<vector>
8 #include<set>
9 using namespace std;
10 int main(){
11 int t;
12 scanf("%d",&t);
13 while(t--){
14 int n;
15 scanf("%d",&n);
16 int a[100];
17 for(int i=0;i<n;i++){
18 scanf("%d",&a[i]);
19 }
20 sort(a,a+n);
21 int flag=0;
22 for(int i=1;i<n;i++){
23 if(a[i]-a[i-1]>1){
24 flag=1;
25 break;
26 }
27 }
28 if(flag==0){
29 printf("YES\n");
30 }else{
31 printf("NO\n");
32 }
33 }
34 }

B. Gifts Fixing

题意:两组数a[i],b[i],你可以对两组数的数字进行如下操作:1.加减1;2.同一位置的数一起加减1,则使得a1=a2=a3....=an,并且b1=b2=b3.....=bn,那么需要最少进行多少步

思路:先找出两组数中每组里面最小的那个数,每次循环进行比较a[i]与a[min],再找到a[i]和b[i]最大的那个数,直接算其和

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstring>
4 #include<cstdio>
5 #include<cmath>
6 #include<queue>
7 #include<vector>
8 #include<set>
9
10 using namespace std;
11 pair<int,int> a[100];
12 int main(){
13 int t;
14 scanf("%d",&t);
15 while(t--){
16 int n;
17 scanf("%d",&n);
18 long long int sum=0;
19 int minn1=1e9,minn2=1e9;
20 for(int i=0;i<n;i++){
21 scanf("%d",&a[i].first);
22 minn1=min(minn1,a[i].first);
23 }
24 for(int i=0;i<n;i++){
25 scanf("%d",&a[i].second);
26 minn2=min(minn2,a[i].second);
27 }
28 sort(a,a+n);
29 for(int i=0;i<n;i++){
30 sum+=max(a[i].second-minn2,a[i].first-minn1);
31 }
32 printf("%lld\n",sum);
33 }
34 }

C. Boats Competition

题意:一组数从中抽取两个数,保证a[1]+b[1]=a[2]+b[2]……=a[k]+b[k],一共最多可以抽取多少组

思路:直接进行统计,抽取的两个数只有两种情况,一种是等差中项是整数的,例如1.2.3;一种是等差中项不是整数的,例如1.2.3.4;直接存储其数值个数,进行循环比较最多,一定注意是取两个数的最小值,不是平均值,并且遍历的时候要从第一个for循环的i入手往前走,不要从1开始走

代码:

 1 #include<iostream>
2 #include<algorithm>
3 #include<cstring>
4 #include<cstdio>
5 #include<cmath>
6 #include<queue>
7 #include<vector>
8 #include<set>
9 using namespace std;
10
11 int main(){
12 int t;
13 scanf("%d",&t);
14 while(t--){
15 int n;
16 scanf("%d",&n);
17 int a[60][2]={0};
18 int numl;
19
20 for(int i=1;i<=60;i++){
21 a[i][0]=i;
22 }
23 for(int i=1;i<=n;i++){
24 scanf("%d",&numl);
25 a[numl][1]++;
26 }
27 int sum=0,num=0;
28 for(int i=1;i<=n;i++){
29 num=0;
30 num+=a[i][1]/2;
31 for(int j=i-1;j>=1&&2*i-j<=n&&2*i-j>i;j--){
32 if(a[2*i-j][1]==0||a[j][1]==0){
33 continue;
34 }else{
35 num+=min(a[j][1],a[2*i-j][1]);
36 }
37 }
38 sum=max(num,sum);
39 }
40 for(int i=1;i<=n;i++){
41 num=0;
42 if(a[i][1]==0||a[i+1][1]==0){
43
44 }else{
45 num+=min(a[i][1],a[i+1][1]);
46 }
47 for(int j=i-1;j>=1&&2*i+1-j<=n&&2*i+1-j>i+1;j--){
48 if(a[j][1]==0||a[2*i+1-j][1]==0){
49 continue;
50 }else{
51 num+=min(a[j][1],a[2*i+1-j][1]);
52
53 }
54 }
55 sum=max(num,sum);
56 }
57 if(n==2){
58 printf("1\n");
59 continue;
60 }else{
61 printf("%d\n",sum);
62 }
63
64 }
65 }

Codeforces Round #661 (Div. 3)的更多相关文章

  1. Codeforces Round #661 (Div. 3) D、E1 题解

    D. Binary String To Subsequences #贪心 #构造 题目链接 题意 给定一个\(01\)串\(s\),完全分割成若干子序列(注意,不要混淆子串与子序列的概念),其中的子序 ...

  2. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  3. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  4. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  5. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  6. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  7. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  8. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  9. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

随机推荐

  1. 十分钟学会Scratch图形化编程

    一.概要 Scratch是麻省理工学院开发的供儿童或者初学者学习编程的开发平台.其通过点击并拖拽的方式,完成编程,可以使儿童或者成人编程初学者学习编程基础概念等.Scratch是一款积木式图形编程软件 ...

  2. C#无边框窗体拖动代码

    1.重写 protected override void WndProc(ref Message m) { if (m.Msg == 163 && this.ClientRectang ...

  3. Linux 切换用户提示Permission denied

    在使用 su - hdfs 切换到 hdfs 用户时提示 su: Permission denied,但是密码确认是没错的. 找到文件 /etc/pam.d/su,注释掉 auth required ...

  4. Linux入门视频笔记一(基本命令)

    一.简单命令 1.date:当前时间 2.cal:当前日期(日历格式) ①cal 2019:2019年全年日历 ②cal 1 2019:2019年1月份 二.Linux文件结构 1.根目录:root( ...

  5. js【生成规定数量不重复随机数】、【冒泡排序】、【鸡尾酒排序】、【选择排序】、【插入排序】、【未完工的二分插入排序】------【总结】

    [生成规定数量不重复随机数] function creatRandom( num ){ var randomLen = num, ranArr = [], thisRan = null, whileO ...

  6. Git本地操作2

    code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...

  7. ABP 适用性改造 - 精简 ABP CLI 生成的项目结构

    Overview 不管是公司或者个人都会有不同的开发习惯,通过建立项目模板,既可以使开发人员聚焦于业务功能的开发,也可以在一定程度上统一不同开发人员之间的开发风格.在使用 ABP 框架的过程中,对于 ...

  8. Python简单实现杨辉三角

    n=input("请输入要打印的行数")n=int(n)for x in range(0,n+1): p=1 print(''.rjust(n-x),end="" ...

  9. OOUnit2Summary

    一.前三次作业内容分析 前言 第二单元的作业以多线程为主题,以电梯调度为背景,分三次要求逐步增加,难度逐步提高.这三次作业,更新了我对于面向对象编程的认知,也进一步提高了我编程和调试的能力. 一下是我 ...

  10. 通过Dapr实现一个简单的基于.net的微服务电商系统

    本来想在Dpar 1.0GA时发布这篇文章,由于其他事情耽搁了放到现在.时下微服务和云原生技术如何如荼,微软也不甘示弱的和阿里一起适时推出了Dapr(https://dapr.io/),园子里关于da ...