Open Ural FU Championship 2013 (2013区域赛练习)
2013-10-20 13:14
309 查看
这应该是欧洲的一场热身赛吧,题目有点水,而且都是1A,可以最后没有把F题调出来。C,E题目前还没A
贴个F题代码保存一下
高斯消元+STL模拟,代码能力弱成渣
1981 | Parallel and Perpendicular | Open Ural FU Championship 2013 | 131 | 355 | |
1982 | Electrification Plan | Open Ural FU Championship 2013 | 206 | 230 | |
1983 | Nectar Gathering | Open Ural FU Championship 2013 | 17 | 1872 | |
1984 | Dummy Guy | Open Ural FU Championship 2013 | 204 | 237 | |
1985 | Prime Square | Open Ural FU Championship 2013 | 17 | 1803 | |
1986 | Paul’s Salads | Open Ural FU Championship 2013 | 39 | 1058 | |
1987 | Nested Segments | Open Ural FU Championship 2013 | 123 | 374 | |
1988 | Planet Ocean Landing | Open Ural FU Championship 2013 | 45 | 918 | |
1989 | Subpalindromes | Open Ural FU Championship 2013 | 69 | 640 |
高斯消元+STL模拟,代码能力弱成渣
#include <cstdio> #include <cstring> #include <cmath> #include <map> #include <vector> #include <queue> #include <string> #include <iostream> #include <algorithm> using namespace std; #define pb push_back #define mp make_pair int lim; const double eps = 1e-9; bool gauss(double a[13][12], int n) { int i, j, k, r; for (i = 0; i < n; i++) { r = i; for (j = i + 1; j < n; j++) if (fabs(a[j][i]) > fabs(a[r][i])) r = j; if (fabs(a[r][i]) < eps) return 0; if (r != i) for (j = 0; j <= n; j++) swap(a[r][j], a[i][j]); for (j = n; j >= i; j--) for (k = i + 1; k < n; k++) a[k][j] -= a[k][i] / a[i][i] * a[i][j]; } for (i = n - 1; i >= 0; i--) { for (j = i + 1; j < n; j++) a[i] -= a[j] * a[i][j]; a[i] /= a[i][i]; } return 1; } map<string, int> idx, Right, Left; char s[100005]; int tot; string str[11]; vector<pair<string, double> > data[11]; double xs[12][12]; double ff[12][12]; double cs[12][12]; string cf[12]; double ans[12][12]; int n; char tp[11111]; int main() { int i, j; j = 0; while (scanf("%s", tp) != EOF) { str = (string) tp; if (idx.find(tp) == idx.end()) idx[tp] = tot++; scanf("%s", tp); gets(s); int len = strlen(s); bool op = 0; int num; xs = 100; string tmp; for (i = 1; i < len; i++) { if (!op) { tmp.clear(); for (j = i; s[j] != ' ' && j < len; j++) tmp += s[j]; if (idx.find(tmp) == idx.end()) idx[tmp] = tot++; i = j; } else { num = 0; for (j = i; s[j] != ' ' && j < len; j++) num = (num * 10) + s[j] - '0'; data .pb(make_pair(tmp, num)); i = j; } op ^= 1; } n++; } Right = idx; for (i = 0; i < n; i++) if (Right.count(str[i])) Right.erase(str[i]); map<string, int>::iterator it; for (it = Right.begin(); it != Right.end(); it++) { it->second = lim; cf[lim++] = it->first; } for (i = 0; i < n; i++) Left[str[i]] = i; for (i = 0; i < n; i++) { for (j = 0; j < (int) data[i].size(); j++) { if (Right.count(data[i][j].first)) { cs[i][Right[data[i][j].first]] += data[i][j].second; } else xs[i][Left[data[i][j].first]] -= data[i][j].second; } } for (i = 0; i < n; i++) { for (int x = 0; x < lim; x++) { for (j = 0; j < n; j++) { xs[j] = cs[j][x]; memcpy(ff, xs, sizeof(ff)); gauss(ff, n); for (int k = 0; k < n; k++) ans[k][x] = ff[k] ; } } } for (i = 0; i < n; i++) { printf("%s :", str[i].c_str()); for (j = 0; j < lim; j++) { printf(" %s %.4f", cf[j].c_str(), ans[i][j]*100); } puts(""); } return 0; }
相关文章推荐
- [Open Ural FU Personal Contest 2013]E.Pear Trees wuyiqi's method
- [Open Ural FU Personal Contest 2013]J. 皇后像廣場
- The 2013 ACM-ICPC Asia Changsha Regional Contest(2013区域赛练习)
- 2011-2012 Stanford Local Contest, 8 October, 2011(完全) (2013区域赛练习)
- 2012 Asia ChangChun Regional Contest(2013区域赛练习)
- XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
- 2008-2009 ACM-ICPC Northeastern European Regional Contest (NEERC 08) (2013区域赛练习)
- The Bangla New Year Contest 2013(2013区域赛练习)
- Petrozavodsk Winter-2013. Ural FU Contest
- 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest(2013区域赛练习)
- XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship G glassese of solutions
- 2013-2014 ACM-ICPC, NEERC, Moscow Subregional Contest (2013区域赛练习)
- hdu 4770 Lights Against Dudely (2013亚洲区域赛杭州站 A)
- vs2013报错:can't open file "SDKDDKVer.h"
- 周赛题解报告-2013 亚洲南京区域赛
- OpenJudge/Poj 2013 Symmetric Order
- SharePoint 2013 Open File Explorer Error
- 2013寒假练习 1006:The most frequent number
- 2013寒假练习 1009:Number Sequence
- 2013寒假练习 1014:Big Event in BIT