hdu 5071 Chat

本文介绍了一种用于处理特定需求的模拟算法实现。该算法使用C++编写,通过多种数据结构如列表和映射来模拟操作过程,包括优先级调整、添加、聊天等操作,并记录最终状态。

        题意:。。。。。。帮自恋的CLJ处理各种蛋疼需求。

        思路:模拟。。。。。。


#include <iostream>       
#include <stdio.h>       
#include <cmath>       
#include <algorithm>       
#include <iomanip>       
#include <cstdlib>       
#include <string>       
#include <string.h>       
#include <vector>       
#include <queue>       
#include <stack>       
#include <map>     
#include <set>     
#include <list>
#include <ctype.h>       
#include <sstream>   
#define INF 1000000000   
#define LL long long   
#define min3(a,b,c) min(a,min(b,c))
#define max3(a,b,c) max(a,max(b,c))

using namespace std;

list<int> List;
map<int, LL> Map;

int main(){

    int t;
    cin>>t;
    while(t--){
        List.clear();
        Map.clear();

        int n;
        cin>>n;

        int flag=-1;  //总在最前 

        for(int _=1; _<=n; ++_) {
            string op;
            cin >> op;
            printf("Operation #%d: ", _); 

            if(op == "Prior"){ //Prior
                if(List.empty()){
                    printf("empty.\n");
                }else{
                    map<int,LL>::iterator it=Map.end();
                    it--;
                    int tmp=it->first;

                    for(list<int>::iterator it=List.begin();it!=List.end();it++){
                        if(*it==tmp){
                            List.remove(*it);
                            List.push_front(tmp);
                            break;
                        }
                    }
                    printf("success.\n");

                }
            }else if(op == "Add"){  //Add
                int u;
                scanf("%d",&u);
                if(Map.count(u)){
                    printf("same priority.\n");
                }else{
                    List.push_back(u);
                    Map[u]=0;
                    printf("success.\n");
                }
            }else if(op == "Chat"){ //Chat
                int w;
                scanf("%d",&w);
                if(List.empty()){
                    printf("empty.\n");
                }else{
                    if(flag!=-1){
                        Map[flag]+=w;
                    }else{
                        int cur=*List.begin();
                        Map[cur]+=w;
                    }
                    printf("success.\n");

                }
            }else if(op == "Top"){  //Top
                int u;
                scanf("%d",&u);
                if(Map.count(u)){
                    flag=u;
                    printf("success.\n");
                }else{
                    printf("invalid priority.\n");
                }
            }else if(op == "Untop"){ //Untop
                if(flag==-1){
                    printf("no such person.\n");
                }else{
                    flag=-1;
                    printf("success.\n");
                }
            }else if(op == "Rotate"){  //Rotate
                int x;
                scanf("%d",&x);
                if(x<1|| x>List.size()) {
                    printf("out of range.\n");
                }else{
                    int tmp=0;
                    for(list<int>::iterator it=List.begin();it!=List.end();it++){
                        tmp++;
                        if(tmp==x){
                            x=*it;
                            List.remove(*it);

                            List.push_front(x);
                            break;
                        }
                    }
                    printf("success.\n");
                }
            }else if(op == "Close") {
                int u;
                scanf("%d",&u);
                if(Map.count(u)){
                    cout << "close " << u << " with " << Map[u] << "." << endl;
                    for(list<int>::iterator it=List.begin();it!=List.end();it++){
                        if(*it==u){
                            List.remove(*it);
                            break;
                        }
                    }
                    Map.erase(u);
                }else{
                    puts("invalid priority.");
                }
            }else if(op == "Choose") {
                int u;
                scanf("%d",&u);
                if(Map.count(u)){
                    for(list<int>::iterator it=List.begin();it!=List.end();it++){
                        if(*it==u){
                            List.remove(*it);
                            List.push_front(u);
                            break;
                        }
                    }
                    puts("success.");
                }else{
                    puts("invalid priority.");
                }
            }
        }

        int last=-1;
        if(flag!=-1){
            last=flag;
        }else{
            if(!List.empty())
                last=*List.begin();
        }
        if(last!=-1&&Map[last]!=0) {
            cout<<"Bye "<<last<<": "<<Map[last]<<endl;
        }
        for(list<int>::iterator it=List.begin();it!=List.end();it++){
            if(last==*it)
                continue;
            if(Map[*it]>0) {
                cout<<"Bye "<<*it<<": "<<Map[*it]<<endl;
            }
        }
    }
    return 0;
}




多源动态最优潮流的分布鲁棒优化方法(IEEE118节点)(Matlab代码实现)内容概要:本文介绍了基于Matlab代码实现的多源动态最优潮流的分布鲁棒优化方法,适用于IEEE118节点电力系统。该方法结合两阶段鲁棒模型与确定性模型,旨在应对电力系统中多源输入(如可再生能源)的不确定性,提升系统运行的安全性与经济性。文中详细阐述了分布鲁棒优化的建模思路,包括不确定性集合的构建、目标函数的设计以及约束条件的处理,并通过Matlab编程实现算法求解,提供了完整的仿真流程与结果分析。此外,文档还列举了大量相关电力系统优化研究案例,涵盖微电网调度、电动汽车集群并网、需求响应、储能配置等多个方向,展示了其在实际工程中的广泛应用价值。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事能源系统优化工作的工程师。; 使用场景及目标:①用于研究高比例可再生能源接入背景下电力系统的动态最优潮流问题;②支撑科研工作中对分布鲁棒优化模型的复现与改进;③为电力系统调度、规划及运行决策提供理论支持与仿真工具。; 阅读建议:建议读者结合提供的Matlab代码与IEEE118节点系统参数进行实操演练,深入理解分布鲁棒优化的建模逻辑与求解过程,同时可参考文中提及的其他优化案例拓展研究思路。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值