567A Lineland Mail
题意:一些城市在一个x轴上,他们之间非常喜欢写信交流。送信的费用就是两个城市之间的距离,问每个城市写一封信给其它城市所花费的最小费用和最大的费用。

没什么好说的。直接做。特判最左边的和最右边的。
其它的最小值在相邻的城市取,最大的在两边的城市与本城市取最大值。

代码:

#include <set>
#include <map>
#include <queue>
#include <stack>
#include <deque>
#include <math.h>
#include <string>
#include <vector>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <functional>
#define mem(a) memset(a,0,sizeof(a));
#define mem_1(a) memset(a,-1,sizeof(a));
#define sf(a) scanf("%d",&a)
#define sff(a,b) scanf("%d%d",&a,&b)
#define sfff(a,b,c) scanf("%d%d%d",&a,&b,&c)
const int INF = 0x7FFFFFFF;
const int MAXN = 201000;
const double PI = acos(-1.0);
const double esp = 1e-10;
using namespace std;
int data[MAXN];
int main()
{
int n;
sf(n);
for(int i=1;i<=n;i++)
{
sf(data[i]);
}
for(int i=1;i<=n;i++)
{
if(i == 1)
printf("%d %d\n",data[2] - data[1],data[n] - data[1]);
else if(i==n)
printf("%d %d\n",data[n] - data[n-1],data[n] - data[1]);
else
printf("%d %d\n",min(data[i+1] - data[i],data[i]-data[i-1]),max(data[i]-data[1],data[n] - data[i]));
}
}

567B Berland National Libray
题意:图书馆进出的时候都要刷卡进去,每个人都有一个ID号。给你一段时间的进出记录,让你算出图书馆的最小容量为多少。

跟模拟几乎相同。注意一下进出时候的容量细节。
代码:

#include <set>
#include <map>
#include <queue>
#include <stack>
#include <deque>
#include <math.h>
#include <string>
#include <vector>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <functional>
#define mem(a) memset(a,0,sizeof(a));
#define mem_1(a) memset(a,-1,sizeof(a));
#define sf(a) scanf("%d",&a)
#define sff(a,b) scanf("%d%d",&a,&b)
#define sfff(a,b,c) scanf("%d%d%d",&a,&b,&c)
const int INF = 0x7FFFFFFF;
const int MAXN = 1010000;
const double PI = acos(-1.0);
const double esp = 1e-10;
using namespace std;
bool flag[MAXN];
int ans,now;
int main()
{
int n,num;
char c;
sf(n);
while(n--)
{
cin >> c;
sf(num);
if(c=='+')
{
flag[num]++;
now++;
if(now>ans) ans = now;
}
else
{
if(flag[num])
{
flag[num] = 0;
now--;
}
else
{
ans++;
}
}
// cout << ans << endl;
}
printf("%d\n",ans);
return 0;
}

567C. Geometric Progression
题意:有一个三岁的小屁孩特别喜欢三个数组成的等差数列。他如今有一组数,特别想知道里面含多少由三个数组成的等比数列,他年纪太小不会算,想难为一下搞ACM的。

注意 能够不连续,可是等比数列在数组中的位置必须是递增的。
思路:遍历数组,对于每个值都把他当做等比数列的中间的值x,对K求余。余数为零时,看(x/k)在该数之前出现了多少次,(x*k)在该数之后出现了多少次,求和就可以。

如今问题转换成,在x之前 x/k,x*k 出现了多少次?
用map数组处理一下左右的数出现了多少次。在遍历数组的时候。每到一个数mapR[x]--;处理完之后mapL[x]++;具体看代码
代码:

#include <set>
#include <map>
#include <queue>
#include <stack>
#include <deque>
#include <math.h>
#include <string>
#include <vector>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <functional>
#define mem(a) memset(a,0,sizeof(a));
#define mem_1(a) memset(a,-1,sizeof(a));
#define sf(a) scanf("%d",&a)
#define sff(a,b) scanf("%d%d",&a,&b)
#define sfff(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define lson l,mid,i<<1
#define rson mid+1,r,i<<1|1
#define LL long long
const int INF = 0x7FFFFFFF;
const int MAXN = 1010000;
const double PI = acos(-1.0);
const double esp = 1e-10;
using namespace std;
map<LL,LL> L;
map<LL,LL> R;
LL data[MAXN];
int main()
{
LL n,k;
scanf("%I64d %I64d",&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%I64d",&data[i]);
R[data[i]]++;
}
LL ans = 0;
for(int i=1;i<=n;i++)
{
R[data[i]]--;
if(data[i]%k==0)
{
ans += L[data[i]/k] * R[data[i]*k];
}
L[data[i]]++;
}
printf("%I64d\n",ans);
return 0;
}

