codeforce 224
来源:互联网 发布:wps数据透视图怎么做 编辑:程序博客网 时间:2024/04/27 14:41
好久没写csdn的博客了,自从今年的亚洲赛完就一直没有敲过有关算法方面的程序,发现现在都有点生疏了。昨天参加了场CF,惨败。。。
第一题,水贪心,没仔细读题,结果当成是博弈DP,敲完果断贡献了个WA。
第二题,水题,把数存数组里排序,左右扫一遍就OK了。
第三题,一直题意没弄明白,后来问了学妹题意,是个递归二分,开始敲代码,还算比较顺利,结果MLE了,数爆int了,结果就跪了。后来改long long 果断过了。
第四题,没看。
第五题,感觉是离线数据结构查询,不过没想太明白也没太多时间就没动,今天看了下,完全是可以做的。
开始没多久,中途断网近半小时,顿时好无语,加上不熟,果断时间不够,给跪了。
第三题,代码
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <map>#define LL long longusing namespace std;const int mm = 1e5+9;//map<LL,LL>mp;class ppp{public: LL l,r; LL typ; LL a,b;}f[mm];int n;LL query(LL x){ LL l = 0,r = n-1,mid; while(l<=r) { mid = (l+r)/2; if(f[mid].l<=x && f[mid].r>=x) { if(f[mid].typ == 1) return f[mid].a;//mp[x]; else { int num = x-f[mid].l+1; num = num%f[mid].a; if(num == 0) num = f[mid].a; return query(num); } } else if(f[mid].l>x) { r = mid -1; } else if(f[mid].r<x) { l = mid + 1; } }}int main(){ while(~scanf("%d",&n)) {// mp.clear(); LL kai = 1; for(int i=0;i<n;++i) { int typ,a,b; scanf("%d",&typ); if(typ == 1) { scanf("%d",&a); f[i].l = kai; f[i].r = kai; f[i].a = a; f[i].typ = typ;// mp[kai] = a; ++kai; } else { scanf("%d%d",&a,&b); f[i].l = kai; f[i].r = kai + (LL)a*b-1; kai = f[i].r + 1; f[i].typ = typ; f[i].a = a; f[i].b = b; } }// for(int i=0;i<n;++i)// {// printf("%d %d %d %d\n",f[i].l,f[i].r,f[i].a,f[i].b);// } int m; LL qu; scanf("%d",&m); for(int i=0;i<m;++i) { scanf("%I64d",&qu); printf("%I64d ",query(qu)); } printf("\n"); } return 0;}
第四题
#include <iostream>#include <cstdio>#include <set>#include <cstring>#include <map>#include <string>#include <vector>#include <algorithm>#include <cmath>#include <queue>#define VI vector<int>#define PB push_back#define ll(x) (1<<x)#define FOR(i,a,b) for(int i=a;i<=b;++i)#define DWN(i,a,b) for(int i=a;i>=b;--i)#define clr(f,z) memset(f,z,sizeof(f))using namespace std;const int mm = 7009;int d[mm*311],l[mm],r[mm],x[mm],vis[mm*311];VI level[mm];int main(){ d[0] = 0; FOR(i,1,111*mm-1)///i 对应右下一层的值 { d[i] = d[i-1] + 1; if( (i&(i-1)) == 0) ++d[i]; } int n,m; while(cin>>n>>m) { int res = 0,typ,id; clr(vis,0); FOR(i,0,mm-1) level[i].clear(); FOR(i,1,m) { cin>>typ; if(typ == 1) { cin>>id>>l[i]>>r[i]>>x[i]; level[id].PB(i); } else { int t,v,ll,rr,ans; cin>>t>>v;// puts("uuu"); ++res; ans = 0; ll = rr = v; FOR(j,t,n) { int len = level[j].size()-1;// FOR(k,0,level[j].size()-1) //BUG FOR(k,0,len) if(ll>r[ level[j][k] ] || rr < l[ level[j][k] ]) continue; else { if(vis[ x[ level[j][k] ] ] != res) { vis[ x[ level[j][k] ] ] = res; ++ans; } } ll = d[ll-1] + 1; rr = d[rr]; } cout<<ans<<endl; } } } return 0;}/**4 51 4 4 7 11 3 1 2 22 1 12 4 12 3 3*/
第五题:
//在线线段树 265 MS#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<queue>#include<set>#include<vector>#include<string>#include<algorithm>#define lson (t<<1)#define rson (t<<1|1)#define FOR(i,a,b) for(int i=a;i<=b;++i)#define DWN(i,a,b) for(int i=a;i>=b;--i)#define clr(f,z) memset(f,z,sizeof(f))#define ll(x) (1<<x)using namespace std;const int mm = 1e6+9;char bracket[mm];class Segment{public: int l,r,len,lbracket,rbracket;}rt[mm*4];void push(int t){ int num = min(rt[lson].lbracket,rt[rson].rbracket); rt[t].len = rt[lson].len + rt[rson].len + num; rt[t].lbracket = rt[lson].lbracket + rt[rson].lbracket - num; rt[t].rbracket = rt[lson].rbracket + rt[rson].rbracket - num;}void build(int t,int l,int r){ rt[t].l = l; rt[t].r = r; if(l == r) { rt[t].len = 0; rt[t].lbracket = rt[t].rbracket = 0; if(bracket[l-1] == '(') rt[t].lbracket++; else rt[t].rbracket++; return ; } int mid = (l+r)/2; build(lson,l,mid); build(rson,mid+1,r); push(t);}Segment query(int t,int l,int r){ if(rt[t].l >= l && rt[t].r <= r) { return rt[t]; } Segment ret = rt[t]; ret.lbracket = 0; ret.rbracket = 0; ret.len = 0; if(rt[t].r < l || rt[t].l > r) return ret; else { Segment la = query(lson,l,r); Segment ra = query(rson,l,r); int num = min(la.lbracket,ra.rbracket); ret.len = la.len + ra.len + num; ret.lbracket = la.lbracket + ra.lbracket - num; ret.rbracket = la.rbracket + ra.rbracket - num; return ret; }}int main(){ while(~scanf("%s",bracket)) { int len = strlen(bracket); build(1,1,len); int m,a,b; scanf("%d",&m); FOR(i,1,m) { scanf("%d%d",&a,&b); printf("%d\n",query(1,a,b).len*2); } } return 0;}/////右离线版 93MS//#include<cstdio>//#include<cstring>//#include<iostream>//#include<cmath>//#include<queue>//#include<set>//#include<vector>//#include<string>//#include<stack>//#include<algorithm>//#define PII pair<int,int>//#define FOR(i,a,b) for(int i=a;i<=b;++i)//#define DWN(i,a,b) for(int i=a;i>=b;--i)//#define clr(f,z) memset(f,z,sizeof(f))//#define ll(x) (1<<x)////using namespace std;//const int mm = 1e6+9;//char bracket[mm];//int sum[mm];////int lowbit(const int x)//{// return x&(-x);//}////void add(int*sum,int pos,const int num)//{// for(int i=pos;i<mm;i+=lowbit(i))// {// sum[i] += num;// }//}////int query(int*sum,const int pos)//{// int ans = 0;// for(int i=pos;i>0;i-=lowbit(i))// ans += sum[i];// return ans;//}//stack<int>st;//vector<PII>q[mm];//int ans[mm];//int main()//{//// while(~scanf("%s",bracket))// {// int m,a,b;// scanf("%d",&m);// FOR(i,1,m)// {// scanf("%d%d",&a,&b);// --a; --b;// q[a].push_back(PII(b,i));// }// int len = strlen(bracket);// clr(sum,0);// DWN(i,len-1,0)// {// if(bracket[i] == ')')// st.push(i);// else// {// if(!st.empty())// {// add(sum,st.top(),1);// st.pop();// }// }// for(int j = 0;j<q[i].size();++j)// {// ans[ q[i][j].second ] = query(sum,q[i][j].first);// }// }// FOR(i,1,m)// printf("%d\n",ans[i]+ans[i]);// }// return 0;//}
0 0
- codeforce 224
- codeforce
- codeforce
- Codeforce
- Codeforce
- Codeforce
- Codeforce
- Codeforce
- Codeforce
- Codeforce
- Codeforce
- Codeforce
- CodeForce
- Codeforce 1
- codeforce 规则
- codeforce Domino
- codeforce #129
- 关于Codeforce
- 黑马程序员_正则表达式
- Domain Driven Design
- 字符编码笔记:ASCII,Unicode和UTF-8
- ios开发随笔记(五):Kobold2D开发遇到的编译问题
- 2013年度餐饮O2O大揭底
- codeforce 224
- 性格决定命运
- 数据结构之单链表操作
- 大数据量的处理
- word图片无法保存问题
- 关于之前写的声波通讯的jar库,一些心得
- static 关键字总结(陈硕的blog)
- apache启动时,弹出窗口:"Warning PHP Startup"
- 软件版本命名规范