codeforces Round #Pi (div.2) 567ABCD

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");

}

代码都特别短的~~~~

转载于:https://www.cnblogs.com/llguanli/p/8676631.html

基于SSM框架的智能家政保洁预约系统,是一个旨在提高家政保洁服务预约效率和管理水平的平台。该系统通过集成现代信息技术,为家政公司、家政服务人员和消费者提供了一个便捷的在线预约和管理系统。 系统的主要功能包括: 1. **用户管理**:允许消费者注册、登录,并管理他们的个人资料和预约历史。 2. **家政人员管理**:家政服务人员可以注册并更新自己的个人信息、服务类别和服务时间。 3. **服务预约**:消费者可以浏览不同的家政服务选项,选择合适的服务人员,并在线预约服务。 4. **订单管理**:系统支持订单的创建、跟踪和管理,包括订单的确认、完成和评价。 5. **评价系统**:消费者可以在家政服务完成后对服务进行评价,帮助提高服务质量和透明度。 6. **后台管理**:管理员可以管理用户、家政人员信息、服务类别、预约订单以及处理用户反馈。 系统采用Java语言开发,使用MySQL数据库进行数据存储,通过B/S架构实现用户与服务的在线交互。系统设计考虑了不同用户角色的需求,包括管理员、家政服务人员和普通用户,每个角色都有相应的权限和功能。此外,系统还采用了软件组件化、精化体系结构、分离逻辑和数据等方法,以便于未来的系统升级和维护。 智能家政保洁预约系统通过提供一个集中的平台,不仅方便了消费者的预约和管理,也为家政服务人员提供了一个展示和推广自己服务的机会。同时,系统的后台管理功能为家政公司提供了强大的数据支持和决策辅助,有助于提高服务质量和管理效率。该系统的设计与实现,标志着家政保洁服务向现代化和网络化的转型,为管理决策和控制提供保障,是行业发展中的重要里程碑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值