2019沈阳网选——模拟

  1 #include <bits/stdc++.h>
  2 using namespace std;
  3 
  4 struct Node{
  5     string name;
  6     int straight;
  7     pair<int,int> four;
  8     pair<int,int> full;
  9     pair<int,int> three;
 10     pair<pair<int,int>,int> twopair;
 11     pair<int,int> pairr;
 12     int handcard;
 13 }a[100005];
 14 
 15 bool cmp(Node a,Node b){
 16     if(a.straight == b.straight){
 17         if(a.four.first == b.four.first){
 18             if(a.four.second == b.four.second){
 19                 if(a.full.first == b.full.first){
 20                     if(a.full.second == b.full.second){
 21                         if(a.three.first == b.three.first){
 22                             if(a.three.second == b.three.second){
 23                                 if(a.twopair.first.first == b.twopair.first.first){
 24                                     if(a.twopair.first.second == b.twopair.first.second){
 25                                         if(a.twopair.second == b.twopair.second){
 26                                             if(a.pairr.first == b.pairr.first){
 27                                                 if(a.pairr.second == b.pairr.second){
 28                                                     if(a.handcard == b.handcard){
 29                                                         return a.name < b.name;
 30                                                     }
 31                                                     return a.handcard > b.handcard;
 32                                                 }
 33                                                 return a.pairr.second > b.pairr.second;
 34                                             }
 35                                             return a.pairr.first > b.pairr.first;
 36                                         }
 37                                         return a.twopair.second > b.twopair.second;
 38                                     }
 39                                     return a.twopair.first.second > b.twopair.first.second;
 40                                 }
 41                                 return a.twopair.first.first > b.twopair.first.first;
 42                             }
 43                             return a.three.second > b.three.second;
 44                         }
 45                         return a.three.first > b.three.first;
 46                     }
 47                     return a.full.second > b.full.second;
 48                 }
 49                 return a.full.first > b.full.first;
 50             }
 51             return a.four.second > b.four.second;
 52         }
 53         return a.four.first > b.four.first; ;
 54     }
 55     return a.straight > b.straight;
 56 }
 57 
 58 
 59 int n;
 60 int main()
 61 {
 62     while(~scanf("%d",&n)){
 63         for(int ii = 0;ii < n;ii ++){
 64             cin >> a[ii].name;
 65             a[ii].straight = -1;
 66             a[ii].four = make_pair(-1,-1);
 67             a[ii].full = make_pair(-1,-1);
 68             a[ii].three = make_pair(-1,-1);
 69             a[ii].twopair = make_pair(make_pair(-1,-1),-1);
 70             a[ii].pairr = make_pair(-1,-1);
 71             a[ii].handcard = -1;
 72             string p;cin >> p;
 73             int vis[17];
 74             memset(vis,0,sizeof(vis));
 75             for(int j = 0;j < p.size();j ++){
 76                 if(p[j] == '1'){vis[10] ++;}
 77                 if(p[j] == '0'){continue;}
 78                 if(p[j] == 'A'){vis[14] ++;vis[1] ++;}
 79                 if(p[j] == 'J'){vis[11] ++;}
 80                 if(p[j] == 'Q'){vis[12] ++;}
 81                 if(p[j] == 'K'){vis[13] ++;}
 82                 if(p[j] >= '2' && p[j] <= '9'){
 83                     vis[p[j] - '0'] ++;
 84                 }
 85             }
 86 
 87             for(int i = 1;i <= 10;i ++){///str
 88                 if(vis[i] && vis[i+1] && vis[i+2] && vis[i+3] && vis[i+4]){
 89                     a[ii].straight = i;break;
 90                 }
 91             }
 92             if(a[ii].straight != -1){continue;}
 93 
 94             for(int i = 1;i < 14;i ++){///four
 95                 if(vis[i] == 4){
 96                     a[ii].four.first = i;break;
 97                 }
 98             }
 99             for(int i = 1;i < 14;i ++){
100                 if(vis[i] == 1){
101                     a[ii].four.second = i;break;
102                 }
103             }
104             if(a[ii].four.second != -1 && a[ii].four.first != -1){continue;}
105             else{a[ii].four = make_pair(-1,-1);}
106 
107             for(int i = 1;i < 14;i ++){///full
108                 if(vis[i] == 3){
109                     a[ii].full.first = i;break;
110                 }
111             }
112             for(int i = 1;i < 14;i ++){
113                 if(vis[i] == 2){
114                     a[ii].full.second = i;break;
115                 }
116             }
117             if(a[ii].full.second == -1 || a[ii].full.first == -1){a[ii].full = make_pair(-1,-1);}
118             else{continue;}
119 
120             for(int i = 1;i < 14;i ++){///three
121                 if(vis[i] == 3){
122                     a[ii].three.first = i;break;
123                 }
124             }
125             int cnt = 0;
126             for(int i = 1;i < 14;i ++){
127                 if(vis[i] == 1){
128                     cnt += i;
129                 }
130             }
131             a[ii].three.second = cnt;
132             if(a[ii].three.second != -1 && a[ii].three.first != -1){continue;}
133             else{a[ii].three = make_pair(-1,-1);}
134 
135             cnt = 0;int sum = 0;
136             for(int i = 13;i >= 1;i --){///two p
137                 if(vis[i] == 2){
138                     if(a[ii].twopair.first.first != -1){
139                         cnt ++;a[ii].twopair.first.second = i;
140                     }
141                     else {a[ii].twopair.first.first = i;cnt ++;}
142                 }
143                 else if(vis[i] == 1){sum += i;}
144             }
145             if(cnt == 2){a[ii].twopair.second = sum;continue;}
146             else{a[ii].twopair = make_pair(make_pair(-1,-1),-1);}
147 
148             sum = 0;
149             for(int i = 13;i >= 1;i --){///pair
150                 if(vis[i] == 2){
151                     a[ii].pairr.first = i;
152                 }
153                 else if(vis[i] == 1){
154                     sum += i;
155                 }
156             }
157             if(a[ii].pairr.first != -1){a[ii].pairr.second = sum;continue;}
158             else{a[ii].pairr = make_pair(-1,-1);}
159 
160             sum = 0;
161             for(int i = 13;i >= 1;i --){///hand
162                 if(vis[i] == 1){
163                     sum += i;
164                 }
165             }
166             a[ii].handcard = sum;
167         }
168         for(int i = 0;i < n;i ++){
169             cout << a[i].name + " :" << endl;
170             cout << "str : " << a[i].straight << endl;
171             cout << "four : " << a[i].four.first << " " << a[i].four.second << endl;
172             cout << "full : " << a[i].full.first << " " << a[i].full.second << endl;
173             cout << "three : " << a[i].three.first << " " << a[i].three.second << endl;
174             cout << "twopa : " << a[i].twopair.first.first << " " << a[i].twopair.first.second << " " << a[i].twopair.second << endl;
175             cout << "pair : " << a[i].pairr.first << " " << a[i].pairr.second << endl;
176             cout << "hand : " << a[i].handcard << endl;
177         }
178         sort(a,a + n,cmp);
179         for(int i = 0;i < n;i ++){
180             cout << a[i].name << endl;
181         }
182     }
183     return 0;
184 }

 

