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访问失败.. 后来好不容易能上了,两三分钟才 ...
随机推荐
- allure2 report+ jenkins 使用
物色了一个挺漂亮的报告生成插件 ——allure. 下面介绍一下这个报告的使用. 1. 添加依赖 <dependencies> <!-- https://mvnrepository. ...
- 将exe依赖运行的dll,合并入exe中,整个程序仅存在一个exe文件
方法一: 使用ILMerge合并winform生成的exe和引用的dll文件 参考:https://blog.csdn.net/u010108836/article/details/76782375 ...
- Maven仓库 - 分发构件至远程仓库
分发构件至远程仓库 mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库.本地Maven仓库的构件只能供当前用户使 ...
- Andorid Studio 模块化开发相关配置
Andorid Studio 模块化开发相关配置 下面以宿主APP模块和Uer_Module模块为例: 第一步:在项目根目录gradle.properties配置文件中添加如下代码 isNeedUse ...
- opengl绘制三角形
顶点数组对象:Vertex Array Object,VAO 顶点缓冲对象:Vertex Buffer Object,VBO 索引缓冲对象:Element Buffer Object,EBO或Inde ...
- 【厚积薄发】Crunch压缩图片的AssetBundle打包
这是第133篇UWA技术知识分享的推送.今天我们继续为大家精选了若干和开发.优化相关的问题,建议阅读时间10分钟,认真读完必有收获. UWA 问答社区:answer.uwa4d.com UWA QQ群 ...
- linux上的mysql配置过程
自己阿里云上的服务器,记录下mysql的配置过程防止后面忘记 1. 首先用apt-get工具安装mysql sudo apt-get install mysql-server sudo apt-get ...
- python 根据年月日,计算是这一年中的第几天
利用python计算某一天是这一年中的第几天,例如,给定年份= 2019年,月份= 1,日期= 3,则返回3:因为2019-01-03日期是2019年的第3 天. 首先,我们要知道闰年.平年怎么区分: ...
- Erlang数据类型的表示和实现(3)——列表
列表 Erlang 中的列表是通过链表实现的,表示列表的 Eterm 就是这个链表的起点.列表 Eterm 中除去 2 位标签 01 之外,剩下的高 62 位表示指向列表中第一个元素的指针的高 62 ...
- 2017年10月WEB前端开发实习生面试题总结
从大一开始学习前端,今年大三,10月份开始投简历,陆续收到很多家公司的面试,目前为止的面试通过率是百分之百,总结下面试题. 不定期更新中... 百度第一次 一面 1.AJAX流程 2.promise简 ...