C - Minimization

枚举就可以了

因为最后一定会变成1,所以第一次操作的区间就包含1会比较优,然后枚举1在第一次操作区间里排第几个取min即可

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int N=100005;
int n,k,w,a[N],ans=1e9;
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
int main()
{
n=read(),k=read();
for(int i=1;i<=n;i++)
{
a[i]=read();
if(a[i]==1)
w=i;
}
for(int i=1;i<=k;i++)
if(w>=i&&n-w>=k-i)
ans=min(ans,(int)(ceil((double)(w-i)/(double)(k-1))+ceil((double)(n-(w+k-i))/(double)(k-1))));
printf("%d\n",ans+1);
return 0;
}

D - Snuke Numbers

卡死在这道题上了,思路比较迷

首先打表发现,Snuke数只会出现在结尾为9,99,999,9999……的数中,9的数量是单调递增的,但是变化点看起来并没有规律实际上也没有,但是可以通过O(能过)的方式判断出来

设p和q分别表示最高位数和位数,每次判断一下,如果当前位数不满足,则q++,否则输出答案,p++

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int S(long long x)
{
int r=0;
while(x)
r+=x%10,x/=10;
return r;
}
int main()
{
long long k,p=2,q=1;
scanf("%d",&k);
while(k)
{
long long n=p*q-1,m=ceil((double)p/10.0)*q*10-1;//cerr<<n<<" "<<m<<endl;
if(n*S(m)>m*S(n))
p=ceil((double)p/10.0),q*=10;
else
{
printf("%lld\n",n);
k--,p++;
}
}
return 0;
}

E - Independence

其实挺好做的,但是在D上纠结太久了

建出补图,分成两个团就变成了分成两个集合,有边相连的点不能在同一集合。找最小值黑白染色之后跑取min即可,bitset的用法非常棒

#include<iostream>
#include<cstdio>
#include<bitset>
using namespace std;
const int N=705;
int n,m,a[N][N],s[2],c[N],ans=1e9;
bool v[N],flg;
bitset<N>b;
int read()
{
int r=0,f=1;
char p=getchar();
while(p>'9'||p<'0')
{
if(p=='-')
f=-1;
p=getchar();
}
while(p>='0'&&p<='9')
{
r=r*10+p-48;
p=getchar();
}
return r*f;
}
void dfs(int u,int col)
{
c[u]=col;
v[u]=1;
s[col]++;
for(int i=1;i<=n;i++)
if(i!=u&&!a[u][i])
{
if(!v[i])
dfs(i,col^1);
else if(c[i]!=col^1)
flg=1;
}
}
int main()
{
n=read(),m=read();b[0]=1;
for(int i=1;i<=m;i++)
{
int x=read(),y=read();
a[x][y]=a[y][x]=1;
}
for(int i=1;i<=n;i++)
if(!v[i])
{
s[0]=s[1]=0;
dfs(i,0);
b=(b<<s[0])|(b<<s[1]);
}
if(flg==1)
{
puts("-1");
return 0;
}
for(int i=0;i<=n;i++)
if(b[i])
ans=min(ans,i*(i-1)/2+(n-i)*(n-i-1)/2);
printf("%d\n",ans);
return 0;
}

AtCoder Regular Contest 099 C~E的更多相关文章

  1. AtCoder Regular Contest 099

    AtCoder Regular Contest 099 C - Minimization 题意 题意:给出一个n的排列.每次操作可以使一段长度为K的连续子序列变成该序列的最小数.求最少几次使得整个数列 ...

  2. AtCoder Regular Contest 099 (ARC099) E - Independence 二分图

    原文链接https://www.cnblogs.com/zhouzhendong/p/9224878.html 题目传送门 - ARC099 E - Independence 题意 给定一个有 $n$ ...

  3. AtCoder Regular Contest 061

    AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...

  4. AtCoder Regular Contest 094 (ARC094) CDE题解

    原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...

  5. AtCoder Regular Contest 092

    AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...

  6. AtCoder Regular Contest 093

    AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...

  7. AtCoder Regular Contest 094

    AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...

  8. AtCoder Regular Contest 095

    AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...

  9. AtCoder Regular Contest 102

    AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...

随机推荐

  1. 慕课笔记利用css进行布局【三列布局】

    三个div中间自适应,两侧固定大小 <html> <head> <title>三列布局</title> <style type="tex ...

  2. 【Github】如何删除github上的项目

    1.登录你的githup账户,进入到仓库页面如下图 2.点击setting进入到该仓库的设置界面 3.复制一下仓库的名称,然后下拉到最后,点击delete this repository 4.将刚刚复 ...

  3. [bzoj4300]绝世好题_二进制拆分

    绝世好题 bzoj-4300 题目大意:题目链接. 注释:略. 想法: 二进制拆分然后用一个数组单独存一下当前答案即可. Code: #include <iostream> #includ ...

  4. Redis集群方案之Twemproxy+HAProxy+Keepalived+Sentinel+主从复制(待实践)

    首先说明一下,Twemproxy+HAProxy+Keepalived+Sentinel+主从复制-这里提到的技术不一定全部都用上,但是全部用上之后可以达到高可用. 主从复制:实现数据一式多份的保障. ...

  5. 学习swift从青铜到王者之swift基础部分01

    1.1 变量和常量 var 变量名称 = 值(var可以修改) let 常量名称 = 值(let不可以修改) 1.2 基本数据类型 整数类型和小数类型 两种基本数据类型不可以进行隐式转换 var in ...

  6. Django学习系列之重写User模型和登录验证

    重写User模型 Django内置的User模型可能不适合某些项目,我们可能要基于内置的添加一些字段 创建users app startapp users 修改settings.py配置文件,覆盖默认 ...

  7. 排列组合(permutation)系列解题报告

    本文解说4道关于permutation的题目: 1. Permutation:输出permutation--基础递归 2. Permutation Sequence: 输出字典序排列的第k个permu ...

  8. 码农小汪-spring框架学习之2-spring IoC and Beans 控制反转 依赖注入 ApplicationContext BeanFactory

    spring Ioc依赖注入控制反转 事实上这个东西很好理解的,并非那么的复杂. 当某个Java对象,须要调用还有一个Java对象的时候(被依赖的对象)的方法时.曾经我们的做法是怎么做呢?主动的去创建 ...

  9. C# PDF Page操作——设置页面切换按钮 C# 添加、读取Word脚注尾注 C#为什么不能像C/C++一样的支持函数只读传参 web 给大家分享一个好玩的东西,也许你那块就用的到

    C# PDF Page操作——设置页面切换按钮   概述 在以下示例中,将介绍在PDF文档页面设置页面切换按钮的方法.示例中将页面切换按钮的添加分为了两种情况,一种是设置按钮跳转到首页.下页.上页或者 ...

  10. B. Error Correct System (CF Round #296 (Div. 2))

    B. Error Correct System time limit per test 2 seconds memory limit per test 256 megabytes input stan ...