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: 每次操作过后和不变. 枚举和的因子 ...
随机推荐
- Java中字母大小写的转换
例:String str = "AbC"; 把字符串所有字母变成小写: System.out.println(str.toLowerCase()); 把字符串所有字母大写: Sys ...
- js 自调函数
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- switch条件变量的取值类型
switch条件变量的取值类型主要有以下六种: 1)JDK1.5(不含JDK1.5)之前只能是byte.short.int.char类型,不能是float.double.long.boolean类型. ...
- Android中Bitmap对象和字节流之间的相互转换(转)
android 将图片内容解析成字节数组:将字节数组转换为ImageView可调用的Bitmap对象:图片缩放:把字节数组保存为一个文件:把Bitmap转Byte import java.io.Buf ...
- SSM框架之AOP、动态代理、事务处理相关随笔
AOP: 原理:底层利用动态代理(两种动态代理技术都使用了) 两种实现方案: 第一种:JDK动态代理技术 实现的InvocationHandler接口,要想实现某个类的动态代理对象,必须有接口有实现类 ...
- idea 代码部分格式化
效果: 处理Idea使用ctrl+alt+L进行代码格式化时部分代码可以被忽略,不执行格式化功能(webstorm,phpstorm同理) 原因: 有时希望自己写的一些代码不被格式化,或者发现格式化后 ...
- c语言中字符串跨行书写的问题
字符串常量定义时的换行问题 如果我们在一行代码的行尾放置一个反斜杠,c语言编译器会忽略行尾的换行符,而把下一行的内容也算作是本行的内容.这里反斜杠起到了续行的作用. 如果我们不使 ...
- Rust学习笔记2
继续继续... 转眼都开学啦... Building Blocks 2 building blocks里讲了一些关于Log structure storage的东西,这也是用于在硬盘上持久化KvSto ...
- 华为云搭建windows+wordpress+xampp
1.如何将本地文件上传至华为云ECS云服务器(Windows系统) 1.1 在本地电脑上,快捷键“WIN+R"打开“运行”中输入“mstsc”,点击确定 1.2 在“远程桌面连接”框点击“ ...
- Python 循环异或对文件进行加解密
# -* -coding: UTF-8 -* - # 功能:异或方式对文件进行加密和解密 import os import datetime # 主函数 def main(): getInput() ...