【多校第一场】【筛法改】HDU 5288 OO’s Sequence
2015-07-22 14:49
399 查看
这道题的数据范围需要让我们有些反应才是,虽然n的组数是1e5的大小,但是数字的范围是1e4。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288
思路是找到每一个元素的左端首个因数的位置和右端因数的位置,这是显而易见的。但是这题的问题却不是在这里,而是在于如何操作。学长介绍的方法是将他们从小到大排列,然后去寻找当前值的倍数。。。有点说不太清不过对着代码模拟一遍一个就好,注释才是正文系列。
记住,long long不要乱开,sort时记得你的数组是从哪开始的。(因为这些而WA了一天TAT)。
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5288
思路是找到每一个元素的左端首个因数的位置和右端因数的位置,这是显而易见的。但是这题的问题却不是在这里,而是在于如何操作。学长介绍的方法是将他们从小到大排列,然后去寻找当前值的倍数。。。有点说不太清不过对着代码模拟一遍一个就好,注释才是正文系列。
记住,long long不要乱开,sort时记得你的数组是从哪开始的。(因为这些而WA了一天TAT)。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #define LL long long using namespace std; struct n { int num; int id; }num[1000100]; LL ans; const int mod=1e9+7; vector <int>lr[10002]; bool cmp(n a,n b) { return a.num<b.num; } int main() { int n; while(~scanf("%d",&n)) { for(int i=0;i<=10001;i++) lr[i].clear(); ans=0; for(int i=1;i<=n;i++) { scanf("%d",&num[i].num); num[i].id=i; } sort(num+1,num+n+1,cmp); int k=1; for(int i=1;i<=n;i++) { for(int j=num[i].num;j<=10000;j+=num[i].num) { lr[j].push_back(num[i].id); } if(i!=n && num[i].num==num[i+1].num) continue; while(k<=i) { int l=0,r=n+1; for(int j=0;j<lr[num[k].num].size();j++) { if(lr[num[k].num][j]<num[k].id && lr[num[k].num][j]>l) { l=lr[num[k].num][j]; } else if(lr[num[k].num][j]>num[k].id && lr[num[k].num][j]<r) { r=lr[num[k].num][j]; } } ans=(ans+(num[k].id-l)*(r-num[k].id))%mod; k++; // cout<<l<<" "<<r<<" "<<ans<<endl; // for(int i=1;i<=n;i++) // { // printf("%d |",lr[i].size()); // for(int j=0;j<lr[i].size();j++) printf(" %d",lr[i][j]); // printf("\n"); // } } } // for(int i=1;i<=n;i++) // { // printf("%d |",lr[i].size()); // for(int j=0;j<lr[i].size();j++) printf(" %d",lr[i][j]); // printf("\n"); // } printf("%lld\n",ans); } return 0; }
相关文章推荐
- ios开发UI篇—Kvc简单介绍
- express4.x Request对象获得参数方法
- 关于是用UE的技巧--持续更新......
- Android build
- Bullet物理引擎不完全指南(Bullet Physics Engine not complete Guide)
- IOS自定义UITableViewCell的高亮背景色
- Storyboard中的UIScrollView使用自动布局,使其能够滚动
- ueditor 定制使用
- CALayer与UIView的关系
- Diesel-engined devices toronto and additionally equipment enjoy a great fanatic sticking with
- Errors occurred during the build. Errors running builder 'Checkstyle Builder' on project
- 2015 Multi-University Training Contest 1 - 1001 OO’s Sequence
- BlockingQueue(转自博客园)
- iOS 蓝牙使用小结 bluetooth
- 利用Loader来动态加载不同的QML文件来改变UI
- IOS自定义UITableViewCell的高亮背景色
- UIView属性clipsToBounds的使用
- AutoLayout一、UILabel的高度自适应
- The resource identified by this request is only capable of generating responses with characteristics
- Codeforces Round #279 (Div. 2) B. Queue 模拟