NOIP 2017 时间复杂度 (模拟)

题目大意:略

傻了吧唧的我wa了好几次

我的模拟功底真的不咋地

linux下用gets会报错,我用的fgets

 1 #include <string>
 2 #include "stdio.h"
 3 #include <cstring>
 4 #include <iostream>
 5 #include <algorithm>
 6 #define ll long long 
 7 #define N 1010
 8 #define rint register int
 9 #define ll long long 
10 #define il inline
11 #define idx(x) (x-'a'+1)
12 #define idg(x) (x-'0')
13 using namespace std;
14 //re
15 int T,n,cnt,j;
16 int use[30];
17 char str[110][20];
18 inline bool isdig(char c)
19 {return ('0'<=c&&c<='9')?1:0;}
20 int dfs()
21 {
22     int ans=0,now=j,val=0,cal=0;
23     if(str[j][0]=='E') return -1;
24     if(str[j][0]=='F')
25     {
26         if(use[idx(str[j][2])])
27             return -1;
28         use[idx(str[j][2])]=1;
29         while(str[j+1][0]=='F')
30         {
31             j++,cal=dfs();
32             if(cal==-1) return -1;
33             ans=max(ans,cal);
34         }  
35         int k=4;
36         while(isdig(str[now][k]))
37             val=val*10+idg(str[now][k]),k++; 
38         k++;
39         if(str[now][4]=='n'){
40             if(str[now][6]!='n') ans=0;
41         }else if(!isdig(str[now][k])){
42             ans++;
43         }else{
44             int w=0;
45             while(isdig(str[now][k]))
46                 w=w*10+idg(str[now][k]),k++;
47             if(val>w) ans=0;
48         }
49     }
50     use[idx(str[now][2])]=0;
51     j++;
52     if(str[j][0]!='E') return -1;
53     else return ans;
54 }
55 
56 int main()
57 {
58     //freopen("complexity6.in","r",stdin);
59     scanf("%d",&T);
60     for(int t=1;t<=T;t++)
61     {
62         int q=0;
63         scanf("%d",&n);
64         memset(str,0,sizeof(str));
65         memset(use,0,sizeof(use));
66         scanf("%s\n",str[0]);
67         for(int i=1;i<=n;i++)
68             fgets(str[i],20,stdin);
69         int ret=0,ans=0;j=1;
70         for(;j<=n;j++){
71             ans=dfs();
72             if(ans==-1){ret=-1;printf("ERR\n");break;}
73             else {ret=max(ret,ans);}
74         }
75         if(ret==-1) continue;
76         int k=0,flag=0;
77         while(1){
78             if(str[0][k]=='n') flag=1;
79             if(!isdig(str[0][k]))
80                 {k++;continue;}
81             while(isdig(str[0][k]))
82                 q=q*10+idg(str[0][k]),k++;
83             break;
84         }
85         if(flag==0) q=0;
86         if(ret==q) printf("Yes\n");
87         else printf("No\n");
88     }
89     return 0;
90 }

 

转载于:https://www.cnblogs.com/guapisolo/p/9734137.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、付费专栏及课程。

余额充值