这次比上次多A了一道,但做得太慢,rating还是降了。

Problem A Choose Two Numbers

题意:给出两个集合A,B,从A,B中分别选出元素a,b使得a+b既不属于集合A,又不属于集合B

数据范围:1<=集合A,B的大小<=100 1<=a,b<=200

我的做法是直接模拟就好了,复杂度:O(nm(n+m))

题解的做法是分别取集合A,集合B中的最大值a,b就可以了,显然此时的a+b既不属于A,也不属于B

#include <iostream>
#include <cstdio>
using namespace std;
int n,m;
int a[210],b[210];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
scanf("%d",&m);
for(int j=1;j<=m;j++)scanf("%d",&b[j]);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int x=a[i]+b[j];
int pd1=0,pd2=0;
for(int ii=1;ii<=n;ii++)
{
if(x==a[ii])
{
pd1=1;break;
}
}
if(pd1==1)continue;
for(int jj=1;jj<=m;jj++)
{
if(x==b[jj])
{
pd2=1;break;
}
}
if(!pd1&&!pd2)
{
printf("%d %d\n",a[i],b[j]);return 0;
}
}
}
return 0;
}

Problem B Make Product Equal One

给出n个数a1,a2,...,an,你可以用一点花费使得a[i]加一或减一,求最小的花费使得a1 *a2 *a3 *... *an=1。

数据范围:1<=n<=1e5 -1e9<=a[i]<=1e9

贪心,从1枚举到n,如果一个数为正,把它变为1,如果为负,变为0,同时记录负数的个数,如果为0,则花费加1,这个0因为可以变成1也可以变成-1,所以可以用来调节正负(只需要一个0就可以调节正负) 统计完以后,如果0的个数为0(即不能调节正负),且负数的个数为奇数,则答案+=2

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int n;
int main()
{
int tot1=0;
scanf("%d",&n);
long long ans=0;
int tot2=0;
for(int i=1;i<=n;i++)
{
int x;scanf("%d",&x);
if(x<0)
{ans+=-1-x;tot1++;}
else
{
if(x==0){tot2++;ans+=1;}
else{ans+=x-1;}
}
}
if(tot1%2==1&&tot2==0)ans+=2;
cout<<ans;
return 0;
}

Problem C Almost Equal

题意:给出一个数字n,由1,2,3,...,2*n按一定顺序组成一个圆环,求出一种顺序使得以下成立:将圆环上的每n个连续数字累加起来得到一个和,将这个和写在黑板上,写完2n个和以后,使得黑板上任意两个和的差小于等于1。

举例:

当n=3的情况:

在左图中,1+4+5=10,4+5+2=11,5+2+3=10,2+3+6=11,3+6+1=10,6+1+4=11

|11-10|<=1,满足题意。

在右图中,1+5+6=12,3+2+4=9, |12-9|>=3,不满足题意

输入:一个正整数n,(1<=n<=100000)

输出:如果没有解决方案,输出“NO”

        如果有解决方案,输出“YES”,下一行输出2n个正整数,表示满足题意的任意一种顺序

构造题,这道题一开始我毫无思路,再后来观察发现了一个性质,第i个数和第i+n个数的差一定小于等于1,

然后我用爆搜打了个表找规律

1: YES 1 2

2: NO

3: YES 1 4 5 2 3 6

4: NO

5: YES 1 4 5 8 9 2 3 6 7 10

6: NO

7: YES 1 4 5 8 9 12 13 2 3 6 7 10 11 14

然后规律就很明显了:

偶数输出NO

一个简单的证明是:

2n个数字的和为n*(2n+1),如果n为偶数,那么和为偶数,能够被分成两个相等的和x

又因为第i个数和第i+n个数的差一定为1,则必定存在x+1和x-1两种和

奇数输出YES,并且奇数的排列可以从上一个奇数转化过来

比如 3:1 4 5 2 3 6

由第i个数和第i+n个数的差一定小于等于1

那么我们把3这个式子转化一下:0 1 0 1 0 1

5就是:0 1 0 1 0 1 0 1 0 1

