有题day4上
来源:互联网 发布:哈林导师知乎 编辑:程序博客网 时间:2024/06/08 07:04
t1集合
倒着弄
#include<cstdio>#include<cmath>#include<algorithm>using namespace std;int n,ans,a[1100000];int main(){ //freopen("multiset.in","r",stdin);// freopen("multiset.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); int l=1,r=1,t=0; //while(a[l]==t) r++; while(l<n){ while(a[r]==t) r++; l+=(r-l)/2; ans++; t++; printf("%d %d\n",l,r); } printf("%d",ans); }
t2
二分+bfs搞一波,,可以增量法
#include<cstdio>#include<cmath>#include<ctime>#include<cstring>#include<queue>#include<algorithm>using namespace std;int vis[210000],ans,n,m,head[210000],nex[500000],to[599999],tot,x[510000],y[510000];void add(int x,int y){ nex[++tot]=head[x]; to[tot]=y; head[x]=tot;}int check(int s,int t){ tot=0;queue<int> q; memset(head,0,sizeof head); memset(vis,0,sizeof vis); for(int i=s;i<=t;i++) add(x[i],y[i]); q.push(1); vis[1]=1; while(!q.empty()){ int x=q.front();q.pop(); for(int i=head[x];i<=tot&&i;i=nex[i]){ int tmp=to[i]; if(vis[tmp]) continue; if(tmp==n) return 0; vis[tmp]=1; q.push(tmp); } } return 1;}int main(){ freopen("road.in","r",stdin); freopen("road.out","w",stdout); scanf("%d%d",&n,&m); for(int i=0;i<m;i++) scanf("%d%d",&x[i],&y[i]); int now=0; while(now<m){ int i=1; /*while(i+now<=m) if(check(now,i+now-1)) i<<=1; else break; i>>=1; int nowtmp=i+now; while(i) {if(nowtmp+i<=m&&check(now,nowtmp+i-1))nowtmp+=i;i>>=1;} ans++;//for(int i=now;i<=nowtmp-1;i++) vis[y[i]]=0; now=nowtmp;*/ int l=now,r=m; while(l<=r){ int mid=(l+r)>>1; int w=check(now,mid); if(w) l=mid+1; else r=mid-1; } now=l; ans++; } printf("%d",ans);}
阅读全文
1 0
- 有题day4上
- day4
- day4
- day4
- day4
- DAY4
- DAY4
- Day4
- day4
- day4
- Day4
- Day4
- Day4
- day4
- day4
- day4
- DAY4
- Day4
- 2017.11.1第一课
- TreeView点击树节点中id,名称赋值到文本框中
- jquery的trigger和triggerHandler区别
- 11.1第一课
- 大文件的分片传,断点续传,md5校验
- 有题day4上
- 同步与锁机制
- mysql乐观锁总结和实践
- React Native之onLayout属性
- TextView实现文字水平手动滚动和垂直手动滚动
- logging 模块
- Redis主从复制和哨兵模式
- maven联通网络下中央仓库不能访问的解决办法
- ffmpeg各种yuv格式转换命令