POJ Who Gets the Most Candies? 线段树 第 5天
2014-08-13 15:09
246 查看
擦,看了一上午,他妈的,终于试出来错误。。。。
50W个点,我开了 100W + 8 的数组,原以为够了。。。。。。他妈的就错在这了。。。真的想骂两句。。。。。
#include<iostream> #include<cstdio> #define lson id << 1 #define rson id << 1 | 1 using namespace std; struct Linetree { int len,left,right; int mid() { return (left + right) / 2; } }node[1100008]; void _btree(int id,int l,int r) { node[id].left = l;node[id].right = r; node[id].len = r - l + 1; if(l == r) return ; int mid = node[id].mid(); _btree(lson,l,mid); _btree(rson,mid+1,r); } int add(int id,int k) { node[id].len --; if(node[id].left == node[id].right) { return node[id].left; } if(k <= node[lson].len)return add(lson,k); else if(node[rson].len >= k-node[lson].len) return add(rson,k-node[lson].len); } int fac[500008]; void getfac() { for(int i=1;i<=500005;i++) for(int j=i;j<=500005;j+=i) fac[j] ++; ; } char a[500100][11]; int A[500100]; int main() { int n,m; getfac(); while(~scanf("%d%d",&n,&m)) { _btree(1,1,n); for(int i=1;i<=n;i++)scanf("%s%d",a[i],&A[i]); int Max = -1,pos = 1; int mod = n; for(int i=1;i<=n;i++) { int x = add(1,m); if(fac[i] > Max) { Max = fac[i]; pos = x; } mod--; if(mod == 0)break; if(A[x] > 0) { m = ((m-2+A[x]) % mod + mod) % mod+ 1; } else { m = ((m-1+A[x])%mod + mod) % mod + 1; } } printf("%s %d\n",a[pos],Max); } }
相关文章推荐
- POJ 2886 Who Gets the Most Candies?(线段树)
- POJ 2886 Who Gets the Most Candies? 线段树
- POJ 2886 Who Gets the Most Candies? (线段树模拟约瑟夫环)
- poj 2886 Who Gets the Most Candies?(线段树)
- POJ 2886 Who Gets the Most Candies? 线段树
- poj 2886 Who Gets the Most Candies?(线段树单点更新)
- poj 2886 Who Gets the Most Candies?(线段树、反素数)
- Who Gets the Most Candies? - POJ 2886 线段树
- POJ 2886 Who Gets the Most Candies? (高合成数&用线段树维护约瑟夫环)
- poj 2886 Who Gets the Most Candies?(线段树单点更新模拟约瑟夫环)
- POJ 2886 Who Gets the Most Candies? (线段树)
- POJ 2886 Who Gets the Most Candies?(线段树 + 约瑟夫环 + 反素数)
- POJ 2886 Who Gets the Most Candies? 线段树。。还有方向感
- POJ 2886 Who Gets the Most Candies?(线段树模拟约瑟夫环,高合成数)
- [poj 2886] Who Gets the Most Candies[线段树][约瑟夫环][反素数]
- POJ 2886 Who Gets the Most Candies? 线段树。。还有方向感
- POJ-2886 Who Gets the Most Candies? 线段树|树状数组
- POJ-2886 Who Gets the Most Candies? 线段树 + 反素数
- POJ 2886 Who Gets the Most Candies? (线段树)
- POJ 2886 Who Gets the Most Candies(线段树模拟约瑟夫环)