LG R7
来源:互联网 发布:玩具车淘宝网 编辑:程序博客网 时间:2024/04/21 00:29
T1 BFS暴力模拟
#include <cstdio>#include <iostream>#include <queue>#include <cstring>#include <ctime>using namespace std;const int maxm=5100;int head[maxm],to[2*maxm],net[2*maxm];int cnt;struct node{ int d,step;};bool vis[maxm];queue <node> dl;void add(int x,int y){ cnt++; to[cnt]=y; net[cnt]=head[x]; head[x]=cnt;}int bfs(int k){ int ans=0; while(!dl.empty()) { node d=dl.front(); dl.pop(); if(d.step==k) continue; for(int i=head[d.d];i;i=net[i]) if(!vis[to[i]]) vis[to[i]]=1,dl.push((node){to[i],d.step+1}),ans++; } return ans;}inline int read(){ int x = 0, f = 1; char ch = getchar(); for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1; for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0'; return x * f;}int main(){ freopen("a.in","r",stdin); freopen("a.out","w",stdout); int n,m,q; scanf("%d%d%d",&n,&m,&q); for(int i=1;i<=m;i++) { int x,y; x=read();y=read(); add(x,y),add(y,x); } for(int i=1;i<=q;i++) { int a,k; a=read(),k=read(); memset(vis,0,sizeof(vis)); while(!dl.empty()) dl.pop(); int ans=0; for(int j=1,d;j<=a;j++) { d=read(); if(!vis[d]) vis[d]=1,dl.push((node){d,0}),ans++; } if(k==0) printf("%d\n",ans); else printf("%d\n",ans+bfs(k)); } //printf("\n%d",clock());}
T2暴力N^2,优化记录前缀位置和。
#include <cstdio>#include <iostream>#include <queue>#include <cstring>#include <ctime>#include <algorithm>#define ll long longusing namespace std;const int maxm=1000100;ll a[maxm],b[maxm];ll tree[maxm],n;ll Ans=0;inline int lowbit(int x){ return x&-x;}void ins(ll ind){ for(ll i=ind;i<=maxm;i+=lowbit(i)) tree[i]++;}ll ask(ll ind){ ll ans=0; for(ll i=ind;i;i-=lowbit(i)) ans+=tree[i]; return ans;}void fx(int l,int r){ memset(tree,0,sizeof(tree)); //int size=n-x+1; ll ans=0; for(int i=r;i>=l;i--) { ll d=ask(a[i]); //d=i-d; //printf("%d\n",d); //ans+=(ans+d); ans+=d; Ans+=ans; ins(a[i]+1); } //return ans;}int main(){ freopen("b.in","r",stdin); freopen("b.out","w",stdout); scanf("%lld",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]),b[i]=a[i]; sort(b+1,b+n+1); int t=unique(b+1,b+n+1)-b-1; for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+t+1,a[i])-b; //int ans=0; for(int i=n;i>=1;i--) //for(int j=i+1;j<=n;j++) fx(1,i); printf("%lld",Ans);}
T3 Tarjan缩点+拓扑排序。
二分答案。
check方法:跟父亲要,根节点给M要。
常数太大,T了一个点
#include <cstdio>#include <iostream>#include <queue>#define ll long long using namespace std;const int maxm=1e7+1;ll dfn[maxm],low[maxm],c[maxm],stk[maxm],top,num,col,size[maxm]; bool vis[maxm];ll head[maxm],to[2*maxm],net[2*maxm],cnt;ll a1[maxm],a2[maxm];ll r1[maxm],d1[maxm];ll dl[maxm],tail,hdd;ll root,n,m;void add(ll x,ll y){ cnt++; to[cnt]=y; net[cnt]=head[x]; head[x]=cnt;}ll now[maxm],fat[maxm];void tarjan(ll x){ vis[x]=1; stk[++top]=x; low[x]=++num; dfn[x]=num; for(ll i=head[x];i;i=net[i]) { ll p=to[i]; if(!dfn[p]) { tarjan(p); low[x]=min(low[p],low[x]); } else if(vis[p]) low[x]=min(dfn[p],low[x]); } if(low[x]==dfn[x]) { vis[x]=0; col++; while(stk[top]!=x) { size[col]++; vis[stk[top]]=0; c[stk[top]]=col; a2[col]+=a1[stk[top]]; top--; } size[col]++; top--; c[x]=col; a2[col]+=a1[x]; }}bool check(ll mid){ ll t=m; for(ll i=1;i<=col;i++) now[i]=a2[i]; for(ll i=1;i<=tail;i++) { ll d=dl[i]; if(fat[d]) { if(now[d]<1ll*size[d]*mid) now[fat[d]]-=(size[d]*mid-now[d]); } else { ll need=size[d]*mid-now[d]; if(need<0) continue; if(t>=need) t-=need; else return 0; } } return 1;}int main(){ ll l=0,r=1e10; scanf("%lld%lld",&n,&m); for(int i=1,x;i<=n;i++) { scanf("%lld",&x); if(x!=-1) add(i,x); } for(int i=1;i<=n;i++) scanf("%lld",&a1[i]); for(ll i=1;i<=n;i++) if(!dfn[i]) tarjan(i); for(ll i=1;i<=n;i++) for(ll j=head[i];j;j=net[j]) { if(c[i]!=c[to[j]]) { fat[c[i]]=c[to[j]]; r1[c[to[j]]]++; d1[c[i]]++; } } for(ll i=1;i<=col;i++) if(!d1[i]) { root=i; break; } for(ll i=1;i<=col;i++) if(r1[i]==0) dl[++tail]=i; while(hdd<=tail) { hdd++; ll d=dl[hdd]; r1[fat[d]]--; if(r1[fat[d]]==0) dl[++tail]=fat[d],r1[fat[d]]=1e8; } ll ans=0; while(l<=r) { ll mid=(l+r)/2; if(check(mid)) ans=mid,l=mid+1; else r=mid-1; } printf("%lld",ans); return 0;}
阅读全文
0 0
- LG R7
- lg
- 刷题#R7
- 洛谷八连测 #R7
- LG语录
- bs-Lg
- LG集团
- 题lg
- ERwin r7 的注册码
- Domino R7 学习笔记
- Android NDK r7发布
- ndk r7 awk问题
- R7 问题记录
- R7 STM32 时钟总结
- android-r7-安装准备
- Nexus 5 (LG D820,LG D821)区别
- )--------------------------->>将"R7-R9"之类的数据,转成"R7,R8,R9" ?
- NDK r7 的新特性
- 就从html开始说编程;
- 页面重用包含
- Android Studio 添加依赖
- 如何在GitHub For Windows软件上为代码库创建一个版本标签tags
- SpringMVC访问静态资源的三种方式
- LG R7
- 深度学习中简单神经网络的实现
- SQLserver UNPIVOT函数 行列转化出现 [Err] 42000
- 大数据、人工智能、机器人的血缘关系?
- jQuery选择器和选取方法
- 查看linux系统CPU信息的经验 以及分区和剩余空间大小
- Java后端WebSocket的Tomcat实现
- 【计算机视觉】BRIEF特征匹配
- 基于Minifilter的文件过滤驱动以及与应用层通讯(付代码)