HDU 4995 Revenge of kNN(暴力)
2016-02-25 18:37
447 查看
http://acm.hdu.edu.cn/showproblem.php?pid=4995
暴力,代码还没调对,这种题意不明的模拟题真的烦死了
第二版 WA 待修改
暴力,代码还没调对,这种题意不明的模拟题真的烦死了
#include<iostream> #include<cstdio> #include<set> #include<string> #include<string.h> #include<cstring> #include<vector> #include<map> #include<queue> #include<stack> #include<cctype> #include<algorithm> #include<sstream> #include<utility> #include<cmath> #define mt(a) memset(a,0,sizeof (a)) #define fl(a,b,c) fill(a,b,c) #define SWAP(a,b,t) (t=a,a=b,b=t) #define inf 1000000 using namespace std; typedef long long ll; typedef struct Node { ll pos,id; }Node; double val[100000 + 20]; bool com(Node x, Node y) { return x.pos < y.pos; } vector<Node>v; map<ll, ll>ma; int main() { int T; cin >> T; while (T--) { v.clear(); ma.clear(); int n, m, k; scanf("%d %d %d", &n, &m, &k); for (int i = 0; i < n; i++) { ll x; double y; scanf("%lld %lf", &x, &y); Node T; T.pos = x; val[i] = y; T.id = i + 1; v.push_back(T); } sort(v.begin(), v.end(), com); for (int i = 0; i < n; i++) { ma[v[i].id] = i; } double ans = 0.0; for (int i = 0; i < m; i++) { ll q; ll pr, pl, pos; scanf("%lld", &q); pos = ma[q]; pl = pos, pr = pos; double sum = 0.0; ll time = k; for (int j = 0; j < k;j++) { if ((pl - 1 >= 0) && (pr + 1 < n)) { if (abs(v[pl - 1].pos - v[pos].pos) <= (abs(v[pr + 1].pos - v[pos].pos))) sum += val[--pl]; else sum += val[++pr]; } else if (pl - 1 >= 0) sum += val[--pl]; else sum += val[++pr]; } val[pos] = sum / k; ans += val[pos]; } printf("%.6lf\n", ans); } return 0; }
第二版 WA 待修改
#include<iostream> #include<cstdio> #include<set> #include<string> #include<string.h> #include<cstring> #include<vector> #include<map> #include<queue> #include<stack> #include<cctype> #include<algorithm> #include<sstream> #include<utility> #include<cmath> #define mt(a) memset(a,0,sizeof (a)) #define fl(a,b,c) fill(a,b,c) #define SWAP(a,b,t) (t=a,a=b,b=t) #define inf 1000000 using namespace std; typedef long long ll; typedef struct Node { ll pos, id; double val; }Node; bool com(Node x, Node y) { return x.pos < y.pos; } vector<Node>v; map<ll, ll>ma; int main() { int T; cin >> T; while (T--) { v.clear(); ma.clear(); int n, m, k; scanf("%d %d %d", &n, &m, &k); for (int i = 0; i < n; i++) { ll x, y; scanf("%lld %lld", &x, &y); Node T; T.pos = x; T.val = y; T.id = i + 1; v.push_back(T); } sort(v.begin(), v.end(), com); vector<Node>::iterator po1, po2; for (int i = 0; i < n; i++) { ma[v[i].id] = i; } double ans = 0.0; for (int i = 0; i < m; i++) { ll q; ll pr, pl, pos; scanf("%lld", &q); pos = ma[q]; pl = pos, pr = pos; double sum = 0.0; ll time = k; for (int j = 0; j < k; j++) { if ((pl - 1 >= 0) && (pr + 1 < n)) { if (abs(v[pl - 1].pos - v[pos].pos) > (abs(v[pr + 1].pos - v[pos].pos))) { sum += v[++pr].val; } else { sum += v[--pl].val; } } else if (pl - 1 >= 0) { sum += v[--pl].val; } else { sum += v[++pr].val; } } v[pos].val = sum / k; ans += v[pos].val; } printf("%.6lf\n", ans); } return 0; }
相关文章推荐
- Servlet知识点<一>
- dephi中单击鼠标拖动窗口(使用WM_SYSCOMMAND)
- puppet
- 多线程开发
- 图解Android - Zygote, System Server 启动分析
- delphi中左右翻转窗体(修改EXStyle)
- 银行卡信息查询
- STL 中的容器们(四)
- mysql 多个TimeStamp设置
- saltstack
- 互联网时代的股权激励
- ssh私钥登陆提示Server refused our key问的解决办法
- Many To one 多对一
- 在javascript中innerHTML和innerText的区别,以及innerHTML和innerText在各个版本浏览器的兼容性问题
- POJ2782(贪心)
- 如何建立自身的自信
- 【hdu1241】Oil Deposits——dfs/bfs
- delphi中覆盖最大化消息(覆盖WM_GETMINMAXINFO消息)
- 使用 RDVTabBarController 制作底部凸起的 TabBar 笔记
- cglib 源代码分析(原创)