转载于:https://www.cnblogs.com/love-fromAtoZ/p/11519576.html

C语言-光伏MPPT算法:电导增量法扰动观察法+自动全局搜索Plecs最大功率跟踪算法仿真内容概要:本文档主要介绍了一种基于C语言实现的光伏最大功率点跟踪(MPPT)算法,结合电导增量法与扰动观察法,并引入自动全局搜索策略,利用Plecs仿真工具对算法进行建模与仿真验证。文档重点阐述了两种经典MPPT算法的原理、优缺点及其在不同光照和温度条件下的动态响应特性,同时提出一种改进的复合控制策略以提升系统在复杂环境下的跟踪精度与稳定性。通过仿真结果对比分析,验证了所提方法在快速性和准确性方面的优势,适用于光伏发电系统的高效能量转换控制。; 适合人群:具备一定C语言编程基础和电力电子知识背景,从事光伏系统开发、嵌入式控制或新能源技术研发的工程师及高校研究人员;工作年限1-3年的初级至中级研发人员尤为适合。; 使用场景及目标:①掌握电导增量法与扰动观察法在实际光伏系统中的实现机制与切换逻辑;②学习如何在Plecs中搭建MPPT控制系统仿真模型;③实现自动全局搜索以避免传统算法陷入局部峰值问题,提升复杂工况下的最大功率追踪效率;④为光伏逆变器或太阳能充电控制器的算法开发提供技术参考与实现范例。; 阅读建议:建议读者结合文中提供的C语言算法逻辑与Plecs仿真模型同步学习,重点关注算法判断条件、步长调节策略及仿真参数设置。在理解基本原理的基础上,可通过修改光照强度、温度变化曲线等外部扰动因素,进一步测试算法鲁棒性,并尝试将其移植到实际嵌入式平台进行实验验证。
【无人机协同】动态环境下多无人机系统的协同路径规划与防撞研究(Matlab代码实现)​ 内容概要:本文围绕动态环境下多无人机系统的协同路径规划与防撞问题展开研究,提出基于Matlab的仿真代码实现方案。研究重点在于在复杂、动态环境中实现多无人机之间的高效协同飞行与避障,涵盖路径规划算法的设计与优化,确保无人机集群在执行任务过程中能够实时规避静态障碍物与动态冲突,保障飞行安全性与任务效率。文中结合智能优化算法,构建合理的成本目标函数(如路径长度、飞行高度、威胁规避、转弯角度等),并通过Matlab平台进行算法验证与仿真分析,展示多机协同的可行性与有效性。; 适合人群:具备一定Matlab编程基础,从事无人机控制、路径规划、智能优化算法研究的科研人员及研究生。; 使用场景及目标:①应用于灾害救援、军事侦察、区域巡检等多无人机协同任务场景;②目标是掌握多无人机系统在动态环境下的路径规划与防撞机制,提升协同作业能力与自主决策水平;③通过Matlab仿真深入理解协同算法的实现逻辑与参数调优方法。; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注目标函数设计、避障策略实现与多机协同逻辑,配合仿真结果分析算法性能,进一步可尝试引入新型智能算法进行优化改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值