题目链接: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 查找和排序的基本操作:查找排序算法大集合

    重点 查找算法着重掌握:顺序查找.二分查找.哈希表查找.二叉排序树查找. 排序算法着重掌握:冒泡排序.插入排序.归并排序.快速排序. 顺序查找 算法说明 顺序查找适合于存储结构为顺序存储或链接存储的线 ...

  2. [工作札记]02: .Net Winform控件TreeView最简递归绑定方法

    前言:Treeview控件是我们在WinForm.WebForm开发中经常使用的控件,需要从数据库动态加载数据,然后递归绑定每一个节点:同样,递归的思路在其他程序中也经常运用,包括.Net MVC等. ...

  3. 关联实现上-jsonpath取值

    举例子: demo01.py import jsonimport requestsimport jsonpathsession = requests.session()get_param_dict={ ...

  4. ASP.NET Core - JWT认证实现

    一.JWT结构 JWT介绍就太多了,这里主要关注下Jwt的结构. Jwt中包含三个部分:Header(头部).Payload(负载).Signature(签名) Header:描述 JWT 的元数据的 ...

  5. CTFHub - Web(四)

    最近又是每天忙到裂开,,,淦 xss: 反射型: 1.第一个输入框与下面Hello后的内容相同,猜测可以通过该输入,改变页面内容. 测试语句: <script>alert(1)</s ...

  6. 利用vbs隐藏dos窗口

    方法一: option explicitdim wshshellset wshshell=wscript.createobject("wscript.shell")wshshell ...

  7. tornado大全(甩锅版)

    tornado简介 tornado是Python界中非常出名的一款Web框架,和Flask一样它也属于轻量级的Web框架. 但是从性能而言tornado由于其支持异步非阻塞的特性所以对于一些高并发的场 ...

  8. 【CentOS7】Apache发布静态网页-超简单

    目前能够提供Web网络服务的程序有 IIS. Nginx和 Apache等.其中,IIS (Internet Information Services,互联网信息服务)是 Windows系统中默认的 ...

  9. (17)-Python3之--文件操作

    1.文件的操作流程 第一,建立文件对象. 第二,调用文件方法进行操作. 第三,不要忘了关闭文件.(文件不关闭的情况下,内容会放在缓存,虽然Python会在最后自动把内容读到磁盘,但为了以防万一,要养成 ...

  10. LVS负载均衡NAT模式原理介绍以及配置实战

    LVS基本原理 流程解释: 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 PREROUTING 链首先会接收到用户请求,判断目标 IP 确定是本机 IP ...