A题:

题目地址:Lineland Mail

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
using namespace std;
typedef long long LL;
const int inf=0x3f3f3f3f;
const double pi= acos(-1.0);
const double esp=1e-6;
const int maxn=1e5+10;
struct node
{
int id;
int value;
int Max;
int Min;
}q[maxn];
int cmp(struct node a,struct node b)
{
return a.value<b.value;
}
int cmp1(struct node a,struct node b)
{
return a.id<b.id;
}
int main()
{
int n,i;
while(~scanf("%d",&n)){
for(i=1;i<=n;i++){
scanf("%d",&q[i].value);
q[i].id=i;
q[q[i].id].Max=0;
q[q[i].id].Min=0;
}
sort(q+1,q+n+1,cmp);
for(i=1;i<=n;i++){
if(i==1){
q[i].Min=abs(q[1].value-q[2].value);
q[i].Max=abs(q[n].value-q[1].value);
}
else if(i==n){
q[i].Min=abs(q[n].value-q[n-1].value);
q[i].Max=abs(q[n].value-q[1].value);
}
else{
q[i].Min=min(abs(q[i].value-q[i-1].value),abs(q[i+1].value-q[i].value));
q[i].Max=max(abs(q[i].value-q[1].value),abs(q[n].value-q[i].value));
}
}
sort(q+1,q+1+n,cmp);
for(i=1;i<=n;i++){
printf("%d %d\n",q[i].Min,q[i].Max);
}
}
return 0;
}

B题:

题目地址:Berland National Library

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
using namespace std;
typedef long long LL;
const int inf=0x3f3f3f3f;
const double pi= acos(-1.0);
const double esp=1e-6;
const int maxn=110;
const int maxn1=1e6+10;
char str[10];
int a;
int vis[maxn1];
int main()
{
int n;
int cnt1,cnt2;
while(~scanf("%d",&n)){
memset(vis,0,sizeof(vis));
cnt1=cnt2=0;
for(int i=0;i<n;i++){
scanf("%s %d",&str,&a);
if(str[0]=='+'){
cnt1++;
vis[a]=1;
cnt2=max(cnt1,cnt2);
}
else{
if(!vis[a]){
cnt2++;
}
else{
vis[a]=0;
cnt1--;
}
}
}
printf("%d\n",cnt2);
}
return 0;
}

C题:

题目地址:Geometric Progression

题意:求一个序列中形成以k为公比。项数为3的等比数列的种类数。

思路:在这里我用map开了一个dp[i][j]数组,记录长度为i的以j结尾的数字有多少种。所以我们非常easy得出dp[i][j]+=dp[i-1][j/k],dp[1][j]=1。由于我在程序中是用x%k维护的,所以要倒推。由于数据问题map不要开map

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
using namespace std;
typedef long long LL;
const int inf=0x3f3f3f3f;
const double pi= acos(-1.0);
const double esp=1e-6;
const int maxn=200010;
LL a[maxn];
int main()
{
map<LL,LL> dp[4];
int n,k,i;
LL ans;
while(~scanf("%d %d",&n,&k)){
ans=0;
for(i=0;i<4;i++)
dp[i].clear();
for(i=1;i<=n;i++)
scanf("%lld",&a[i]);
for (i=1;i<=n;i++){
if(a[i]%k==0){
dp[3][a[i]]+=dp[2][a[i]/k];
dp[2][a[i]]+=dp[1][a[i]/k];
}
dp[1][a[i]]++;
}
map<LL,LL>::iterator it;
for (it=dp[3].begin();it!=dp[3].end();it++)
ans+=it->second;
printf("%lld\n",ans);
}
return 0;
}

D题:

题目地址:One-Dimensional Battle Ships

题意:给定一个区间。每次除去一个点,要求在剩下的空白里能放下。k个长为a的区间(a区间不能相离)。

假设能放下,则输出-1。否则的话输出在去处第几个点的时候不能放下。

思路:区间[l,r]每次去除一个点x,则当前剩下的区间为[l,x-1],[x+1,r]。然后找每一个区间能够放下的船数:(区间长度+1)/(船的长度+1){由于船和船之间相离,所以除以的是船的长度+1}。

二分答案去找第几个点让放的船数不足k。

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <sstream>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
using namespace std;
typedef long long LL;
const int inf=0x3f3f3f3f;
const double pi= acos(-1.0);
const double esp=1e-6;
const int maxn=200010;
int x[maxn];
int x1[maxn];
int n,k,a,m;
int cnt;
int Find(int m)
{
for(int i=1;i<=m;i++)
x1[i]=x[i];
sort(x1+1,x1+m+1);
int len=0;
cnt=0;
for(int i=1;i<=m;i++){
cnt+=(x1[i]-len)/(a+1);
len=x1[i];
}
cnt+=(n+1-len)/(a+1);
if(cnt>=k)
return 1;
else
return 0;
}
int main()
{
scanf("%d %d %d",&n,&k,&a);
scanf("%d",&m);
for(int i=1;i<=m;i++)
scanf("%d",&x[i]);
int l=1,r=m;
int mid;
int res=inf;
while(l<=r){
mid=(l+r)>>1;
if(Find(mid)) l=mid+1;
else {r=mid-1;
res=min(res,mid);
}
}
//printf("mid==%d\n",mid);
//printf("L==%d\n",l);
if(l>m)
puts("-1");
else
printf("%d\n",res);
}

