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. Mybatis批量更新报错com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException

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

  2. charles工具教程

    本文的内容主要包括: Charles 的简介 如何安装 Charles 将 Charles 设置成系统代理 Charles 主界面介绍 过滤网络请求 截取 iPhone 上的网络封包 截取 Https ...

  3. java并发之线程池的使用

    背景 当系统并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要消耗大量的系统资源. 所以需要一个办法使得线程可以 ...

  4. Unity 自定义编辑器窗口 画线

    最近在学习状态机, 想自己实现一个可视化编辑器, 需要将多个状态之间用线条连接起来, 效果如下: 代码如下: Material m;Vector2 start;Vector2 end;Color co ...

  5. gitlab+jenkins持续集成--http方式连接gitlab

    http://v.youku.com/v_show/id_XMjk3NTYyMDUxMg==.html?spm=a2h3j.8428770.3416059.1

  6. WinDbg使用学习

    拿到软件崩溃之后产生的crash文件,后缀名为dump 使用winDbg的File-----> Open Crash Dump 打开Crash文件 File---------> Symbo ...

  7. django1.11入门

    快速安装指南¶ 在使用Django之前,您需要安装它.我们有 完整的安装指南,涵盖所有可能性; 本指南将指导您进行简单,最小化的安装,在您完成介绍时可以正常工作. 安装Python¶ 作为一个Pyth ...

  8. Python之并发编程-协程

    目录 一.介绍 二. yield.greenlet.gevent介绍 1.yield 2.greenlet 3.gevent 一.介绍 协程:是单线程下的并发,又称微线程,纤程.英文名Coroutin ...

  9. 关于php的array_diff和array_diff_assoc的使用总结

    关于php的array_diff和array_diff_assoc的使用总结 2015-11-07 17:01 184人阅读 评论(0) 收藏 举报  分类: php学习感想(1)  版权声明:本文为 ...

  10. Linux 目录结构及文件基本操作

    Linux 目录结构及文件基本操作 实验介绍 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux ...