Airport Announcements(NEERC 2011 Eastern Subregional)

经过五个小时的努力,终于解决了ACM编程挑战中的AirportAnnouncements难题。该题涉及字符串处理与算法优化,通过反复调试实现了不同语言广播次数的有效统计。
      可恶的Airport Announcements(http://acm.timus.ru/problem.aspx?space=1&num=1889 ),终于AC了,加上下午训练赛的三个小时,总共5个小时啊。期间,WA四次,竟然还CE了一次,是忘了加头文件了......还是自己的编程习惯不好.......直接导致我以为是string提交不可以,改回来了原始的char[],不过还在这样修改过后AC了.......发现忘了加头文件之后,加上头文件,也AC了,终于皆大欢喜了!


      终于可以安心睡觉了,为即将到来的明天的骑行之旅庆祝!

     

#define MAXN 1002
#include <iostream>
#include <string.h>
#include <string>
 
using namespace std;
 
string str[MAXN],strtem[MAXN];
int cnt[MAXN],cntnum=1;
 
void solve()
{
    int n,i,k,g,j,r,l=0,counter=0,m;
    bool flag1,flag2,flag=false;
    cin >> n;
    for(i=1;i<=n;i++){
       cin>>str[i];
       if(str[i]=="unknown") flag=true;
       for(j=1;j<=l;j++)
          if(strtem[j]==str[i]) break;
       if(j>l && str[i]!="unknown"){  //统计不同语言的数目
              strtem[++l]=str[i];
              counter++;
       }
    }
    //cout<<"counter="<<counter<<endl;
    if(counter==0) { for(i=1;i<=n;i++)  if(n%i==0)  cnt[cntnum++]=i; } //全部是unknown的情况
    else if(counter==1 && !flag) { cnt[cntnum++]=1;}  //全部是一种语言的情况
    else{
    for(i=counter;i<=n;i++)
    {
        flag1=true;flag2=true;
        if(n%i)  continue;
        m=n/i;
 
        for(j=0;j<i;j++)
        {
            for(k=j*m+1;k<=(j+1)*m;k++){    //在每组内部进行判断是否有不同的语言
               for(g=k+1;g<=(j+1)*m;g++){
                  if(str[g]!=str[k] && str[k]!="unknown" && str[g]!="unknown" ){
                      flag1=false;break;
                  }
               }
               if(!flag1) break;
            }
            //if(flag1) cout<<"i="<<i<<"  nihao "<<endl;
            //cout<<""
            if(j<i-1)  //判断各组之间是否有相同的语言
            {
                for(k=j*m+1;k<=(j+1)*m;k++)
                   for(r=j+1;r<i;r++){
                      for(g=r*m+1;g<=(r+1)*m;g++){
                         if(str[g]==str[k] && str[k]!="unknown"){
                           flag2=false;break;
                     }
                   }
                   if(!flag2) break;
                }
                if(!flag2) break;
            }
        }
        if(flag1&&flag2) cnt[cntnum++]=i; //两种情况同时成立,储存下来
    }
    }
 
    if(cntnum==1)
        cout<<"Igor is wrong."<<endl;
    else
    {
        for(i=1;i<cntnum-1;i++)
           cout<<cnt[i]<<" ";
        cout<<cnt[cntnum-1]<<endl;
    }
}
 
int main()
{
    solve();
    return 0;
}

 

部分测试数据:

4

unknown
unknown
unknown
unknown

Answer: 1 2 4

2
unknown
unknown

Answer: 1 2


12
A
B
unknown
unknown
unknown
unknown
unknown
unknown
unknown
unknown
unknown
unknown

Answer: 12


4
A
B
C
D

Answer: 4

8
A
A
B
B
unknown
unknown
unknown
unknown

Answer: 4


6
A
A
B
B
unknown
unknown

Answer: 3

6
unknown
A
A
B
unknown
B

Answer: 2

6
A
unknown
unknown
A
unknown
unknown

Answer: 1

6
A
unknown
A
unknown
unknown
unknown

Answer: 1 2


4
A
A
A
B
Answer: Igor is wrong.

内容概要:本文围绕基于风光储能和需求响应的微电网日前经济调度问题,提出了一套完整的Python代码实现方案。研究综合考虑风能、光伏等可再生能源的出力不确定性、储能系统的动态充放电特性以及需求侧响应机制,构建了以最小化系统综合运行成本为目标的优化调度模型。该模型充分体现了对可再生能源的高效消纳、系统经济性提升与供需平衡调控的能力,通过Python编程结合优化求解器实现了模型的求解与仿真验证,为微电网能量管理系统的设计与科研分析提供了可复现的技术路径与实践参考。; 适合人群:具备一定Python编程基础和电力系统优化调度知识的科研人员、工程技术人员及高校电气工程、能源系统等相关专业的研究生。; 使用场景及目标:①应用于微电网、智能配电网及综合能源系统的科研建模与仿真分析;②帮助读者深入理解含高比例可再生能源的电力系统日前调度建模方法、目标函数构造与约束条件处理技巧;③为实际工程中实现低碳、经济、可靠的微电网运行提供算法支持与决策依据。; 阅读建议:建议读者结合文档中的代码实例,系统学习优化模型的数学表达与编程实现过程,重点关注变量定义、目标函数构建、系统约束(如功率平衡、储能动态、机组出力等)的编码实现,并尝试调整负荷、新能源出力等输入数据进行多场景仿真,以深入掌握微电网调度策略的灵敏度分析与优化效果评估方法。
### Spring源码面试终结者:31道核心题,源码级拆解IOC与AOP 这份资源不是“面试八股文”,而是对Spring、Spring Boot核心原理的**源码级深度拆解**。网上面试题答案大多浮于表面,无法应对面试官的连环追问。我结合源码阅读和实战踩坑,整理了这份**近10万字的硬核指南**,系统梳理了大厂面试中最棘手的31道Spring核心题。 **【资源核心内容】** - **IOC与DI王者解析**:深入BeanFactory与ApplicationContext层级设计,对比三种依赖注入方式,并用图文拆解三级缓存解决循环依赖的源码流程。 - **AOP与事务底层原理**:彻底讲透动态代理选择策略,深度分析@Transactional失效的10大经典场景及源码级解决方案。 - **Spring MVC与自动装配**:从DispatcherServlet的9大组件到SpringBoot的SPI机制,理清自动配置的完整加载链路。 - **高频追问与满分话术**:每道题配有“低分vs高分回答”对比,帮你精准拿捏面试官想要的“源码级理解”。 **【特色】** 拒绝罗列概念,每道题都从“核心考点”出发,深入到AbstractApplicationContext、TransactionInterceptor等Spring源码,帮助你在理解设计思想的同时,具备手写简易IOC容器的能力。 **【适合谁看】** 备战阿里、字节、美团等大厂面试的Java开发;对Spring原理一知半解,想系统提升源码阅读能力的开发者;希望从“会用”进阶到“懂原理”的技术人。 希望这份整理能帮你构建完整的Spring知识体系,轻松应对面试官的灵魂追问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值