Codeforces Round#509 Div.2翻车记
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翻车记的更多相关文章
- Codeforces Round#500 Div.2 翻车记
A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...
- Educational Codeforces Round 56 Div. 2 翻车记
A:签到. B:仅当只有一种字符时无法构成非回文串. #include<iostream> #include<cstdio> #include<cmath> #in ...
- Educational Codeforces Round 55 Div. 2 翻车记
A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...
- Codeforces Round#514 Div.2 翻车记
A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...
- Codeforces Round #524 Div. 2 翻车记
A:签到.room里有一个用for写的,hack了一发1e8 1,结果用了大概600+ms跑过去了.惨绝人寰. #include<iostream> #include<cstdio& ...
- Codeforces Round#516 Div.1 翻车记
A:开场懵逼.然后发现有人1min过,于是就sort了一下,于是就过了.正经证明的话,考虑回文串两端点一定是相同的,所以最多有Σcnti*(cnti+1)/2个,cnti为第i种字母出现次数.而sor ...
- Codeforces Round #517 Div. 1翻车记
A:真的懵逼了.冷静了半天之后决定二分一下答案,然后先a安排上尽量小的再贪心地一个个扩大.40min才过.这个做法非常怂的以代码复杂度和时间复杂度为代价换取了比较稳的正确性,事实上由于1~n可以组合出 ...
- Educational Codeforces Round 53 Div. 2翻车记
A:差点开场懵逼.只要有相邻两位不同就可以作为答案. #include<iostream> #include<cstdio> #include<cmath> #in ...
- Codeforces Round #394 (Div. 2) 颓废记
昨天晚上(今天凌晨),又忍不住去打CF.(本蒟弱到只能打Div.2)... 我觉得我可以用一个词概括我这次的CF: 呵呵 刚一开赛,我就codeforces访问失败.. 后来好不容易能上了,两三分钟才 ...
随机推荐
- javaweb学习6——自定义标签
声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,JavaWeb学习点此跳转 本文链接:https://www.cnblogs.com/xdp- ...
- MySQL与DevC++的连接问题
0.引言 MySQL作为当前的一个主流的开源的关系型数据库,受到大家的广泛关注.DevC++也作为一个开源的简单的C++编辑器,有着比VS更简便更快捷的编译.但是目前网上,却很少有对 MySQL连接D ...
- Qt-网易云音乐界面实现-7 消息中心实现,主要是QListWidget 自定义Item 和QTabwidget使用
最近写的有点烦躁, 感觉内容真的很多!很多!很多. 目前真的想知道网易官方在出这款产品是,用了多少人和多长时间. 今天写的这个消息中心,有点糙,只是原理实现了没有完全复制过来,心里有团火,不想写了. ...
- PKCS#7
1.名词解释 数字签名:在ISO7498-2标准中定义为:"附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性 ...
- Hbase基本用法
hbase 一些重要的解释(杂) 访问habse三种方式 访问hbase table中的行,只有三种方式: 1 通过单个row key访问 2 通过row key的range 3 全表扫描 Row k ...
- day16 类
初识面向对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先干什么, 后⼲什么. 基于该思想编写程序就好比在编写一套流 ...
- ubuntu 相关软件设置
软件篇 1. 网易云音乐软件 首先去官网下载网易云音乐客户端linux版,网址:http://music.163.com/#/download,选择linux版本,然后选择ubuntu 16.04(6 ...
- FileZilla-FTP连接失败
状态: 已登录状态: 读取“/”的目录列表...命令: CWD /响应: 250 CWD successful. "/" is current directory.命令: TYPE ...
- init命令详解
基础命令学习目录首页 1.手动输入命令会执行相关操作 #init 0 - 停机(千万不能把initdefault 设置为0 ) #init 1 - 单用户模式 #init 2 - 多用户, ...
- 安装macOS Sierra后怎么找回“任何来源”选项
安装macOS Sierra后,会发现系统偏好设置的“安全与隐私”中默认已经去除了允许“任何来源”App的选项,无法运行一些第三方应用(提示xx.app已经损坏).如果需要恢复允许“任何来源”的选项, ...