hdu 4833 离散化 以及一个严重的潜在错误
来源:互联网 发布:达梦数据库 dm7下载 编辑:程序博客网 时间:2024/06/10 06:23
错误程序,思路正确,但始终WA:
#include<cctype>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<queue>#include<stack>#include<set>#include<map>using namespace std;typedef long long LL;const double pi = acos(-1.0);const int maxn = 4e4;int kase, n, m, last, a[maxn];LL ans;LL dp[maxn], money[maxn];vector<pair<int,int> > lis[maxn];struct earns{ int date, salary, sum;} earn[maxn + 1];struct trades{ int start, finish, rate;} trade[maxn + 1];map<int, int> mp;void init();void solve();void outp();int main(){ int T; while (~scanf("%d", &T)) { kase = 0; while (T--) { init(); solve(); outp(); } } return 0;}void solve(){ for (int i = last-1; i >= 0; i--) { dp[i] = dp[i + 1]; for (int j = 0; j < lis[i].size(); j++) { //dp[i] = max(dp[i], dp[lis[i][j].first] + lis[i][j].second); dp[i] = max(dp[i], dp[lis[i][j].first] + mp[lis[i][j].first]); //cout<<i<<' '<<dp[i]<<' '<<dp[lis[i][j]]+mp[lis[i][j]]<<' '<<k<<endl; } //cout<<i<<' '<<dp[i]<<' '<<money[i]<<' '<<k<<endl; } for (int i = 0; i < last; i++) { ans += dp[i] * money[i]; }}void init(){ last = 0; earn[0].sum = 0; ans = 0; memset(a, 0, sizeof(a)); memset(dp, 0, sizeof(dp)); memset(money, 0, sizeof(money)); scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) { scanf("%d%d", &earn[i].date, &earn[i].salary); a[last++] = earn[i].date; } for (int i = 1; i <= m; i++) { scanf("%d%d%d", &trade[i].start, &trade[i].finish, &trade[i].rate); a[last++] = trade[i].start; a[last++] = trade[i].finish; } sort(a, a + last); last = unique(a, a + last) - a; for (int i = 1; i <= n; i++) { earn[i].date = upper_bound(a, a + last, earn[i].date) - a; //earn[i].sum=earn[i-1].sum+earn[i].salary; } for (int i = 1; i <= n; i++) { money[earn[i].date] += earn[i].salary; } for (int i = 0; i <= last; i++) { lis[i].clear(); } for (int i = 1; i <= m; i++) { trade[i].start = upper_bound(a, a + last, trade[i].start) - a; trade[i].finish = upper_bound(a, a + last, trade[i].finish) - a; lis[trade[i].start].push_back(make_pair(trade[i].finish,trade[i].rate)); mp[trade[i].finish] = trade[i].rate; //cout<<trade[i].finish<<' '<<mp[trade[i].finish]<<endl; } //last--;}void outp(){ printf("Case #%d:\n%.2lf\n", ++kase, ans / 100.0); /*for(int i=1;i<=n;i++) printf("%d %d\n",earn[i].date,earn[i].sum); for(int i=1;i<=m;i++) printf("%d %d %d\n",trade[i].start,trade[i].finish,trade[i].rate); puts("");*/ //for(int i=1;i<=n;i++) printf("%d %d\n",earn[i].date,money[earn[i].date]); /*for(int i=1;i<=n;i++) printf("%d ",dp[i]); puts(""); for(int i=0;i<last;i++) printf("%d ",a[i]); puts(""); cout<<last<<endl; puts("");*/}
问题在于,map容器在数据的插入上涉及到集合的唯一性。map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能。
以数组的方式对其中元素进行赋值,可能会原有的映射关系。
0 0
- hdu 4833 离散化 以及一个严重的潜在错误
- 犯了一个严重的错误
- 从一个严重的错误中恢复
- 潜在的错误
- 构建决策树的一个严重的思路错误
- 昨天犯了一个超级严重的低级错误
- 郁闷啊,今天犯了一个严重的错误
- iTween的一个潜在BUG
- CURL多线程的严重错误
- 改变严重错误的行为
- CAtlHttpClient的一个严重bug
- hdu 5009 离散化
- HDU 1556 离散化
- hdu 5481 离散化
- HDU - 3634 离散化
- c++:strcat潜在的错误不报告
- 关于的外连接(left join或right join)我们常犯的一个严重错误
- 安装Virtualbox的时候回滚,并提示发生一个严重的错误
- Permutations II stl next_permutation的用法
- SQL Server 2008通过发布订阅的方式实现数据库之间的同步操作
- C/C++中extern关键字详解
- php学习笔记(二)
- Makefile选项CFLAGS,LDFLAGS,LIBS
- hdu 4833 离散化 以及一个严重的潜在错误
- 二叉树的遍历(c++学习笔记)
- Nginx子路径到端口映射
- iOS Crash 分析(文二)-崩溃日志组成
- Oracle 11.2.0.4.0 下载
- photoshop制作可爱逼真的冰淇凌字
- 黑马程序员———集合
- 多Fragment嵌套是如何调用父Fragment的onActivityResult()方法
- Refactoring Day 7 : Rename (method, class, parameter)