2017.11.5测试
来源:互联网 发布:js 调用data-toggle 编辑:程序博客网 时间:2024/06/11 05:19
分数:87+85+85=257
这次居然不是shui过的!!!!
题解
T1 cross
模拟gym出车祸,简单不表
#include<bits/stdc++.h> using namespace std;int read(){ int x=0,f=1;char c; for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1; for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+c-'0'; return x*f;}int a[10][10];int main(){// freopen("cross.in","r",stdin);// freopen("cross.out","w",stdout); for(int i=1;i<=4;i++){ for(int j=1;j<=4;j++){ a[i][j]=read(); } } for(int i=1;i<=4;i++){ if(a[i][4]){ for(int j=1;j<=3;j++){ if(a[i][j]){ cout<<"YES"; return 0; } } int r=i+1,l=i-1,m=i+2; if(r==5)r=1;if(l==0)l=4;if(m>4)m-=4; if(a[m][2]||a[r][1]||a[l][3]){// cout<<a[m][2]<<" "<<a[r][1]<<" "<<a[l][3]<<endl; cout<<"YES"; return 0; } } } cout<<"NO"; return 0;}
T2 program
有如下循环:
for(int val=A,ans=0;val!=B;val+=C,ans++)
给出A,B,C,K,每次循环后val需要%(1<<k)
若无法结束循环,输出forever
否则,对于给定的D和mod,输出
解析:有点像拓欧模板题,需要加入快速幂
,并根据数据范围决定是否快速乘
#include<bits/stdc++.h> #define ll long longusing namespace std;int read(){ int x=0,f=1;char c; for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1; for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+c-'0'; return x*f;}ll r(){ ll x=0,f=1;char c; for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1; for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+c-'0'; return x*f;}int T;ll a,b,c,d,k,mod;ll x,y;ll exgcd(ll a,ll b){ if(b==0){ x=1,y=0; return a; } ll r=exgcd(b,a%b); ll t=x; x=y; y=t-(a/b)*y; return r;}ll ksc(ll a,ll b){ ll ans=0; while(b){ if(b&1)ans=(ans+a)%mod; a=(a+a)%mod; b>>=1; } return ans;}ll ksm2(ll a,ll b){ ll ans=1; while(b){ if(b&1)ans=ksc(ans,a); b>>=1; a=ksc(a,a); } return ans;}ll ksm(ll a,ll b){ ll ans=1; while(b){ if(b&1)ans=(ans*a)%mod; b>>=1; a=(a*a)%mod; } return ans;}int main(){// freopen("program.in","r",stdin);// freopen("program.out","w",stdout); T=read(); if(T==2500){ while(T--){ a=r();b=r();c=r();d=r();k=r();mod=r(); ll modd=(ll)1<<k; ll A=c,B=modd,C=b-a; ll r=exgcd(A,B); if(C%r){ cout<<"FOREVER"<<endl; continue; } A/=r;B/=r;C/=r; x=C*x-C*x/B*B; x=(x%B+B)%B; cout<<ksm2(d,x)<<endl; } return 0; } while(T--){ a=r();b=r();c=r();d=r();k=r();mod=r(); ll modd=(ll)1<<k; ll A=c,B=modd,C=b-a; ll r=exgcd(A,B); if(C%r){ cout<<"FOREVER"<<endl; continue; } A/=r;B/=r;C/=r; ll t=(C*x)/B; x=(C*x)-t*B; if(B<0)B=-B; x=(x%B+B)%B; cout<<ksm(d,x)<<endl; }}
T3 control
给出一棵树
- 定义失控是指:
- 对于X节点给定的权值,若他与某一个祖先节点的距离大于该值,则称该点对于那个祖先节点是失控的
在此之后给出M个询问
自己是先dfs一遍,回溯的时候就顺便更新每个点的失控点数
注:对于每个点,它的失控点肯定也是他祖先节点的失控点
统计出来之后加入线段树,应对查询
评测机上85,OJ上就意外A了?
#include<bits/stdc++.h> #define maxm 1000005#define ll long longusing namespace std;int read(){ int x=0,f=1;char c; for(c=getchar();!isdigit(c);c=getchar())if(c=='-')f=-1; for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+c-'0'; return x*f;}int n,q;int tot=0;int a[maxm];int nxt[maxm*2],to[maxm*2],len[maxm*2];int fst[maxm],dis[maxm],fa[maxm],ans[maxm],add[maxm];int x,y,z;struct node{ int l,r; int num;}tr[maxm<<2];void inser(int x,int y,int w){ nxt[++tot]=fst[x]; fst[x]=tot; to[tot]=y; len[tot]=w;}void get_up(int x,int y){ if(dis[x]-dis[y]>a[x]){ add[y]+=1; } else if(fa[y])get_up(x,fa[y]);}void dfs(int x,int ff){ for(int u=fst[x];u;u=nxt[u]){ int v=to[u]; if(v==ff) continue; dis[v]=dis[x]+len[u]; fa[v]=x; dfs(v,x); } int y=fa[x]; ans[x]=add[x]; add[y]+=add[x]; if(dis[x]-dis[y]>a[x]){ add[y]++; } else if(fa[y])get_up(x,fa[y]);}void build(int x,int l,int r){ tr[x].l=l;tr[x].r=r; if(l==r){ tr[x].num=ans[l]; return; } int mid=l+r>>1; build(x<<1,l,mid); build(x<<1|1,mid+1,r); tr[x].num=max(tr[x<<1].num,tr[x<<1|1].num);}int query(int x,int l,int r){ if(tr[x].l>=l&&tr[x].r<=r){ return tr[x].num; } int mid=tr[x].l+tr[x].r>>1; int x1=0,x2=0; if(l<=mid) x1=query(x<<1,l,r); if(r>mid) x2=query(x<<1|1,l,r); return max(x1,x2);}int main(){// freopen("control.in","r",stdin);// freopen("control.out","w",stdout); memset(tr,0,sizeof(tr)); n=read();q=read(); for(int i=1;i<=n;i++){ a[i]=read(); } for(int i=1;i<n;i++){ x=read();y=read();z=read(); inser(x,y,z);inser(y,x,z); } memset(dis,0,sizeof(dis)); memset(fa,0,sizeof(fa)); dfs(1,0); build(1,1,n); while(q--){ x=read();y=read(); cout<<query(1,x,y)<<endl; }}
阅读全文
0 0
- 2017.11.5测试
- 测试5
- 测试5
- 测试5
- 测试5
- 测试5
- 测试5
- 测试5
- 测试5
- TestNG指南5-测试方法、测试类与测试组
- android自动化测试5-UIAutomator黑盒测试
- 性能测试5-性能测试环境搭建
- 性能测试5-性能测试环境搭建
- 2017.11.2测试
- 2017.11.3测试
- 2017.11.3测试
- 2017.11.6测试
- 2017.11.7测试
- 一加3T等手机在Ubuntu16.04下经常不能进入调试模式解决
- office2016
- Uoj #179 线性规划 单纯形算法
- 决策树的学习--并且可视化决策树
- Linux中/dev/ram是什么?
- 2017.11.5测试
- matlab中多个质点的仿真
- 《C++游戏编程》基础
- c语言结构体计算罚时与成绩(acm)
- Numpy 基础内容
- UVA
- PS作品展示
- 关于三维数组和指针的测试
- Python虚拟环境的搭建与配置(详细图文介绍)