sicily--1097. LED Modding

来源:互联网 发布:2016中国经济发展数据 编辑:程序博客网 时间:2024/05/29 11:08

1.还是比较水,用优先级队列模拟即可

2.个人觉得应该注意的就是当“USB <= LED_V”时,输出的情况应该是“---”,因为题目说,可以小于规定的电流(因为后面会慢慢升,我也不记得为什么了),但是不能超过;我就是在这里WA了一次,一开始觉得如果电源电压小于所需的电压的话应该是“IMPOSSIBLE”才对,结果抱着试一试的心态去改了一下,就过了

#include<iostream>#include<vector>#include<queue>#include<string>#include<iomanip>using namespace std;struct Node{string name;int interval;};struct cmp{bool operator()(const Node &n1, const Node &n2){return n1.interval > n2.interval;//小顶堆}};int main(){int USB;//电源电压while(cin >> USB){double LED_V;//LED需要的电压cin >> LED_V;double LED_mA;//LED需要的电流cin >> LED_mA;int N;//电阻的个数cin >> N;if(USB <= LED_V)//电源恰好足够提供{for(int i = 0; i < N; i++){string temp;//虽然没有作用,但是还是需要输入cin >> temp;int temp2;cin >> temp2;}cout << "---" << endl;continue;}//计算使LED正常工作所需的电阻double resistance = 0.0;resistance =(USB - LED_V)/LED_mA*1000;priority_queue<Node, vector<Node>, cmp> Q;for(int i = 0; i < N; i++){string name;//电阻名字cin >> name;int weight;//电阻阻值cin >> weight;//判断并计算差值if(weight < resistance)//没办法使用它continue;else{Node temp;temp.name = name;temp.interval = (weight - resistance);Q.push(temp);}}if(Q.empty())//优先级队列为空,说明所有的电阻的阻值都小于规定的要求{cout << "IMPOSSIBLE" << endl;continue;}else{cout << setiosflags(ios::fixed) << setprecision(2) << resistance << " " << Q.top().name << endl;}}return 0;}


原创粉丝点击