Testing Round #12
2015-11-14 17:14
447 查看
A. Divisibility
直接分类讨论
B. Restaurant
按照右坐标排序,直接贪心
C. Subsequences
dp[i][j]表示坐标为i,长度为j的上升子序列的个数
然后我们转移就用前面小于a[i]的dp[k][j-1]的和转移过来就好了
用树状数组维护
今年多校训练、网赛、区域赛似乎都出现过类似的题目
直接分类讨论
#include<bits/stdc++.h> using namespace std; int main() { long long a,b,c; cin>>c>>a>>b; long long ans = 0; if(a<=0 && b<=0) { swap(a,b); a=-a,b=-b; } if(a<=0 && b>=0) { ans=(-a)/c+b/c; ans++; } else { ans=(b/c)-(a-1)/c; } cout<<ans<<endl; return 0; }
B. Restaurant
按照右坐标排序,直接贪心
#include<bits/stdc++.h> using namespace std; const int MAXN=500005; struct Node { int l,r; }; bool cmp(Node a,Node b) { if(a.r==b.r)return a.l<b.l; return a.r<b.r; } Node p[MAXN]; int main() { int n; scanf("%d",&n); for(int i=0; i<n; i++) scanf("%d%d",&p[i].l,&p[i].r); sort(p,p+n,cmp); int ans = 0; int last = -1; for(int i=0; i<n; i++) { if(p[i].l>last) { ans++; last = p[i].r; } } printf("%d\n",ans); return 0; }
C. Subsequences
dp[i][j]表示坐标为i,长度为j的上升子序列的个数
然后我们转移就用前面小于a[i]的dp[k][j-1]的和转移过来就好了
用树状数组维护
今年多校训练、网赛、区域赛似乎都出现过类似的题目
#include<bits/stdc++.h> using namespace std; const int MAXN=100105; long long dp[MAXN][12]; void add(int x,int y,long long val) { for(int i=x; i<MAXN; i+=i&(-i)) dp[i][y]+=val; } long long sum(int x,int y) { long long ans = 0; for(int i=x; i>0; i-=i&(-i)) ans+=dp[i][y]; return ans; } int main() { int n,k; scanf("%d%d",&n,&k); add(1,0,1); for(int i=0; i<n; i++) { int x; scanf("%d",&x); x++; for(int j=k+1; j>0; j--) { long long temp = sum(x,j-1); add(x,j,temp); } } long long ans = sum(n+1,k+1); printf("%lld\n",ans); return 0; }
相关文章推荐
- 深入学习微框架:Spring Boot
- c++中string类的详解
- 浅谈Thread和Runnable
- ubuntu sublime中文输入
- Spark修炼之道(基础篇)——Linux大数据开发基础:第十三节:Shell编程入门(五)
- java文件IO操
- Struts2 学习系列 (6) 消息处理与国际化
- layout_width与layout_weight
- C++之string学习笔记(1)
- Android系统手机端抓包方法
- UI第四天 触摸 响应者链 target-action
- 隐式数据共享 深拷贝 浅拷贝
- javascript正则表达式
- HDU 2151 Worm(和树塔问题差不多)
- android内核编译及模拟器运行过程记录
- JAVA设计模式(22) —<行为型>中介者模式(Mediator)
- 使用dom4j来解析xml文件的基本操作
- Masonry
- 关于状态栏 上颜色配置 ios7.x 之后
- 动画编程2--使用动画进行视图过渡