A:签到

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 1010
int n,a[N];
int main()
{
n=read();
for (int i=;i<=n;i++) a[i]=read();
sort(a+,a+n+);
cout<<a[n]-a[]+-n;
return ;
}

  B:签到

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define ll long long
ll a,b,x,y;
ll gcd(ll n,ll m){return m==?n:gcd(m,n%m);}
int main()
{
cin>>a>>b>>x>>y;
ll tmp=gcd(x,y);x/=tmp,y/=tmp;
cout<<min(a/x,b/y);
return ;
}

  C:贪心,每次选择最后一次喝咖啡最早的一天,看是否能将此次喝咖啡加入这天,不行就新开一天。堆维护即可。开始的时候写了半天线性的一直wa on 9,掉rating瞬间稳了。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 200010
int n,m,k,tot,ans[N];
struct data{int x,i;
bool operator <(const data&a) const
{
return x<a.x;
}
}a[N];
struct data2{int id,tim;
bool operator <(const data2&a) const
{
return tim>a.tim;
}
};
priority_queue<data2> q;
int main()
{
n=read(),m=read(),k=read()+;
for (int i=;i<=n;i++) a[i].x=read(),a[i].i=i;
sort(a+,a+n+);
for (int i=;i<=n;i++)
{
if (q.empty()||q.top().tim+k>a[i].x)
{
tot++;ans[a[i].i]=tot;
q.push((data2){tot,a[i].x});
}
else
{
ans[a[i].i]=q.top().id;
data2 y=q.top();q.pop();
q.push((data2){y.id,a[i].x});
}
}
cout<<tot<<endl;
for (int i=;i<=n;i++) printf("%d ",ans[i]);
return ;
}

  D:按间隔长度尺取即可。没看到没有相交段,惨惨。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 200010
int n,m,cnt,c[N],d[N],ans,t=;
struct data{int x,y;
bool operator <(const data&a) const
{
return x<a.x;
}
}a[N],b[N];
int main()
{
n=read(),m=read();
for (int i=;i<=n;i++) a[i].x=read(),a[i].y=read();
sort(a+,a+n+);
for (int i=;i<=n;i++)
{
int x=a[i].y,t=i;
while (t<n&&a[t+].x<=x) t++,x=max(x,a[t].y);
cnt++,b[cnt].x=a[i].x,b[cnt].y=x;
i=t;
}
for (int i=;i<cnt;i++)
t++,c[t]=b[i].y-b[i].x,d[t]=b[i+].x-b[i].y;
c[++t]=b[cnt].y-b[cnt].x;
for (int i=;i<=t;i++) c[i]+=c[i-];
for (int i=;i<t;i++) d[i]+=d[i-];
ans=c[]+m;
int x=;
for (int i=;i<t;i++)
{
while (x+<t&&d[x+]-d[i-]<m) x++;
ans=max(ans,c[x+]-c[i-]+m);
}
cout<<ans;
}

  E:容易发现任意一条边的两端总有一端包含最大值,先把这个判掉。不妨设n号点为树根,此时考虑n-1号点,其与n号点的距离就应为n-1号点的出现次数。类似地发现构造一个链或者菊花就好了,构造完再判断是否合法。n<=1000可能是为了写起来舒服一点。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 1010
int n,a[N],b[N],cnt[N],tree[N],x;
int main()
{
n=read();
for (int i=;i<n;i++)
{
a[i]=read(),b[i]=read();cnt[a[i]]++;
if (b[i]!=n) {printf("NO\n");return ;}
}
tree[]=n;x=;
for (int i=n-;i;i--)
if (cnt[i]) tree[x+=cnt[i]]=i;
for (int i=n-;i>=;i--)
if (!cnt[i])
for (int j=;j<=n;j++)
if (!tree[j]) {tree[j]=i;break;}
for (int i=;i<n;i++)
{
int x=;
for (int j=i+;j<=n;j++) x=max(x,tree[j]);
cnt[x]--;
if (cnt[x]<) {printf("NO\n");return ;}
}
printf("YES\n");
for (int i=;i<n;i++) cout<<tree[i]<<' '<<tree[i+]<<endl;
}

  F:比赛时看错题了以为是找最长的交替等差子序列,这拿头做啊。结束半个小时了才发现。考虑如何选取公差,若d=a*b且b是奇数,那么d=a一定会更优。所以只枚举2的幂次作为公差然后map存一下取模的结果就行了。注意ans初值设成2,因为可能存在横坐标相同的点。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 100010
int n,m,x,y,a[N],b[N],ans=;
map<int,int> f,g;
int main()
{
n=read(),x=read();
for (int i=;i<=n;i++) a[i]=read();
m=read(),y=read();
for (int i=;i<=m;i++) b[i]=read();
for (int x=;x<=1E9;x<<=)
{
f.clear();g.clear();
for (int i=;i<=n;i++) f[a[i]%(x<<)]++;
for (int i=;i<=m;i++) g[b[i]%(x<<)]++;
for (int i=;i<=n;i++)
ans=max(ans,f[a[i]%(x<<)]+g[(a[i]+x)%(x<<)]);
for (int i=;i<=m;i++)
ans=max(ans,g[b[i]%(x<<)]+f[(b[i]+x)%(x<<)]);
}
cout<<ans;
}

  总体是一场readforces&speedforces。于是就翻车了。当然自己还是弱爆。

