diverta 2019 Programming Contest 2自闭记
A
签到(a-b problem不用贴了吧,以后atcoder小于300分题均不贴代码)
B
发现选择的p,q一定是其中两点间的距离,于是可以O(n2)枚举两点,再O(n2)判断,其实可以做到O(n3)不过O(n4)就够了。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,ans;
ll x[],y[];
int main()
{
scanf("%d",&n);
ans=n;
for(int i=;i<=n;i++)scanf("%lld%lld",&x[i],&y[i]);
for(int i=;i<n;i++)
for(int j=i+;j<=n;j++)
{
ll dx=x[i]-x[j],dy=y[i]-y[j];
int sum=;
for(int k=;k<=n;k++)
{
int flag=;
for(int l=;l<=n;l++)if(x[k]-x[l]==dx&&y[k]-y[l]==dy){flag=;break;}
sum+=flag;
}
ans=min(ans,sum);
}
printf("%d\n",ans);
}
C
按照从小到大排成a1,a2,...,an,分类讨论:1、只有两个数直接相减。2、对于全是正的,显然应该先拿a1的减去除了an以外其他数,再用an减去该数,显然答案就是a2+a3+...+an-a1。对于全是负的,可以采用类似的方法。3、对于有正有负的,显然选出a1和an,a1减去除an外的正数,an减去除a1外的负数,再an-a1即可,答案就是所有数的绝对值
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
int n,m,a[N],ax[N],ay[N];
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
sort(a+,a+n+);
if(n==)
{
printf("%d\n%d %d\n",a[]-a[],a[],a[]);
return ;
}
if(a[]>=)
{
for(int i=;i<n;i++)ax[++m]=a[],ay[m]=a[i],a[]-=a[i];
ax[++m]=a[n],ay[m]=a[],a[n]-=a[];
printf("%d\n",a[n]);
for(int i=;i<=m;i++)printf("%d %d\n",ax[i],ay[i]);
return ;
}
if(a[n]<=)
{
int ans=a[n];
for(int i=;i<n;i++)ans-=a[i];
printf("%d\n",ans);
for(int i=;i<n;i++)printf("%d %d\n",a[n],a[i]),a[n]-=a[i];
return ;
}
int pos=;
for(int i=;i<=n;i++)if(a[i]>=){pos=i;break;}
for(int i=;i<pos;i++)ax[++m]=a[n],ay[m]=a[i],a[n]-=a[i];
for(int i=pos;i<n;i++)ax[++m]=a[],ay[m]=a[i],a[]-=a[i];
ax[++m]=a[n],ay[m]=a[],a[n]-=a[];
printf("%d\n",a[n]);
for(int i=;i<=m;i++)printf("%d %d\n",ax[i],ay[i]);
}
D
发现只会做两轮交易,A->B,B->A,然后发现是个完全背包DP,并且第二次背包的容量是O(n2)的,于是就可以直接O(n2)DP结束了,感觉这个D比C简单吧。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=;
int n,m,a[],b[];
ll ans,f[N*N];
int main()
{
scanf("%d",&n);
for(int i=;i<;i++)scanf("%d",&a[i]);
for(int i=;i<;i++)scanf("%d",&b[i]);
for(int i=;i<;i++)
if(b[i]>a[i])
for(int j=a[i];j<=n;j++)
f[j]=max(f[j],f[j-a[i]]+b[i]-a[i]);
for(int i=;i<=n;i++)m=max(1ll*m,f[i]),f[i]=;
m+=n;
for(int i=;i<;i++)
if(a[i]>b[i])
for(int j=b[i];j<=m;j++)
f[j]=max(f[j],f[j-b[i]]+a[i]-b[i]);
for(int i=;i<=m;i++)ans=max(ans,f[i]);
ans+=m;
printf("%lld",ans);
}
E
考后5min写出来,简直自闭……早知道不去写F的打表程序还没跑出来……就是每次移动总是min->max,然后f[i]表示max为i时的方案数,显然对于多个max的可以变换成x!种(x为max的人数),然后求一个阶乘前缀和即可。注意最后f[n]不要求。
#include<bits/stdc++.h>
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
const int N=1e6+,mod=1e9+;
int n,d,h,f[N],fac[N],inv[N],sf[N],s[N<<];
int qpow(int a,int b)
{
int ret=;
while(b)
{
if(b&)ret=1ll*ret*a%mod;
a=1ll*a*a%mod,b>>=;
}
return ret;
}
void update(int k,int v,int l,int r,int rt)
{
if(l==r){s[rt]=v;return;}
int mid=l+r>>;
if(k<=mid)update(k,v,lson);
else update(k,v,rson);
s[rt]=(s[rt<<]+s[rt<<|])%mod;
}
int query(int L,int R,int l,int r,int rt)
{
if(L<=l&&r<=R)return s[rt];
int mid=l+r>>,ret=;
if(L<=mid)ret+=query(L,R,lson);
if(R>mid)ret+=query(L,R,rson);
return ret%mod;
}
int main()
{
scanf("%d%d%d",&n,&h,&d);
fac[]=;for(int i=;i<=n;i++)fac[i]=1ll*fac[i-]*i%mod;
for(int i=;i<=n;i++)sf[i]=(sf[i-]+fac[i])%mod;
update(,fac[n],,h,);
for(int i=;i<=h;i++)
{
f[i]=query(max(,i-d),i-,,h,);
if(i<h)f[i]=1ll*f[i]*sf[n]%mod,update(i,f[i],,h,);
}
printf("%d",f[h]);
}
F
好吧,看了网上程序,差不多是构造个近似fib数列的玩意,把表抄上也没管了……
#include<bits/stdc++.h>
using namespace std;
long long a1[]={,,,,,,,,,},a2[]={,,,,,,,,,};
long long n,w=,mp[][];
int main()
{
cin>>n;
for(int i=;i<=n;i++)mp[i][i]=;
for(int i=;i<=n;i++)
{
for(int j=i+;j<=n;j++)mp[i][j]=mp[j][i]=w*a1[j-i-];
w*=a2[n-i];
}
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)cout<<mp[i][j]<<' ';
cout<<endl;
}
}
result:rank101 rating+=58,精准地没进前100……
diverta 2019 Programming Contest 2自闭记的更多相关文章
- AtCoder diverta 2019 Programming Contest 2
AtCoder diverta 2019 Programming Contest 2 看起来我也不知道是一个啥比赛. 然后就写写题解QWQ. A - Ball Distribution 有\(n\)个 ...
- 【AtCoder】diverta 2019 Programming Contest 2
diverta 2019 Programming Contest 2 A - Ball Distribution 特判一下一个人的,否则是\(N - (K - 1) - 1\) #include &l ...
- 【AtCoder】diverta 2019 Programming Contest
diverta 2019 Programming Contest 因为评测机的缘故--它unrated了.. A - Consecutive Integers #include <bits/st ...
- diverta 2019 Programming Contest 2
A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 ...
- diverta 2019 Programming Contest
A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 ...
- AtCoder Grand Contest 030 自闭记
A:阅读. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...
- 2019 Multi-University Training Contest 2: 1010 Just Skip The Problem 自闭记
2019 Multi-University Training Contest 2: 1010 Just Skip The Problem 自闭记 题意 多测.每次给你一个数\(n\),你可以同时问无数 ...
- PKUWC 2019 自闭记
PKUWC 2019 自闭记 Day -1 考前天天在隔壁的物竞教室划水(雀魂,能和吉老师一起玩的游戏都是好游戏),没有做题. Day 0 早上8:16的高铁,到广州南居然要6个小时...不知道福州和 ...
- [AtCoder] NIKKEI Programming Contest 2019 (暂缺F)
[AtCoder] NIKKEI Programming Contest 2019 本来看见这一场的排名的画风比较正常就来补一下题,但是完全没有发现后两题的AC人数远少于我补的上一份AtCoder ...
随机推荐
- Bean 注解(Annotation)配置(3)- 依赖注入配置
Spring 系列教程 Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of ...
- 日期月份是英文转成数字——oracle
update table01 set F_DATE = to_char(to_date(F_DATE, 'dd-month-yy', 'NLS_DATE_LANGUAGE=AMERICAN'), 'y ...
- C# Stream篇(四) -- FileStream
FileStream 目录: 如何去理解FileStream? FileStream的重要性 FileStream常用构造函数(重要) 非托管参数SafeFileHandle简单介绍 FileStre ...
- 第十七篇 ORM跨表查询和分组查询---二次剖析
ORM跨表查询和分组查询---二次剖析 阅读目录(Content) 创建表(建立模型) 基于对象的跨表查询 一对多查询(Publish与Book) 多对多查询 (Author 与 Book) 一对一查 ...
- oracle常用密令大全
1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba t ...
- C# 对CSV 读写
下面这篇博客只介绍了简单的 用“,”隔开的方式, 不是很推荐,但是对于符合的数据类型还是挺好的 https://www.cnblogs.com/Clin/archive/2013/03/14/2959 ...
- SQL left join、rignt join、inner join区别
说真的一直对数据库没有研究以至于连这些基础都不会了,事实证明,业精于勤荒于嬉. 废话不多说,直接开始 有A.B两张表: 1.inner join inner join 和 join 是没有区别的(如有 ...
- javascript数组日期
arr forEach(callback,thisArg) thisArg:指明回调函数的this指向 callback(element,index,arr) element:每次取到的数组元素值 i ...
- 【无网条件下】Linux系统、jdk、redis及集群、rabbitmq、nginx、weblogic和oracle安装及配置
本篇文章为原创,仅供参考使用,如果需要文章中提到的所有软件安装包和依赖包(即data),请以博客园邮箱联系获取链接. 准备资料 软件 主要软件包版本 路径 系统镜像 CentOS-6.10-x86_6 ...
- JZOJ-TGB817-SOL
T1 题面 "封印大典启动,请出Nescafe魂珠!"随着圣主applepi一声令下,圣剑护法rainbow和魔杖护法freda将Nescafe魂珠放置于封印台上.封印台是一个树形 ...