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

【论文复现】一种基于价格弹性矩阵的居民峰谷分时电价激励策略【需求响应】(Matlab代码实现)内容概要:本文介绍了一种基于价格弹性矩阵的居民峰谷分时电价激励策略,旨在通过需求响应机制优化电力系统的负荷分布。该研究利用Matlab进行代码实现,构建了居民用电行为与电价变动之间的价格弹性模型,通过分析不同时间段电价调整对用户用电习惯的影响,设计合理的峰谷电价方案,引导用户错峰用电,从而实现电网负荷的削峰填谷,提升电力系统运行效率与稳定性。文中详细阐述了价格弹性矩阵的构建方法、优化目标函数的设计以及求解算法的实现过程,并通过仿真验证了所提策略的有效性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事需求响应、电价机制研究或智能电网优化等相关领域的科研人员及研究生。; 使用场景及目标:①研究居民用电行为对电价变化的响应特性;②设计并仿真基于价格弹性矩阵的峰谷分时电价激励策略;③实现需求响应下的电力负荷优化调度;④为电力公司制定科学合理的电价政策提供理论支持和技术工具。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,深入理解价格弹性建模与优化求解过程,同时可参考文中方法拓展至其他需求响应场景,如工业用户、商业楼宇等,进一步提升研究的广度与深度。
针对TC275微控制器平台,基于AUTOSAR标准的引导加载程序实现方案 本方案详细阐述了一种专为英飞凌TC275系列微控制器设计的引导加载系统。该系统严格遵循汽车开放系统架构(AUTOSAR)规范进行开发,旨在实现可靠的应用程序刷写与启动管理功能。 核心设计严格遵循AUTOSAR分层软件架构。基础软件模块(BSW)的配置与管理完全符合标准要求,确保了与不同AUTOSAR兼容工具链及软件组件的无缝集成。引导加载程序本身作为独立的软件实体,实现了与上层应用软件的完全解耦,其功能涵盖启动阶段的硬件初始化、完整性校验、程序跳转逻辑以及通过指定通信接口(如CAN或以太网)接收和验证新软件数据包。 在具体实现层面,工程代码重点处理了TC275芯片特有的多核架构与内存映射机制。代码包含了对所有必要外设驱动(如Flash存储器驱动、通信控制器驱动)的初始化与抽象层封装,并设计了严谨的故障安全机制与回滚策略,以确保在软件更新过程中出现意外中断时,系统能够恢复到已知的稳定状态。整个引导流程的设计充分考虑了时序确定性、资源占用优化以及功能安全相关需求,为汽车电子控制单元的固件维护与升级提供了符合行业标准的底层支持。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值