Codeforces Round#509 Div.2翻车记的更多相关文章

  1. Codeforces Round#500 Div.2 翻车记

    A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...

  2. Educational Codeforces Round 56 Div. 2 翻车记

    A:签到. B:仅当只有一种字符时无法构成非回文串. #include<iostream> #include<cstdio> #include<cmath> #in ...

  3. Educational Codeforces Round 55 Div. 2 翻车记

    A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...

  4. Codeforces Round#514 Div.2 翻车记

    A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...

  5. Codeforces Round #524 Div. 2 翻车记

    A:签到.room里有一个用for写的,hack了一发1e8 1,结果用了大概600+ms跑过去了.惨绝人寰. #include<iostream> #include<cstdio& ...

  6. Codeforces Round#516 Div.1 翻车记

    A:开场懵逼.然后发现有人1min过,于是就sort了一下,于是就过了.正经证明的话,考虑回文串两端点一定是相同的,所以最多有Σcnti*(cnti+1)/2个,cnti为第i种字母出现次数.而sor ...

  7. Codeforces Round #517 Div. 1翻车记

    A:真的懵逼了.冷静了半天之后决定二分一下答案,然后先a安排上尽量小的再贪心地一个个扩大.40min才过.这个做法非常怂的以代码复杂度和时间复杂度为代价换取了比较稳的正确性,事实上由于1~n可以组合出 ...

  8. Educational Codeforces Round 53 Div. 2翻车记

    A:差点开场懵逼.只要有相邻两位不同就可以作为答案. #include<iostream> #include<cstdio> #include<cmath> #in ...

  9. Codeforces Round #394 (Div. 2) 颓废记

    昨天晚上(今天凌晨),又忍不住去打CF.(本蒟弱到只能打Div.2)... 我觉得我可以用一个词概括我这次的CF: 呵呵 刚一开赛,我就codeforces访问失败.. 后来好不容易能上了,两三分钟才 ...

随机推荐

  1. 接口测试中抓包工具Charles的使用

    在被测接口并没有明确的接口文档给出时,我们需要借助抓包工具来帮助测试,利用抓包工具我们几乎可以获得接口文档中能给你的一切.常见的抓包工具有Charles和Fiddler, Fiddler只能用在Win ...

  2. Mybatis批量更新报错com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException

    批量更新数据,非常简单的一段代码,硬是报错,插入的数据也能显示出来 List<User> userlist = new ArrayList<User>(); userlist. ...

  3. Jenkins远程测试

    Jenkins远程测试 网络测试,如,selenium 测试可以通过主从和 selenium 套件插件远程安装在机器上运行.下列步骤显示了如何运行使用此配置来进行远程测试. 第1步 - 确保主从配置到 ...

  4. python多线程创建与使用(转)

    原文:http://codingpy.com/article/python-201-a-tutorial-on-threads/ 创建多线程 创建多线程主要有2种方式. 使用threading.Thr ...

  5. JavaScript学习笔记(七)—— 再说函数

    第八章 函数 1 函数声明和函数表达式 差别一:函数声明:函数在执行代码前被创建:函数表达式是在运行阶段执行代码时创建: 差别二:函数声明创建一个与函数同名的变量,并让她指向函数:使用函数表达式,不给 ...

  6. Hyperledger Fabric 1.0 从零开始(一)

    在HyperLedger/Fabric发布0.6的时候,公司就已经安排了一个团队研究这一块,后来也请IBM的专家组过来培训了一批人,不幸的是,这批人后来全走了,然后1.0就发布了.自从2017年7月H ...

  7. 如何利用京东云的对象存储(OSS)上传下载文件

    作者:刘冀 在公有云厂商里都有对象存储,京东云也不例外,而且也兼容S3的标准因此可以利用相关的工具去上传下载文件,本文主要记录一下利用CloudBerry Explorer for Amazon S3 ...

  8. 02_python内置模块_timeit

    timeit模块可以用来测试一小段python代码的执行速度. (1)timeit.Timer(stmt='pass', setup='pass', timer=<timer function& ...

  9. NO.7:自学python之路------类的方法、异常处理、socket网络编程

    引言 我visual studio 2017就算体积巨大.启动巨慢.功能简陋也不会安装PyCharm的,嘿呀,真香.好吧,为了实现socket网络编程,更换了软件. 正文 静态方法 只是在名义上归类管 ...

  10. NO.2:自学tensorflow之路------BP神经网络编程

    引言 在上一篇博客中,介绍了各种Python的第三方库的安装,本周将要使用Tensorflow完成第一个神经网络,BP神经网络的编写.由于之前已经介绍过了BP神经网络的内部结构,本文将直接介绍Tens ...