abc136
第一次打ABC
题目简单,但我菜
可以任选两个数,一个减去1,一个加上1,可以操作$0,\cdots,K$次,求操作后数组最大GCD
枚举数组之和的因子,试图找到符合题意的最大因子
check(x)
对x取模,然后排下序,前面的减到0后面的加到x,枚举分界点,看能不能找到减去的与加上的相等的位置
维护一个前缀和,即满足$sum[i]==(n-i)\times x-sum[n]+sum[i]$的位置
#include<bits/stdc++.h>
typedef long long ll;
#define pair<int,int> P
#define sc(N) scanf("%lld",&N);
using namespace std;
ll A[];
ll B[]; ll K;ll N;
bool check(ll x)
{
ll t=;
for(int i=;i<=N;i++){
B[i]=(A[i-])%x;
}
sort(B+,B+N+);
for(int i=;i<=N;i++){
B[i]+=B[i-];
}
for(int i=;i<=N;i++){
if(B[i]==x*(N-i)-B[N]+B[i]){
if(B[i]<=K)return true;
}
if(B[i]>K)return false;
}
return false;
}
int main()
{ sc(N);
sc(K);
ll t=;
for(int i=; i<N; i++)
{
sc(A[i]);
t+=A[i];
}
sort(A,A+N);
ll ans=;
ll x;
for(ll i=; i*i<=t; i++)
{
if(t%i==)
{
x=t/i;
if(check(x))
{
ans=x;
break;
}
else if(check(i))
{
ans=i;
} }
}
cout<<ans<<'\n';
}
给一个一堆’L‘,'R'的字符串s,每个位置站一个小人,按着脚下’L‘,’R‘的方向来走,求10^100步后,每个位置有多少小人
#include<bits/stdc++.h>
typedef long long ll;
#define pair<int,int> P
#define sc(N) scanf("%lld",&N);
using namespace std;
int N;
string s;
int A[]; int main()
{
cin>>s;
int n=s.length();
int j=;
for(int i=; i<n;)
{
// cout<<i<<endl;
if(s[i]=='R')
{
while(s[i+j]=='R')
{
j++;
} int k=i+j;i=i+j;
while(j>)
{
if(j&)A[k-]++;
else A[k]++;
j--;
} }
else
i++; } for(int i=n-; i>=;)
{
//cout<<i<<endl;
j=;
if(s[i]=='L')
{
while(s[i-j]=='L')
{
j++;
}
//i=i-j;
int k=i-j;i=i-j;
while(j>)
{
if(j&)A[k+]++;
else A[k]++;
j--;
} }
else
i--; }
for(int i=;i<n;i++){
cout<<A[i]<<' ';
}
cout<<'\n'; }
abc136的更多相关文章
- 【atcoder】Enclosed Points [abc136F]
题目传送门:https://atcoder.jp/contests/abc136/tasks/abc136_f 题目大意:在平面上有$n$个点我们,定义一个点集的权值为平面上包含这个点集的最小矩形所包 ...
- ABC136E Max GCD
Thinking about different ways of thinking. --- LzyRapx 题目 思路比较容易想到. Observations: 每次操作过后和不变. 枚举和的因子 ...
随机推荐
- 简述Vue的实例属性、实例方法
1.实例属性 组件树访问 $parent -----> 用来访问当前组件实例的父实例: $root -----> 用来访问当前组件树的根实例,如果当前组件没有父实例,则$root表示当前组 ...
- 如何在centos7中显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意字符的文件或目录
ls /etc |grep "^[^[:alpha:]][[:alpha:]].*"
- 【监控笔记】【1.2】监控事件系列——SQL Trace(默认跟踪与自定义跟踪)
目录: [1.1]概念与使用 [1.2]跟踪的基本操作 --[1.2.1]查看默认跟踪是否在运行 --[1.2.2]开启默认跟踪 --[1.2.3]关闭默认跟踪 --[1.2.4]查看跟踪文件/查看跟 ...
- 安装CentOS7虚拟机
基础环境 Windows 10 VMware Workstation 1.下载CentOS7镜像 https://www.centos.org/download/ 此次安装使用的版本为: CentOS ...
- 用了 10 多年的 Tomcat 居然有bug !
Java技术栈 www.javastack.cn 优秀的Java技术公众号 为了解决分布式链路追踪的问题,我们引入了实现OpenTracing的Jaeger来实现.然后我们为SpringBoot框架写 ...
- 分布式事务解决方案汇总:2PC、3PC、消息中间件、TCC、状态机+重试+幂等(转)
数据一致性问题非常多样,下面举一些常见例子.比如在更新数据的时候,先更新了数据库,后更新了缓存,一旦缓存更新失败,此时数据库和缓存数据会不一致.反过来,如果先更新缓存,再更新数据库,一旦缓存更新成功, ...
- 求大组合数mod p,(p不一定为质数)
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define N 2000005 ll p; ll ...
- hdu6468 zyb的面试 (思维)
题目传送门 题意: 将1~n个数按字典序排序后,求第k个数 思路: 代码: #include<stdio.h> #include<iostream> #include<a ...
- 剑指offer-二叉搜索树的第k个结点树-python
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的 ...
- Java设计模式之——代理设计模式
1.什么是代理设计模式 所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象. 这里举一个栗子:就拿我们平时租房子来举例子,好比租客和房主之间的关系,我们租房子往往不 ...