Codeforces Round #Pi (Div. 2)(A,B,C,D)的更多相关文章

  1. map Codeforces Round #Pi (Div. 2) C. Geometric Progression

    题目传送门 /* 题意:问选出3个数成等比数列有多少种选法 map:c1记录是第二个数或第三个数的选法,c2表示所有数字出现的次数.别人的代码很短,思维巧妙 */ /***************** ...

  2. 构造 Codeforces Round #Pi (Div. 2) B. Berland National Library

    题目传送门 /* 题意:给出一系列读者出行的记录,+表示一个读者进入,-表示一个读者离开,可能之前已经有读者在图书馆 构造:now记录当前图书馆人数,sz记录最小的容量,in数组标记进去的读者,分情况 ...

  3. Codeforces Round #Pi (Div. 2) D. One-Dimensional Battle Ships set乱搞

    D. One-Dimensional Battle ShipsTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/con ...

  4. Codeforces Round #Pi (Div. 2) C. Geometric Progression map

    C. Geometric Progression Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...

  5. Codeforces Round #Pi (Div. 2) B. Berland National Library set

    B. Berland National LibraryTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest ...

  6. Codeforces Round #Pi (Div. 2) A. Lineland Mail 水

    A. Lineland MailTime Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/567/proble ...

  7. Codeforces Round #Pi (Div. 2) E. President and Roads 最短路+桥

    题目链接: http://codeforces.com/contest/567/problem/E 题意: 给你一个带重边的图,求三类边: 在最短路构成的DAG图中,哪些边是必须经过的: 其他的(包括 ...

  8. Codeforces Round #Pi (Div. 2) E. President and Roads tarjan+最短路

    E. President and RoadsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/567 ...

  9. Codeforces Round #Pi (Div. 2) D. One-Dimensional Battle Ships set区间分解

    D. One-Dimensional Battle ShipsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/co ...

  10. Codeforces Round #Pi (Div. 2) B. Berland National Library 模拟

    B. Berland National LibraryTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...

随机推荐

  1. android手机导入.cer证书文件的方法

    访问很多https协议的网站需要安装证书,手机也可以导入cer文件,你知道么?本文将通过简单的两步告诉你手机安装cer文件的方法. 步骤一:请先将数字证书文件“******.cer”文件复制到SD卡的 ...

  2. weblogic服务目录迁移记录

    weblogic服务,由于前期的规划不好,导致后期有点问题!为了更加规范运行服务及执行相关操作,故进行服务迁移... 先决条件:weblogic都是单个aminserver运行的,单个服务 问题解决: ...

  3. Office2013中文激活版

    国内的WPS专业版也是很不错的,习惯的Office.office2013很不错的办公利器 00.PPT 01.Word 02.Excel Download: 链接: https://pan.baidu ...

  4. Spring Boot 使用Jar打包发布, 并使用 Embedded Jetty/Tomcat 容器

    Jar包发布 在项目pom.xml中, 如果继承了Spring Boot的starter parent, 那么默认已经包含打包需要的plugins了, 设置为jar就能直接打包成包含依赖的可执行的ja ...

  5. ios中GDataXML解析XML文档

    参考文章 http://blog.csdn.net/ryantang03/article/details/7868246 适合解析一个节点多个属性要用GDataXml 格式如下 <?xml ve ...

  6. spring 自动装配 default-autowire=&quot;byName/byType&quot;

    <PRE class=html name="code">spring 自动装配 default-autowire="byName/byType"   ...

  7. keras embeding设置初始值的两种方式

    随机初始化Embedding from keras.models import Sequential from keras.layers import Embedding import numpy a ...

  8. JavaScript indexOf() 方法详解

    定义和用法 indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置. 语法 stringObject.indexOf(searchvalue,fromindex) 参数 描述 sea ...

  9. Spring 3.0 AOP 之 AOP 术语 (一)

    关于AOP.之前我已写过一个系列的随笔: <自己实现简单的AOP>,它的关注点在于实现.实现语言是C#,实现方式为 自定义实现 RealProxy 抽象类.重写Invoke方法,以便进行方 ...

  10. error nr.1045 access denied for user 'root'@'localhost' (using passwd:no)

    在windows上卸载了mysql,再次重新安装的时候运行失败,并报以下错误: 解决办法: 1.服务里面停止Mysql服务. 2.卸载Mysql,删除MySQL的安装目录. 3.此外还要删除以下目录的 ...