题目1554:区间问题 map<int , vector<int> >的使用
来源:互联网 发布:php上传zip压缩文件 编辑:程序博客网 时间:2024/06/07 03:47
记录前缀和 sum[i] = x[1] + x[2] + .... + x[i]
查找 x[s] + x[s+1] + ....+ s[e] = k ;
算法:
从小到大 固定 s ,查找e 。
=> 固定s , 在sum[s+1] , sum[s+2] ,....sum[n]内查找sum[最小的e] = k+sum[s-1] 。
做映射: sum[i] -> i 。
注意sum[i]会有重复,这个时候做 整数 -> 链表 的映射。 每次查找logN。
const int Max_N = 10008 ;int x[Max_N] ;int sum[Max_N] ;int n , k ;map<int , vector<int> > st ; int getint(){ int t=0,flag=1; char c=getchar(); while(c<'0'||c>'9'||c=='-'){ if(c=='-') flag=-1 ; c=getchar(); } while(c>='0'&&c<='9'){ t=t*10+c-'0'; c=getchar(); } return t*flag;} void Ans(){ int start , nowserch ; vector<int> now ; vector<int> ::iterator it ; for(start = 1 ; start <= n ; start++){ nowserch = sum[start-1] + k ; if(st.find(nowserch) == st.end()) continue ; now = st[nowserch] ; for(it = now.begin() ; it < now.end() ; it++){ if((*it) >= start){ printf("%d %d\n" , start , (*it)) ; return ; } } } puts("No") ; return ;} int main(){ int i ; while(scanf("%d" ,&n) != EOF){ st.clear() ; sum[0] = 0 ; for(i = 1 ; i <= n ; i++){ x[i] = getint() ; sum[i] = sum[i-1] + x[i] ; st[sum[i]].push_back(i) ; } scanf("%d" ,&k) ; Ans() ; } return 0 ;}
.
0 0
- 题目1554:区间问题 map<int , vector<int> >的使用
- 关于vector的vector<vector<int>>的使用问题
- 关于vector的vector(int)的使用问题
- map<int,int>函数的简单使用
- vecor<vector<int>>的使用
- vector<vector<int>>的输入
- vector<vector<int> >的输入输出
- C++中map<int,vector<int>>的初始化和访问方法
- #碰到的小问题#c++中vector<int> 和vector<int>::iterator有什么不同
- vector<int>G[] 和 vector<vector<int> G 的区别
- Int?, Int??, Int + 问号的使用
- map<int,int>::iterator it 的用法
- 1054 map<int,int>
- c++中vector<int>和vector<int*>的用法比较
- C++中vector<int>和vector<int*>的区别
- const vector<int>::iterator和vector<int>::const_iterator的区别
- vector<int>::iterator和vector<int*>::iterator还有vector<int>*的区别
- 二维数组vector<vector<int> >的建立
- leetcode: Longest Valid Parentheses
- 学习OpenCV范例(十一)——图像的腐蚀与膨胀
- 第四周项目4-工资又来
- 博弈之sg函数(模板)
- 关于Unity3D中Resources动态加载NGUI图片的方法!!!
- 题目1554:区间问题 map<int , vector<int> >的使用
- java Reflection 基础知识
- python 配置自动补全
- 做一个女软件工程师的好处
- Poj2699The Maximum Number of Strong Kings
- 使用ImageLoader实现图片异步加载
- s5pv210的启动过程
- 文本框的简单事件处理程序
- ios basic:2.0 Incorporation the data(学习怎样去design data model,怎样去学习Objective-c)