#include <iostream> using namespace std; int main() { int r, y, g; cin >> r >> y >> g; int n; cin >> n; int sum = 0; for(int i=0; i<n; i++){ int ta, tb; cin >> ta >> tb; if((ta == 0) || (ta == 1)){ sum += tb; } else if(ta == 2){ sum += (tb + r); } } cout << sum << endl; return 0; } 2. #include <iostream> using namespace std; int main() { int r, y, g; cin >> r >> y >> g; int s = r+y+g; int n; cin >> n; int sum = 0; int ta[n+5], tb[n+5]; for(int i=0; i<n; i++){ cin >> ta[i] >> tb[i]; } for(int i=0; i<n; i++){ //on road if((ta[i] == 0)){ sum += tb[i]; // cout << sum << endl; } //yellow light else if(ta[i] == 2){ // cout << sum << endl; int sum1 = sum%s; sum1 += (g + y -tb[i]); sum1 %= s; // cout << "sum1:" << sum1 << endl; if(sum1 >=0 && sum1 <g); else sum += (s-sum1); } //red light else if(ta[i] == 1){ // cout << sum << endl; int sum1 = sum%s; sum1 += (s-tb[i]); sum1 %= s; // cout << "sum1:" << sum1 << endl; if(sum1 >=0 && sum1 <g); else sum += (s-sum1); } else if(ta[i] == 3){ // cout << sum << endl; int sum1 = sum%s; sum1 += (g-tb[i]); sum1 %= s; // cout << "sum1:" << sum1 << endl; int tmp = sum1-tb[i]-r-y; if(sum1 >=0 && sum1 <g); else sum += (s-sum1); } // cout << sum << endl; } cout << sum << endl; return 0; } /* //30 30 30 3 0 12 3 13 0 12 24 #include <iostream> using namespace std; int main() { int r, y, g; cin >> r >> y >> g; int s = r+y+g; int n; cin >> n; int sum = 0; int ta[n+5], tb[n+5]; for(int i=0; i<n; i++){ cin >> ta[i] >> tb[i]; } for(int i=0; i<n; i++){ //on road if((ta[i] == 0)){ sum += tb[i]; // cout << sum << endl; } //yellow light else if(ta[i] == 2){ int sum1 = sum%s; // cout << "sum1:" << sum1 << endl; int tmp = sum1-tb[i]-r; if(tmp < 0){ sum -= tmp; } // cout << sum << endl; } //red light else if(ta[i] == 1){ int sum1 = sum%s; // cout << "sum1:" << sum1 << endl; int tmp = sum1-tb[i]; if(tmp < 0){ sum -= tmp; } } else if(ta[i] == 3){ int sum1 = sum%s; // cout << "sum1:" << sum1 << endl; int tmp = sum1-tb[i]-r-y; if(tmp < 0){ sum -= tmp; } // cout << sum << endl; } // cout << sum << endl; } cout << sum << endl; return 0; } */ 4. #include <iostream> #include<algorithm> #include<queue> #include<stack> using namespace std; typedef long long ll; const int maxn = 100000+5; struct Edge{ int a, b, va; }E[maxn]; int n, r, m; int fa[maxn], deep[maxn]; priority_queue<int>q; bool cmp(Edge a, Edge b){ return a.va < b.va; } int find(int x){ return x == fa[x]? x : find(fa[x]); } void unite(int a, int b){ int faa = find(a); int fbb = find(b); if(faa == fbb) return; else{ if(deep[faa] < deep[fbb]){ fa[faa] = fbb; } if(deep[faa] > deep[fbb]){ fa[fbb] = faa; } else{ fa[fbb] = faa; deep[faa]++; } } } void Kru(){ sort(E, E+r, cmp); for(int i=0; i<=r; i++){ fa[i] = i; deep[i] = 0; } for(int i=0; i<r; i++){ if(find(E[i].a) != find(E[i].b)){ unite(E[i].a, E[i].b); q.push(E[i].va); } } return; } int main() { int root; cin >> n >> r >> root; int dis[n+5][n+5]; for(int i=0; i<r; i++){ cin >> E[i].a >> E[i].b>> E[i].va; dis[E[i].a][E[i].b] = E[i].va; dis[E[i].b][E[i].a] = E[i].va; } Kru(); //adjust int flag = 0; while(!q.empty()){ int tmp = q.top(); for(int i=1; i<=n; i++){ if(dis[root][i] == tmp){ cout << tmp << endl; flag = 1; break; } } if(flag){ break; } q.pop(); } return 0; }
CCF12月 1 . 2 4 分别是 100 60 0 ....
最新推荐文章于 2019-12-20 12:29:20 发布