AtCoder Regular Contest 103 题解
C-/\/\/\
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<iomanip>
#include<cstring>
#include<complex>
#include<vector>
#include<cstdio>
#include<string>
#include<bitset>
#include<ctime>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#define Cpy(x,y) memcpy(x,y,sizeof(x))
#define Set(x,y) memset(x,y,sizeof(x))
#define FILE "a"
#define mp make_pair
#define pb push_back
#define RG register
#define il inline
using namespace std;
typedef unsigned long long ull;
typedef vector<int>VI;
typedef long long ll;
typedef double dd;
const int N=100010;
const int mod=19940417;
const int base=26;
const dd eps=1e-6;
const int inf=2147483647;
const ll INF=1ll<<60;
const ll P=100000;
il ll read(){
RG ll data=0,w=1;RG char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')w=-1,ch=getchar();
while(ch<='9'&&ch>='0')data=data*10+ch-48,ch=getchar();
return data*w;
}
il void file(){
srand(time(NULL)+rand());
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
}
int n,t[2][N],pre[2][N],suf[2][N],ans;
int main()
{
n=read();ans=n;
for(RG int i=1;i<=n;i++)t[i&1][read()]++;
for(RG int i=1;i<=100000;i++)
pre[0][i]=max(pre[0][i-1],t[0][i]),pre[1][i]=max(pre[1][i-1],t[1][i]);
for(RG int i=100000;i;i--)
suf[0][i]=max(suf[0][i+1],t[0][i]),suf[1][i]=max(suf[1][i+1],t[1][i]);
for(RG int i=1;i<=100000;i++)
ans=min(ans,n-(t[0][i]+max(pre[1][i-1],suf[1][i+1])));
printf("%d\n",ans);
return 0;
}
D-Robot Arms
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<iomanip>
#include<cstring>
#include<complex>
#include<vector>
#include<cstdio>
#include<string>
#include<bitset>
#include<ctime>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#define Cpy(x,y) memcpy(x,y,sizeof(x))
#define Set(x,y) memset(x,y,sizeof(x))
#define FILE "a"
#define mp make_pair
#define pb push_back
#define RG register
#define il inline
using namespace std;
typedef unsigned long long ull;
typedef vector<int>VI;
typedef long long ll;
typedef double dd;
const int N=100010;
const int mod=19940417;
const int base=26;
const dd eps=1e-6;
const int inf=2147483647;
const ll INF=1ll<<60;
const ll P=100000;
il ll read(){
RG ll data=0,w=1;RG char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')w=-1,ch=getchar();
while(ch<='9'&&ch>='0')data=data*10+ch-48,ch=getchar();
return data*w;
}
il void file(){
srand(time(NULL)+rand());
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
}
int n,m,x[N],y[N],p[N],q[N],k[N],s[N];
il void er(){puts("-1");exit(0);}
int main()
{
n=read();m=31;
for(RG int i=1;i<=n;i++){
x[i]=read();y[i]=read();
p[i]=x[i]+y[i];q[i]=x[i]-y[i];
x[i]=abs(x[i]);y[i]=abs(y[i]);
if(i!=1&&((x[i-1]+y[i-1])&1)!=((x[i]+y[i])&1))er();
}
m+=(!((x[n]+y[n])&1));
printf("%d\n",m);
for(RG int i=0;i<31;i++)printf("%d ",1<<i);
if(!((x[n]+y[n])&1))printf("1 ");puts("");
for(RG int i=1;i<=n;i++){
memset(k,0,sizeof(k));memset(s,0,sizeof(s));
//printf("%d,%d\n",p[i],q[i]);
if(m==32){k[32]=s[32]=1;p[i]--;q[i]--;}
for(RG int j=30;~j;j--)
if(p[i]>0)k[j+1]=1,p[i]-=(1<<j);
else k[j+1]=0,p[i]+=(1<<j);
for(RG int j=30;~j;j--)
if(q[i]>0)s[j+1]=1,q[i]-=(1<<j);
else s[j+1]=0,q[i]+=(1<<j);
for(RG int j=1;j<=m;j++)
if(k[j]&&s[j])putchar('R');
else if(k[j]&&!s[j])putchar('U');
else if(!k[j]&&s[j])putchar('D');
else if(!k[j]&&!s[j])putchar('L');
puts("");
}
return 0;
}
E-Tr/ee
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<iomanip>
#include<cstring>
#include<complex>
#include<vector>
#include<cstdio>
#include<string>
#include<bitset>
#include<ctime>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#define Cpy(x,y) memcpy(x,y,sizeof(x))
#define Set(x,y) memset(x,y,sizeof(x))
#define FILE "a"
#define mp make_pair
#define pb push_back
#define RG register
#define il inline
using namespace std;
typedef unsigned long long ull;
typedef vector<int>VI;
typedef long long ll;
typedef double dd;
const int N=100010;
const int mod=19940417;
const int base=26;
const dd eps=1e-6;
const int inf=2147483647;
const ll INF=1ll<<60;
const ll P=100000;
il ll read(){
RG ll data=0,w=1;RG char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')w=-1,ch=getchar();
while(ch<='9'&&ch>='0')data=data*10+ch-48,ch=getchar();
return data*w;
}
il void file(){
srand(time(NULL)+rand());
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
}
int n,m;char s[N];bool vis[N];
struct edge{int u,v;}E[N];
il void er(){puts("-1");exit(0);}
int main()
{
scanf("%s",s+1);n=strlen(s+1);if(s[n]=='1')er();
for(RG int i=1,j=n-1;i<=j;i++,j--){
if(s[i]!=s[j])er();
else if(s[i]=='0'){
if(i==1)er();
}
else{
vis[i]=1;
}
}
for(RG int i=n/2+1;i<n;i++)E[++m]=(edge){i,n};
for(RG int i=n/2,p=n;i;i--){
E[++m]=(edge){i,p};if(vis[i])p=i;
}
for(RG int i=1;i<=m;i++)printf("%d %d\n",E[i].u,E[i].v);
return 0;
}
F-Distance Sums
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<iomanip>
#include<cstring>
#include<complex>
#include<vector>
#include<cstdio>
#include<string>
#include<bitset>
#include<ctime>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#define Cpy(x,y) memcpy(x,y,sizeof(x))
#define Set(x,y) memset(x,y,sizeof(x))
#define FILE "a"
#define mp make_pair
#define pb push_back
#define RG register
#define il inline
using namespace std;
typedef unsigned long long ull;
typedef vector<int>VI;
typedef long long ll;
typedef double dd;
const int N=1<<17;
const int mod=998244353;
const int base=26;
const dd eps=1e-6;
const int inf=2147483647;
const ll INF=1ll<<60;
const ll P=100000;
il ll read(){
RG ll data=0,w=1;RG char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar();
if(ch=='-')w=-1,ch=getchar();
while(ch<='9'&&ch>='0')data=data*10+ch-48,ch=getchar();
return data*w;
}
il void file(){
srand(time(NULL)+rand());
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
}
int n,m;ll sz[N],o[N];
struct node{ll d,id;}t[N];
bool cmp_d(node a,node b){return a.d<b.d;}
bool cmp_id(node a,node b){return a.id<b.id;}
il void er(){puts("-1");exit(0);}
struct edge{int u,v;}E[N];
int head[N],nxt[N<<1],to[N<<1],cnt;
il void add(int u,int v){to[++cnt]=v;nxt[cnt]=head[u];head[u]=cnt;}
ll up[N],down[N],w[N];
void dfs1(int u,int ff){
sz[u]=1;
for(RG int i=head[u];i;i=nxt[i]){
RG int v=to[i];if(v==ff)continue;
dfs1(v,u);sz[u]+=sz[v];
up[u]+=up[v]+sz[v];
}
}
void dfs2(int u,int ff){
for(RG int i=head[u];i;i=nxt[i]){
RG int v=to[i];if(v==ff)continue;
down[v]=down[u]+up[u]-(up[v]+sz[v])+(n-sz[v]);
dfs2(v,u);
}
}
int main()
{
n=read();
for(RG int i=1;i<=n;i++){t[i].d=read();t[i].id=i;}
sort(t+1,t+n+1,cmp_d);
for(RG int i=1;i<=n;i++)o[i]=t[i].d,sz[i]=1;
for(RG int i=n,p;i!=1;i--){
p=lower_bound(o+1,o+n+1,t[i].d-n+2ll*sz[i])-o;
if(o[p]!=t[i].d-n+2ll*sz[i]||p>=i)er();
E[++m]=(edge){t[p].id,t[i].id};sz[p]+=sz[i];
}
for(RG int i=1;i<=m;i++)add(E[i].u,E[i].v),add(E[i].v,E[i].u);
dfs1(1,0);dfs2(1,0);sort(t+1,t+n+1,cmp_id);
for(RG int i=1;i<=n;i++)w[i]=down[i]+up[i];
for(RG int i=1;i<=n;i++)if(w[i]!=t[i].d)er();
for(RG int i=1;i<=m;i++)printf("%d %d\n",E[i].u,E[i].v);
return 0;
}
AtCoder Regular Contest 103 题解的更多相关文章
- AtCoder Regular Contest 127 题解
sb atcoder 提前比赛时间/fn/fn/fn--sb atcoder 还我 rating/zk/zk/zk A 签到题,枚举位数 \(+\) 前导 \(1\) 个数然后随便算算贡献即可,时间复 ...
- AtCoder Regular Contest 103 E Tr/ee
Tr/ee 思路:按照下图所示连接 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #inclu ...
- AtCoder Regular Contest 103 Problem D Robot Arms (构造)
题目链接 Problem D 给定$n$个坐标,然后让你构造一个长度为$m$的序列, 然后给每个坐标规定一个长度为$m$的序列,ULRD中的一个,意思是走的方向, 每次从原点出发按照这个序列方向,每 ...
- AtCoder Regular Contest 103
传送门 C - /\/\/\/ 题意: 给出一个序列\(\{a_i\}\),先要求其满足以下条件: \(a_i=a_{i+2}\) 共有两个不同的数 你现在可以修改任意个数,现问最少修改个数为多少. ...
- Atcoder Regular Contest 123 题解
u1s1 我是真的不知道为什么现场这么多人切了 D,感觉 D 对思维要求显然要高于其他 300+ 人切掉的 D 吧(也有可能是 Atc 用户整体水平提升了?) A 开 幕 雷 击(这题似乎 wjz 交 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 096
AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
随机推荐
- MySql 使用explain分析查询
今天写了个慢到哭的查询,想用explain分析下执行计划,后来发现explain也是有局限性的: EXPLAIN不会告诉你关于触发器.存储过程的信息或用户自定义函数对查询的影响情况 •EXPLAIN不 ...
- P1209 [USACO1.3]修理牛棚 Barn Repair
P1209 [USACO1.3]修理牛棚 Barn Repair 题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. ...
- zookeeper的图形化展示
1.ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供 ...
- long 与int 比较问题
long 与int 比较,在32位机器,sizeof都是 占用4个字节: 在window 64位也是占用4个字节 但是在Linux 64位,long占用 8个字节, int占用4个字节,这样比较就会有 ...
- webpack中Development和Production模式的区分打包
当我们在开发一个项目的时候,我们一般用development这个环境进行项目的开发,在这个环境下,webpack使用dev-server,帮我们启用一个服务器,然后这个服务器里面还集成了一些,比如hm ...
- 第六阶段·数据库MySQL及NoSQL实践 第2章·Redis
01-Redis简介 02-Redis基本安装启动 03-Redis的配置文件基本使用 04-Redis安全管理 05-Redis安全持久化-RDB持久化 06-Redis安全持久化-AOF持久化 0 ...
- Python列表操作大全(非常全)
Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...
- Resharp使用简记
一图流: 拾贝: .字符串引号中直接回车键自动添加连接字符串 Ctrl+B:转到定义 Ctr+F11:展示类结构 Ctr+Alt+j:包围代码块 Ctr+\:注释和取消注释 Alt+Ins:重构 Ct ...
- JDK源码分析:Object.java
一. 序言 Object.java是一切类的基类,所以了解该类有一定的必要 二 .属性及方法分析 方法列表: private static native void registerNatives(); ...
- Dask教程
Dask 介绍 Dask是一款用于分析计算的灵活并行计算库. Dask由两部分组成: 针对计算优化的动态任务调度.这与Airflow,Luigi,Celery或Make类似,但针对交互式计算工作负载进 ...