题目链接:Distance and Axis

题意:在ox轴上,给出点A的横坐标x,你可以向左或右移动点A(x+1/x-1),问你最小移动A的次数,以使得可以在ox轴上找到B点位置,B点满足从O到B的距离与从A到B的距离之间的绝对差等于k。

题解:

先特判下:

if(k==0)
{
if(n%2)
printf("1\n");
else printf("0\n");
}
else if(k>=n)
{
printf("%d\n",k-n);
}

对于A点坐标x,最终要移动到哪里,x满足x=2*min(OB,AB)+k

那么枚举OB长度就行,找到距离x点最近那个点就行

为什么不枚举AB,因为枚举它们两个谁,代码都一样

代码:

 1 #include<stack>
2 #include<queue>
3 #include<map>
4 #include<cstdio>
5 #include<cstring>
6 #include<iostream>
7 #include<algorithm>
8 #include<vector>
9 #define fi first
10 #define se second
11 #define pb push_back
12 using namespace std;
13 typedef long long ll;
14 const int maxn=2000+10;
15 const int mod=1e9+7;
16 const double eps=1e-8;
17 const int INF = 0x3f3f3f3f;
18 int main()
19 {
20 int t;
21 scanf("%d",&t);
22 while(t--)
23 {
24 int n,k;
25 scanf("%d%d",&n,&k);
26 if(k==0)
27 {
28 if(n%2)
29 printf("1\n");
30 else printf("0\n");
31 }
32 else if(k>=n)
33 {
34 printf("%d\n",k-n);
35 }
36 else
37 { //k+2min(OB,AB)
38 int l=0,r=n,mid,minn=INF;
39 while(l<=r)
40 {
41 mid=(l+r)>>1;
42 int ans=mid*2+k;
43 if(ans>n)
44 {
45 r=mid-1;
46 minn=min(minn,ans-n);
47 }
48 else
49 {
50 l=mid+1;
51 minn=min(minn,n-ans);
52 }
53 }
54 printf("%d\n",minn);
55 }
56 }
57 return 0;
58 }

题目链接:Ternary Sequence

题意:

你有两个序列a,b。序列是由0,1,2构成。给你x1,y1,z1表示a序列中0,1,2的数量,给你x2,y2,z2表示b序列中0,1,2的数量,

如果你构造的a,b序列中,ai==bi,那么结果+0,如果ai>bi,结果加ai*bi。如果ai<bi,结果减ai*bi

让你输出最大结果

题解:

结果想尽可能大,那就先让z1的2和y2的1结合,那么结果这个时候为2*min(z1,y2)

然后如果结果变小,肯定是z2的2和y1的1结合了,那么我们先让z2和x1结合,再和进行完上面操作的z2结合,最后结果减去剩余的z2*2

代码:

 1 #include<stack>
2 #include<queue>
3 #include<map>
4 #include<cstdio>
5 #include<cstring>
6 #include<iostream>
7 #include<algorithm>
8 #include<vector>
9 #define fi first
10 #define se second
11 #define pb push_back
12 using namespace std;
13 typedef long long ll;
14 const int maxn=2000+10;
15 const int mod=1e9+7;
16 const double eps=1e-8;
17 const int INF = 0x3f3f3f3f;
18 int main()
19 {
20 int t;
21 scanf("%d",&t);
22 while(t--)
23 {
24 int x1,x2,y1,y2,z1,z2;
25 scanf("%d%d%d",&x1,&y1,&z1);
26 scanf("%d%d%d",&x2,&y2,&z2);
27 int sum=0,ans=min(z1,y2);
28 z1-=ans;
29 y2-=ans;
30 sum=sum+ans*2;
31
32 ans=min(x1,z2);
33 x1-=ans;
34 z2-=ans;
35
36 if(z2)
37 {
38 ans=min(z1,z2);
39 z1-=ans;
40 z2-=ans;
41 if(z2)
42 {
43 sum=sum-z2*2;
44 }
45 }
46 printf("%d\n",sum);
47 }
48 return 0;
49 }

题目链接:Mere Array

题意:

给你一个序列,如果gcd(ai,aj)==序列中的最小值,那么ai和aj可以交换,问你最后能不能把原序列变成一个非递减序列

题解:

我们设序列最小值为minn,我们把可以被minn整除的数找出来,那么剩下数的位置是不能改变的

这个时候我们对原序列sort从小到大排序,判断一下我们要构成的最终序列中,那么不能被minn整除的数的位置改变了没有

如果改变了,那就输出NO,否则YES

毕竟对于可以被minn整除的数来说,它们的位置总是可以通过minn来达到间接互换

代码:

 1 #include<stack>
2 #include<queue>
3 #include<map>
4 #include<cstdio>
5 #include<cstring>
6 #include<iostream>
7 #include<algorithm>
8 #include<vector>
9 #define fi first
10 #define se second
11 #define pb push_back
12 using namespace std;
13 typedef long long ll;
14 const int maxn=1e5+10;
15 const int mod=1e9+7;
16 const double eps=1e-8;
17 const int INF = 0x3f3f3f3f;
18 ll v[maxn],w[maxn];
19 int main()
20 {
21 ll t;
22 scanf("%lld",&t);
23 while(t--)
24 {
25 ll n,minn=INF,flag=0;
26 scanf("%lld",&n);
27 for(ll i=1;i<=n;++i)
28 scanf("%lld",&v[i]),w[i]=v[i],minn=min(minn,v[i]);
29 sort(v+1,v+1+n);
30 ll last=0;
31 for(ll i=1;i<=n;++i)
32 {
33 if(v[i]%minn==0) continue;
34 if(v[i]%minn && v[i]==w[i] && last<=w[i]) last=w[i];
35 else
36 {
37 flag=1;
38 break;
39 }
40 }
41 if(flag) printf("NO\n");
42 else printf("YES\n");
43 }
44 return 0;
45 }