所以就很容易构造出答案了,时间复杂度:O(n*2)

for(int i=1;i<=n;i++)//输出前n个数
{
if(i%2==1)//i是奇数
{
printf("%d ",i*2-1);
}
if(i%2==0)//i是偶数
{
printf("%d ",i*2);
}
}
for(int i=1;i<=n;i++)//输出第n+1到第2*n个数
{
if(i%2==1)
{
printf("%d ",i*2);
}
if(i%2==0)
{
printf("%d ",i*2-1);
}
}

Codeforces Round #580 (Div. 2)的更多相关文章

  1. Codeforces Round #580 (Div. 1)

    Codeforces Round #580 (Div. 1) https://codeforces.com/contest/1205 A. Almost Equal 随便构造一下吧...太水了不说了, ...

  2. Codeforces Round #580 (Div. 1) A-E

    Contest Page A Tag:构造 将$a_i$看做一个无穷数列,$i > 2n$时$a_i = a_{i - 2n}$.设$sgn_i = \sum\limits_{j=i+1}^{i ...

  3. Codeforces Round #580 (Div. 2)D(思维,Floyd暴力最小环)

    #define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;const int maxn=300;cons ...

  4. Codeforces Round #580 (Div. 2)-D. Shortest Cycle(思维建图+dfs找最小环)

    You are given nn integer numbers a1,a2,…,ana1,a2,…,an. Consider graph on nn nodes, in which nodes ii ...

  5. 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 ...

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

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

  7. Codeforces Round #368 (Div. 2)

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

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

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

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

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

随机推荐

  1. Two progressions(CodeForces-125D)【鸽巢原理】

    题意:将一列数划分为两个等差数列. 思路:首先,我要吹爆鸽巢原理!!!真的很强大的东西!!! 加入能完成题设操作,则前三个数中,必有至少两个数在同一序列,枚举三种情况(a1 a2,a2 a3,a1 a ...

  2. 前端模拟数据接口json-server

    今天要找帮前端找一个可以实现数据接口模拟的工具.首先看到的mock.js这个.但是这个需要在页面里插入Mock.js我是要给小程序使用,所以不能这么插入.然后又找到了json-server这个Node ...

  3. Python何时执行装饰器

    装饰器的一个关键特性是,它们在被装饰的函数定义之后立即运行.这 通常是在导入时(即 Python 加载模块时),如示例 7-2 中的 registration.py 模块所示. 示例 7-2 regi ...

  4. 图数据库-Neo4j-常用算法

    本次主要学习图数据库中常用到的一些算法,以及如何在Neo4j中调用,所以这一篇偏实战,每个算法的原理就简单的提一下. 1. 图数据库中常用的算法 PathFinding & Search 一般 ...

  5. 1.DOS常用命令

    d:+ 回车:盘符切换,进入D:盘 dir(directory):列出当前目录下的文件及文件夹md(make director):创建目录rd(remove director):删除目录(不能删除非空 ...

  6. 用表格制作商品购买页面--(table)

    实现效果如图: 首先来看布局,头部图片,内容从左到右分为四个部分   勾选+商品图片+商品名/买家+价格, 所以需要将头部用<td>包括起来,并且设置<td colspan=&quo ...

  7. SpringCloud多网卡配置(转)

    https://blog.csdn.net/lixiang987654321/article/details/88134324 docker部署过程中遇到如下问题: (1)docker容器创建之后,进 ...

  8. 安卓SharedPreferences类的使用

    package com.lidaochen.phonecall; import android.content.Intent; import android.content.SharedPrefere ...

  9. 工作总结 页面 ActionResult / JsonResult 将对象以 Json() 返回

    其实都不用在页面上序列化   打印 都不需要在页面上 像这样  var ajaxResult = eval("(" + data + ")");  序列化为对象 ...

  10. 2.6. 案例:使用BeautifuSoup4的爬虫

    案例:使用BeautifuSoup4的爬虫 我们以腾讯社招页面来做演示:http://hr.tencent.com/position.php?&start=10#a 使用BeautifuSou ...