567D. One-Dimensional Battle Ships
题意:又是熟悉的爱丽丝和啵啵。他们在一起玩游戏。简化一下说吧。爱丽丝有K个1*a大小的长方形的木块。不相邻。不相交的放在1~n的方格上。爱丽丝不告诉啵啵他放在了哪里,让啵啵猜。啵啵猜一次。爱丽丝无论啵啵猜中与否。都说“No”,你帮帮啵啵在第几次的时候就能够断定爱丽丝在说谎。问N次无法确定时输出“-1”。
思路:一開始是连续的区间,每猜一次,连续的区间缩小。连续的区间怎么放不下K个小木块都方不下为止,就能够断定她是个小骗子。
我是用set来做的,我想想也能够用线段树来做。用线段树每次来维护区间如今最多还能放下多少下木块,单点更新线段树,可是眼下没能写出来。希望用线段树写出该题的大牛@我,定向您请教。
代码:

#include <set>
#include <map>
#include <queue>
#include <stack>
#include <deque>
#include <math.h>
#include <string>
#include <vector>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <functional>
#define mem(a) memset(a,0,sizeof(a));
#define mem_1(a) memset(a,-1,sizeof(a));
#define sf(a) scanf("%d",&a)
#define sff(a,b) scanf("%d%d",&a,&b)
#define sfff(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define lson l,mid,i<<1
#define rson mid+1,r,i<<1|1
const int INF = 0x7FFFFFFF;
const int MAXN = 1010000;
const double PI = acos(-1.0);
const double esp = 1e-10;
using namespace std;
struct node
{
int l,r;
}temp;
set<int> S;
set<int> :: iterator it,it1,it2,it3;
int main()
{
int n,k,a,m,num,num1,num2,num3;
sfff(n,k,a);
S.clear();
S.insert(0);
S.insert(n+1);
sf(m);
int aim = (n+1) / (a+1);
// cout << aim << endl;
int i = 0;
int flag = 0;
int Be = 0;
int En = n+1;
while(m--)
{
i++;
sf(num);
S.insert(num);
it = S.find(num);
it--;
it1 = it;
it++;
it2 = it;
it++;
it3 = it;
num1 = *it1;
num2 = *it2;
num3 = *it3;
aim -= (num3 - num1 )/(a+1) -((num3 - num2 )/(a+1) + (num2 - num1 )/(a+1));
// cout<< aim << endl;
if(aim < k)
{
flag = 1;
break;
}
}
if(flag) printf("%d\n",i);
else puts("-1"); }

代码都特别短的~~~~

codeforces Round #Pi (div.2) 567ABCD的更多相关文章

  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 ...

随机推荐

  1. SSH框架的简单含义

    典型的J2EE三层结构,分为表现层.中间层(业务逻辑层)和数据服务层.三层体系将业务规则.数据访问及合法性校验等工作放在中间层处理.客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与 ...

  2. 前端基础-HTML简介及发展史

    一 HTML简介 二 HTML发展史 一. HTML简介 用户使用浏览器打开网页看到结果的过程就是:浏览器将服务端的文本文件(即网页文件)内容下载到本地,然后打开显示的过程. 而文本文件的文档结构只有 ...

  3. duplicate symbol _gestureMinimumTranslation in:

    在真机上编译无误,在模拟器上编译报错:duplicate symbol _gestureMinimumTranslation in: /Users/Sam/Library/Developer/Xcod ...

  4. 高性能mysql读后感

    1. 事务里的写操作,四种隔离级别,都会加排他锁. 2. 事务里的读操作,前三种隔离级别,不会加锁,最后一种隔离级别,会加共享锁. 3. 上面的写.读操作,都是隐式加的锁.  可以自己显示对读操作进行 ...

  5. Http报头Accept与Content-Type的区别(转)

    1.Accept属于请求头, Content-Type属于实体头. Http报头分为通用报头,请求报头,响应报头和实体报头. 请求方的http报头结构:通用报头|请求报头|实体报头 响应方的http报 ...

  6. [WPF]绑定到界面的数组不支持调度线程以外对其更改的办法

    [原]WPF编程经常遇到一个问题: 某个数组己绑定到主界面某控件中,然后在后台程序中需要对数组增(减)数据,然后程序就会报错, 程序提示:该类型的CollectionView 不支持从调度程序线程以外 ...

  7. 在java中如何在非servlet的普通类中获取request、response、session

    原文:http://blog.csdn.net/u012255097/article/details/53092628 在spring的普通类中: HttpServletRequest request ...

  8. IIS 日志

    查看工具: Log Parser + Log Parser Studio http://www.microsoft.com/en-us/download/details.aspx?displaylan ...

  9. 修改nvm镜像地址

    最近几个项目切换开发要求Node版本不一样,没法运行.需要用nvm或n等来管理node版本,选谁见仁见智了,反正我选了nvm. 下载个node慢得要死,等半天结果还失败,真是窝火.官方文档又详细过了一 ...

  10. Xamarin.Forms 调用 腾讯地图SDK

    Xamarin.Forms研究了好一段时间了,最近一直在学习中,想尝试一下调用其他的SDK,就如腾讯地图SDK(申请容易). 完成此次项目得感谢以下链接: http://www.cnblogs.com ...