Codeforces Round #665 (Div. 2) Distance and Axis、的更多相关文章

  1. Codeforces Round #665 (Div. 2)

     Codeforces Round #665 (Div. 2)  A. Distance and Axis 如果\(B\)在\(O\)左边,那么只能是定值\(OA\) 如果\(B\)在\(OA\)中间 ...

  2. Codeforces Round #665 (Div. 2) 题解

    Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...

  3. Codeforces Round #433 (Div. 2)【A、B、C、D题】

    题目链接:Codeforces Round #433 (Div. 2) codeforces 854 A. Fraction[水] 题意:已知分子与分母的和,求分子小于分母的 最大的最简分数. #in ...

  4. Codeforces Round #665 (Div. 2)A-C题解

    A. Distance and Axis 题目:http://codeforces.com/contest/1401/problem/A 题解:对于n来说分两种情况,一是奇数,二则是偶数 ①奇数:对于 ...

  5. Codeforces Round #665 (Div. 2) D. Maximum Distributed Tree 题解(贪心+易错)

    题目链接 题目大意 给你一课树,要你给每一条边分权值,每条边的权值大于0,他们的乘积等于k,而且要使得n-1条边1的数量尽可能少,定义 f(u,v)为u到v的边权和求 \(\max \sum_{i=1 ...

  6. Codeforces Round #665 (Div. 2) D - Maximum Distributed Tree dfs贡献记录

    题意: t组输入,每组数据中n个节点构成一棵树,然后给你n-1条边.给你一个m,然后给你m个k的素数因子,你需要给这n-1条边都赋一个权值,这n-1条边的权值之积应该等于k.如果k的素数因子数量小于n ...

  7. Codeforces Round #665 (Div. 2) D. Maximum Distributed Tree (dfs计数,树)

    题意:给你含有\(n\)个节点,\(n-1\)条边的树,以及\(m\)个质数和\(1\),你需要在这\(m\)个质数和一个\(1\)选择数(质数只能选一次,\(1\)可以多选)给\(n-1\)条边赋值 ...

  8. Codeforces Round #579 (Div. 3) B Equal Rectangles、C. Common Divisors

    B Equal Rectangles 题意: 给你4*n个数,让你判断能不能用这个4*n个数为边凑成n个矩形,使的每个矩形面积相等 题解: 原本是想着用二分来找出来那个最终的面积,但是仔细想一想,那个 ...

  9. Codeforces Round #651 (Div. 2) A Maximum GCD、B GCD Compression、C Number Game、D Odd-Even Subsequence

    A. Maximum GCD 题意: t组输入,然后输入一个n,让你在区间[1,n]之间找出来两个不相等的数a,b.求出来gcd(a,b)(也就是a,b最大公约数).让你求出来最大的gcd(a,b)是 ...

随机推荐

  1. Flutter 布局类组件:层叠布局(Stack和Positioned)

    前言 层叠布局,即子组件可以根据距父容器四个角的位置来确定自身的位置.绝对定位运行子组件堆叠起来,即按照代码中声明的顺序. Flutter中使用Stack和Positioned这两个组件来配合实现绝对 ...

  2. SpringMVC文件的上传与下载实现

    单文件上传 首先创建项目,开发工具是IDEA,选择Spring项目,勾选上Spring和SpringMVC. 然后命名,最后完成. 默认生成配置文件在web/WEB-INF下. 首先导入需要的jar包 ...

  3. 在MongoDB中执行查询与创建索引

    实验目的: (1)掌握MongoDB中数据查询的方法: (2)掌握MongoDB中索引及其创建: 实验内容: 一. MongoDB中数据查询的方法: (1)find函数的使用: (2)条件操作符: a ...

  4. SonarQube学习(六)- SonarQube之扫描报告解析

    登录http://192.16.1.105:9000,加载项目扫描情况 点击项目名称,查看报告总览 开发人员主要关注为[问题]标签页. 类型 主要关注为bug和漏洞. 其中bug是必须要修复的,漏洞是 ...

  5. kubernets之服务的实现方式

    一  服务如何通过kubernetes集群的组件来实现其功能 1.1  节点上的所有的服务相关的功能实现都是通过节点上面的kube-proxy来实现的,服务提供了一个或者多个服务IP以及端口对客户端开 ...

  6. ctfhub技能树—信息泄露—svn泄露

    打开靶机 查看页面信息 使用dvcs-ripper工具进行处理 ./rip-svn.pl -v -u http://challenge-3b6d43d72718eefb.sandbox.ctfhub. ...

  7. CTF------pwn笔记

    地址:http://pwnable.kr/play.php 题目: 使用MobaXterm连接(当然也可以使用别的软件进行连接,用的顺手就行) 连接成功后所以"ls"命令查看目录 ...

  8. Android之旅2

    一.动静态调试四大组件 (一).activity 一个又一个的界面,需要在manifest里面注册 (二). (三).service (四).broadcast receiver 二.开始分析 1.先 ...

  9. sap的内核升级,修补了源代码保护的方式

    众所周知,在SAP的内核位701或者之前的版本中,我们可以通过向源代码的中加入"*@#@@[SAP]"这样的代码,来实现对源代码的保护.但是在内核升级到721和以后的版本中,你会发 ...

  10. 前端基础功能,原生js实现轮播图实例教程

    轮播图是前端最基本.最常见的功能,不论web端还是移动端,大平台还是小网站,大多在首页都会放一个轮播图效果.本教程讲解怎么实现一个简单的轮播图效果.学习本教程之前,读者需要具备html和css技能,同 ...