题目链接: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. 【剑指 Offer】10-II.青蛙跳台阶问题

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008, ...

  2. python作业完成简单的文件操作

    题目 请创建以学号命名的目录,在该目录中创建名称为file1.txt的文件,并将自己的个人信息(序号.姓名以及班级)等写入该文件:然后并读取文件中的内容到屏幕上:接着重新命名该文件为file2.txt ...

  3. Go中由WaitGroup引发对内存对齐思考

    转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 本文使用的go的源码时14.4 WaitGroup使用大家都会,但是其中是怎么实现的我们 ...

  4. git文件操作

    git下载地址: https://git-scm.com/download mac 直接使用brew下载brew install git 1Git一般工作流程: 1.在工作目录创建版本库 2.在工作目 ...

  5. 【Java】流程控制 - 顺序结构、 选择(分支)结构(单分支、双分支、多分支、嵌套)、循环结构(for、while、do...while)、跳转语句(break、continue)

    流程控制语句结构 文章目录 流程控制语句结构 一. 顺序结构 1. 输出语句 2. 输入语句 3.code 二.复合语句 三. 分支结构 1. 条件判断 1.单分支结构 2.双分支结构 3.多分支结构 ...

  6. 【Spring】XML方式实现(无参构造 有参构造)和注解方式实现 IoC

    文章目录 Spring IoC的实现方式 XML方式实现 通过无参构造方法来创建 1.编写一个User实体类 2.编写我们的spring文件 3.测试类 UserTest.java 4.测试结果 通过 ...

  7. CyNix-lxd提权

    0x01 信息收集 nmap -p- -T5 192.168.43.155扫描开放端口 nmap -sV -p 80,6688 -A 192.168.43.155 -oA cynix扫描指定端口 go ...

  8. wmic 查看主板信息

    查看主板信息的一个命令:wmic baseboard get 当然在命令提示符里查看,真的很费劲,所以我们将命令格式化一下:wmic baseboard get /format:HFORM >c ...

  9. watchdog应用实例

    watchdog应用实例 By 鬼猫猫 20130504 http://www.cnblogs.com/muyr/ 实例:监测某文件夹,一旦文件夹里有文件,就把它剪切到其他服务器 import sys ...

  10. uni-app开发经验分享二十: 微信小程序 授权登录 获取详细信息 获取手机号

    授权页面 因为微信小程序提供的 权限弹窗 只能通用户确认授权 所以可以 写一个授权页面,让用户点击 来获取用户相关信息 然后再配合后台就可以完成登录 <button class="bt ...