NOIP2016提高组解题报告!

noip2016初赛提高组c++试题+简要解析 noip2016提高组c++试题+简要解析,试题清楚可以打印~~~~ 立即下载

经过千辛万苦ATP总算把NOIP2016的六道题都写完了!已经用NOI网站上发布的数据测过所以应该是没问题的啦!

Day1T1

就是模拟啦。注意一下面朝内和面朝外对于左右的区别就好啦。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,now;
struct point{
    char s[20];
    int dir,len;
    void get(){
        char c;
        scanf("%d",&dir);
        c=getchar();len=0;
        while (c<'a'||c>'z') c=getchar();
        while (c<='z'&&c>='a'){
            s[len++]=c;c=getchar();
        }
    }
    void print(){
        for (int i=0;i<len;i++) printf("%c",s[i]);
        printf("\n");
    }
}p[100010];
int main()
{
    freopen("toy.in","r",stdin);
    freopen("toy.out","w",stdout);
    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++) p[i].get();
    now=1;
    for (int i=1;i<=m;i++){
        int d,k,dlt;
        scanf("%d%d",&d,&k);
        if (p[now].dir==0){
            if (d==1) dlt=1;
            else dlt=-1;
        }else{
            if (d==0) dlt=1;
            else dlt=-1;
        }
        dlt*=k;now=(now+dlt)%n;
        while (now<=0) now+=n;
        while (now>n) now-=n;
    }
    p[now].print();
    return 0;
}

Day1T2

ATP个人觉得这是全场最难想最烧脑最……@#¥%@%……的一道题了。。。光瞪着题解看了半天结果就看懂了它的预处理然后上网各种找然后好不容易把各种做法和成一坨就变成了现在这样。。。

不管怎样先把官方题解贴出来吧。。虽然ATP也不大很懂尤其是它说的什么“我们不妨计算每一个人被观测到几次”什么的。。。

这里写图片描述

诶它说什么“这题专治各种数据结构学傻的人”。。ATP觉得真是一刀戳到脸上=▽=。。。因为ATP当时考试的时候差点写出树套树啊链剖啊这种不靠谱的东西来着。。幸亏仅存的一丝理智让它没有写。。。

好吧其实ATP的做法一开始和题解是一样的,就是把那些曲里拐弯的路径都转化成两类:从根跑到u的和从u跑到根的。这样的话要对每个人记录的信息就变了:要记录它路径上除了根节点以外的另一个端点也就是u;要记录它的开始时间;要记录它是往上跑的还是往下跑的;要记录它的权值。

这样看起来是变麻烦了实际上并没有。。统计的时候,对于每一个观测员,它将会看到u在它子树里的某些人,也就是说统计子树信息的问题。考虑一个在t时刻开始从u跑到根节点的人,如果它能被它祖先上的观测员v看到,那么它一定是在W[v]时刻到达的v。这个时候假设u和v一起往上跑,那么它们一定会同时到达根节点;反过来看,假设v从W[v]时刻出发,如果u和v同时到达了根节点,因为v到根节点那一段路它们是重合的,所以u一定是在W[v]时刻到达的v。那也就是说只需要比较这两个东西到达根节点的时间就可以了!并且要统计v的子树信息的时候,v到达根节点的时间这个东西是固定的,而u到达根节点的时间显然它的值域比较小可以拿一个数组记一下,每次直接访问那个位置就可以了。

然而卡了ATP最长时间的问题是你看如果它直接统计子树信息的话不同的子树之间不是会互相影响的吗。。。如果开很多数组每次统计完子树信息以后再合并那不就炸时间炸空间吗。。。果然ATP足够愚蠢啊其实因为对于每个节点统计它的子树的时候只会访问一个位置,那么只要在dfs它之前记录一下那个位置现在已经有多少值,dfs出来以后统计答案的时候减去那个值就可以了!

不过貌似题解用某种方法把统计子树信息变成了统计祖先信息?ATP也不是很懂。。

然而ATP这题用各种山寨数据还有官方数据都测过了都没问题但是交到BZOJ上就是使劲WA来WA去。。。交到洛谷上竟然给我出了个“UKE”?!鬼知道为啥= =

#include<cstdio>
#include<cstring>
#include<algorithm>
#define Pow 19
using namespace std;
const int base=300000;
int n,m,p[300010],a[600010],nxt[600010],W[300010],deep[300010],cnt[1000010],ans[300010],point[300010],to[1300010];
int f[300010][21],tot,pnxt[1300010],ptot,qutot;
struct query{
    int u,t,tp,val,rec;
    query(int U=0,int T=0,int TP=0,int VAL=0){u=U;t=T;tp=TP;val=VAL;}
}q[1300010];
int comp(query a,query b){
    return a.t<b.t;
}
void add(int x,int y){
    tot++;a[tot]=y;nxt[tot]=p[x];p[x]=tot;
}
void addprs(int u,int num){
    ptot++;to[ptot]=num;pnxt[ptot]=point[u];point[u]=ptot;
}
void dfs(int u){
    deep[u]=deep[f[u][0]]+1;
    for (int i=1;i<=Pow;i++)
      f[u][i]=f[f[u][i-1]][i-1];
    for (int i=p[u];i!=0;i=nxt[i])
      if (a[i]!=f[u][0]){
          f[a[i]][0]=u;
          dfs(a[i]);
      }
}
int find_lca(int x,int y){
    if (deep[x]!=deep[y]){
        if (deep[x]<deep[y]) swap(x,y);
        for (int i=Pow;i>=0;i--)
          if (deep[f[x][i]]>=deep[y])
            x=f[x][i];
    }
    for (int i=Pow;i>=0;i--)
      if (f[x][i]!=f[y][i]){
          x=f[x][i];y=f[y][i];
      }
    while (x!=y){x=f[x][0];y=f[y][0];}
    return x;
}
int dis(int u,int f){return deep[u]-deep[f];}
void search(int u,int dec,int type,int dlt){
    for (int i=point[u];i!=0;i=pnxt[i])
      if (q[to[i]].tp==type)
        cnt[q[to[i]].rec+base]+=q[to[i]].val;
    for (int i=p[u];i!=0;i=nxt[i])
      if (a[i]!=f[u][0]){
          int v=a[i],d;
          d=cnt[W[v]+(deep[v]-1)*dlt+base];
          search(v,d,type,dlt);
      }
    ans[u]+=cnt[W[u]+(deep[u]-1)*dlt+base]-dec;
}
int main()
{
    freopen("running.in","r",stdin);
    freopen("running.out","w",stdout);
    scanf("%d%d",&n,&m);
    for (int i=1;i<n;i++){
        int x,y;scanf("%d%d",&x,&y);
        add(x,y);add(y,x);
    }
    dfs(1);
    for (int i=1;i<=n;i++) scanf("%d",&W[i]);
    for (int i=1;i<=m;i++){
        int s,t,lca;
        scanf("%d%d",&s,&t);
        lca=find_lca(s,t);
        ++qutot;q[qutot]=query(s,0,1,1);
        addprs(s,qutot);
        ++qutot;q[qutot]=query(f[lca][0],dis(s,lca)+1,1,-1);
        addprs(f[lca][0],qutot);
        ++qutot;q[qutot]=query(t,dis(s,lca)-dis(lca,1),2,1);
        addprs(t,qutot);
        ++qutot;q[qutot]=query(lca,dis(s,lca)-dis(lca,1),2,-1);
        addprs(lca,qutot);
    }
    memset(cnt,0,sizeof(cnt));
    for (int i=1;i<=qutot;i++) q[i].rec=q[i].t+deep[q[i].u]-1;
    search(1,0,1,1);
    memset(cnt,0,sizeof(cnt));
    for (int i=1;i<=qutot;i++) q[i].rec=q[i].t;
    search(1,0,2,-1);
    for (int i=1;i<=n;i++){
        printf("%d",ans[i]);
        if (i!=n) printf(" ");
    }
    return 0;
}

Day1T3

比较简单的期望DP啦。。很容易看出来它每条路的期望值是互相不影响的,对于每一条路来说,会影响当前决策的有三个东西:它是第几条路;它之前已经申请了几次;它前面那个端点申请了没有。把这三个东西都记录到状态里,就是f[i][j][0/1]表示当前走到第i个点,已经申请了j次,第i个点有没有申请的总期望,然后递推的时候直接分情况讨论就可以了。。对于连接第i个点和第i+1个点的这条路,就分成都没申请、只有i申请、只有i+1申请和都申请四种情况就可以了。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,v,e,c[2010],d[2010];
double k[2010],f[2010][2010][2],inf,dis[310][310],ans;
double change(int i,double k1,double k2){
    double A,B;
    A=dis[c[i-1]][c[i]]*(1-k1)*(1-k2)+dis[d[i-1]][c[i]]*k1*(1-k2);
    B=dis[c[i-1]][d[i]]*(1-k1)*k2+dis[d[i-1]][d[i]]*k1*k2;
    return A+B;
}
int main()
{
    freopen("classroom.in","r",stdin);
    freopen("classroom.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&v,&e);
    for (int i=1;i<=n;i++) scanf("%d",&c[i]);
    for (int i=1;i<=n;i++) scanf("%d",&d[i]);
    for (int i=1;i<=n;i++) scanf("%lf",&k[i]);
    memset(dis,127,sizeof(dis));
    inf=dis[0][0];
    for (int i=1;i<=v;i++) dis[i][i]=0;
    for (int i=1;i<=e;i++){
        int x,y,w;
        scanf("%d%d%d",&x,&y,&w);
        dis[x][y]=dis[y][x]=min(dis[x][y],(double)w);
    }
    for (int K=1;K<=v;K++)
      for (int i=1;i<=v;i++)
        for (int j=1;j<=v;j++)
          if (dis[i][K]!=inf&&dis[K][j]!=inf)
            dis[i][j]=min(dis[i][j],dis[i][K]+dis[K][j]);
    memset(f,0x7f,sizeof(f));
    inf=f[0][0][0];
    f[1][0][0]=f[1][1][1]=0;
    for (int i=2;i<=n;i++)
      for (int j=0;j<=m;j++){
          f[i][j][0]=min(f[i-1][j][0]+change(i,0,0),f[i-1][j][1]+change(i,k[i-1],0));
          if (j!=0) f[i][j][1]=min(f[i-1][j-1][0]+change(i,0,k[i]),f[i-1][j-1][1]+change(i,k[i-1],k[i]));
      }
    ans=inf;
    for (int i=0;i<=m;i++)
      ans=min(ans,min(f[n][i][0],f[n][i][1]));
    printf("%.2lf\n",ans);
    return 0;
}

Day2T1

看到k的倍数就可以想到对k取模等于0,然后只要再扫描一遍组合数数组把不是0的那些数包括三角形外面那些数都赋值成一个不为0的数k,然后预处理二维前缀和,那么这一个矩形中0的个数就可以直接算啦。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 2000
using namespace std;
int n,m,k,C[2010][2010],T,s[2010][2010];
void Prepare(){
    for (int i=0;i<=N;i++) C[i][0]=1%k;
    for (int i=1;i<=N;i++)
      for (int j=1;j<=i;j++)
        C[i][j]=(C[i-1][j]+C[i-1][j-1])%k;
    for (int i=0;i<=N;i++)
      for (int j=0;j<=i;j++)
        if (C[i][j]!=0) C[i][j]=-1;
    for (int i=0;i<=N;i++)
      for (int j=i+1;j<=N;j++)
        C[i][j]=-1;
    s[0][0]=C[0][0];
    for (int i=1;i<=N;i++){
        s[0][i]=s[0][i-1]+C[0][i];
        s[i][0]=s[i-1][0]+C[i][0];
    }
    for (int i=1;i<=N;i++)
      for (int j=1;j<=N;j++)
        s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+C[i][j];
}
int main()
{
    freopen("problem.in","r",stdin);
    freopen("problem.out","w",stdout);
    scanf("%d%d",&T,&k);
    Prepare();
    for (int wer=1;wer<=T;wer++){
        int ans;
        scanf("%d%d",&n,&m);
        ans=s[n][m]+((n+1)*(m+1));
        printf("%d\n",ans);
    }
    return 0;
}

Day2T2

这题关键是注意到单调性这种东西。。因为它每次取一个最大值砍成两半,比如说就表示成A=⌊px⌋和B=x−A。它的比例是不变的。而可以发现它取出的那个最大值是单调不上升的。那么如果把A分成一坨,B分成一坨,可以看出来每一坨里面的东西也是单调不上升的。那么只需要另外开两个队列存储A和B,同时把排过序以后的原数组也当成一个队列,每次从三个队头里面比较取最大的就可以了。

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,q,u,v,t,a[100010],Q1[7000010],Q2[7000010],h1,h2,t1,t2,head,tail,dlt;
int comp(int x,int y){return x>y;}
double getlen(double L){
    double U=u,V=v;
    return floor(L*U/V);
}
int getMax(){
    int A,B,C,Max;
    A=B=C=-0x7fffffff;
    if (head!=tail) A=a[head+1];
    if (h1!=t1) B=Q1[h1+1];
    if (h2!=t2) C=Q2[h2+1];
    Max=max(max(A,B),C);
    if (Max==A) ++head;
    else if (Max==B) ++h1;
    else ++h2;
    return Max;
}
int main()
{
    freopen("earthworm.in","r",stdin);
    freopen("earthworm.out","w",stdout);
    scanf("%d%d%d%d%d%d",&n,&m,&q,&u,&v,&t);
    for (int i=1;i<=n;i++) scanf("%d",&a[i]);
    sort(a+1,a+n+1,comp);
    head=0;tail=n;h1=h2=t1=t2=0;
    for (int i=1;i<=m;i++){
        int len=getMax()+dlt,k;
        k=getlen(len);dlt+=q;
        Q1[++t1]=k-dlt;
        Q2[++t2]=len-k-dlt;
        if (i%t==0){
            printf("%d",len);
            if ((i/t+1)*t<=m) printf(" ");
        }
    }
    printf("\n");
    for (int i=1;i<=n+m;i++){
        int len=getMax()+dlt;
        if (i%t==0){
            printf("%d",len);
            if ((i/t+1)*t<=n+m) printf(" ");
        }
    }
    return 0;
}

Day2T3

这就是那个ATP原来以为是爆搜的状压DP。。。而且那个特殊限制啥啥啥其实根本没卵用啊好吧= =预处理抛物线以后可以发现消灭小猪的顺序跟最优解没什么卵关系,并且如果把每一个选择的抛物线当成一个状态,那么最优子结构也很显然。。。用f[S]表示消灭小猪状态为S的时候的最优解,比较显然的做法是枚举状态再枚举某两个小猪组成的抛物线。但是这样O(T∗2n∗n2)的复杂度是过不了的。而因为顺序没有什么关系,所以如果每次固定消灭当前没有被消灭的编号最小的猪的话就可以少一层循环,就压到了O(T∗2n∗n)。

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const double eps=1e-9;
int T,n,m,f[300000];
bool flag;
struct point{
    double x,y;
}p[20];
struct info{
    int rec,c;
}r[20][20];
void calc(double &X,double &Y,point u,point v){
    double A1,A2,B1,B2,C1,C2,tmp1,tmp2;
    A1=u.x*u.x;B1=u.x;C1=u.y;
    A2=v.x*v.x;B2=v.x;C2=v.y;
    tmp1=A1;tmp2=A2;
    A1*=tmp2;B1*=tmp2;C1*=tmp2;
    A2*=tmp1;B2*=tmp1;C2*=tmp1;
    tmp1=B2-B1;tmp2=C2-C1;
    if (tmp1==0) Y=2333;
    else Y=tmp2/tmp1;
    tmp1=C1-B1*Y;
    if (A1==0) X=2333;
    else X=tmp1/A1;
}
bool check(point u,double A,double B){
    return fabs(A*u.x*u.x+B*u.x-u.y)<eps;
}
int comp(int x,int y){return x>y;}
int main()
{
    freopen("angrybirds.in","r",stdin);
    freopen("angrybirds.out","w",stdout);
    scanf("%d",&T);
    for (int wer=1;wer<=T;wer++){
        scanf("%d%d",&n,&m);
        for (int i=1;i<=n;i++)
          scanf("%lf%lf",&p[i].x,&p[i].y);
        memset(r,0,sizeof(r));
        for (int i=1;i<=n;i++){
            r[i][i].rec=(1<<(i-1));
            r[i][i].c=1;
        }
        for (int i=1;i<n;i++)
          for (int j=i+1;j<=n;j++){
              double A,B;
              calc(A,B,p[i],p[j]);
              if (A>=0||B==2333) continue;
              for (int k=1;k<=n;k++)
                if (check(p[k],A,B)){
                    r[i][j].rec|=(1<<(k-1));
                    ++r[i][j].c;
                }
          }
        memset(f,127,sizeof(f));f[0]=0;
        for (int i=0;i<(1<<n);i++){
            int u=n;
            for (int j=1;j<=n;j++)
              if ((i&(1<<(j-1)))==0){
                  u=j;break;
              }
            for (int v=u;v<=n;v++)
              if ((i&(1<<(v-1)))==0){
                  int S=r[u][v].rec;
                  f[i|S]=min(f[i|S],f[i]+1);
              }
        }
        printf("%d\n",f[(1<<n)-1]);
    }
    return 0;
}

哈哈好不容易搞完这玩意儿还是蛮有成就感的_ (:з」∠)_

NOIP2016普及组与提高组试题:NOIP2016复赛普及组试题&NOIP2016复赛提高组试题 立即下载

相关推荐

NOIP大纲整理:历年2000-2016NOIP提高组题目分析.pdf

NOIP大纲整理:历年2000-2016NOIP提高组题目分

NOIP 2016 提高组 初赛

NOIP 2016 提高组 初赛 疑难点 学习 感悟。 一、 14. 二、 三、 四、 1. 2. 3. 直接将题目给的输入数据带入程序,要笔算得出结果,很困难,考虑,自底向上推导。 以下输入输出均是笔算得出: 输入:a 输出:1 输入:aa 输出:2 输入:ab 输出:1 输入:aaa 输出:3 输入:aab 输出:2 输入:ab

mrcrack的博客 1768

NOIP2004-2016提高组复赛历年原题&题解合集

NOIP2004-2016提高组复赛历年原题&题解合集,精心整理,希望对你有帮助

NOIP2016提高组初赛(1)

一、选择题 6、后缀表达式,使用二叉树来求解,正常情况下的表达式a*(b+c)- d为中序遍历的二叉树。 即 若转换为后缀表达式(左右根)则为abc+*d- 14、代数字进去,多试几遍; 三、问题求解 1、同斐波那契数列 F[n]表示有n个格子可以用来染成黑色时满足条件的染色方案数,则有 F[0]=1,F[1]=2; 对于第n个格子,有染黑色或不染黑色两种选择 若第n个格子染成...

weixin_30625691的博客 644

2016-2020年 CSP-J1 CSP-S1 NOIP 初赛真题 答案及解析.rar

2016-2020年 CSP-J1 CSP-S1 NOIP 初赛真题 答案及解析.rar

2006-2020年 CSP-S1 NOIP提高组 初赛 第1轮 真题及答案.rar

2006-2020年 CSP-S1 NOIP提高组 初赛 第1轮 真题及答案.rar

noip2016提高组初赛(答案+个人分析+个人总结)

由于网上还没有题目所以这里便没有题目=w= 一、单选 1、D 蒙也是能蒙对的=w= 2、A 注意,它问的是输出的第81个字符,不是按的,所以选B的童鞋好好读题=w= 依旧看做6个一组,81 div 6=13;易知奇数组是大写,偶数组是小写,所以显然是大写=w=; 然后再关注输出的是哪个字母,输出的看做5个一组,81 mod 5=1;所以是A 于是回来说的时候还有一种蒙题大法: 你

Eirlys的博客 1万+

量化爬虫实战:手把手教你搞定同花顺问财的hexin-v参数(附JS逆向思路与Cookie Hook技巧)

本文详细解析了如何通过JS逆向技术获取同花顺问财平台的`hexin-v`参数,包括Cookie Hook技巧和完整解决方案架构。从环境搭建到参数定位,再到生成逻辑逆向,手把手教你突破数据获取限制,为量化交易提供可靠数据支持。

weixin_42557803的博客 398

NOIP2016 提高组 题解

toy模拟一下,记录一个位置,如果左移则减,右移则加,再取个模。 O(n)running首先,把u->v拆成u->lca和lca->v两条路径。 在u->lca路径上,若点j能观察到该次行动,则应满足等式 d[u]−d[j]=w[j]d[u]-d[j]=w[j] 移项 d[u]=w[j]+d[j]d[u]=w[j]+d[j] 其中,d[v]表示v的深度,w[v]表示v点出现观察员的时间,

LYD729 2064

别再混淆了!深入浅出图解四元数姿态控制中的‘误差四元数’(附四种定义对比与仿真)

本文深入解析四元数姿态控制中的误差四元数定义差异,对比四种常见定义(如Q₀∘Q⁻¹与Q⁻¹∘Q₀)及其对PD控制性能的影响。通过刚体动力学仿真验证,揭示定义二(Q⁻¹∘Q₀)在无人机和航天器控制中的最优性能,提供工程实践建议与参数整定技巧,帮助开发者避免常见陷阱并提升控制效率。

weixin_42528191的博客 277

【GNSS测试技术(一)】GNSS基础原理介绍

GNSS(全球卫星导航系统)是一种基于卫星信号的定位技术,通过使用分布在地球轨道上的卫星,为用户提供全球范围内的定位、导航和授时服务。

新猿异码的博客 5753

NOIP2016提高组复赛 解题报告

Day1T1按照题意模拟就行了,水。 代码:#include<iostream> #include<cstring> #include<cstdio> using namespace std; #define N 100005int n,m,d,num,now; char s[N][20]; int len[N],dir[N],pre[N],nxt[N];int main() { freo

zyf2000 1万+

【Linux 驱动开发】STM32MP1 LCD 显示系统完整实践指南

STM32MP1 LCD显示系统实践指南 本文全面介绍STM32MP1平台实现MIPI DSI LCD显示的完整流程,涵盖硬件连接、设备树配置、显示原理和驱动实现。主要内容包括: 硬件连接:详细说明MIPI DSI差分对、背光PWM、复位/供电管脚的连接方式 设备树配置: PWM背光控制节点设置 LTDC与DSI端口映射关系 Panel节点参数定义 显示基础:讲解LCD/OLED显示原理、常见接口类型(RGB/LVDS/MIPI/HDMI)及信号时序 驱动实现。

猫猫的小茶馆 496

NOIP2015提高组复赛 解题报告

Day 1 T1  直接根据题目描述的模拟就可以了,水。 【代码】 #include #include #include using namespace std; int n,m,i,j,num; int a[50][50]; int main(){ scanf("%d",&n); m=(n/2)+1; a[1][m]=1; num=1; i=1; j=m; while (num

zyf2000 9858

雷达杂波的基础知识

例如工作在海上的机载雷达,航行在海上的船用雷达,它们都不想要海杂波,会影响它们对小目标的检测,从而以为“漏掉”海面飞行的巡航导弹而被击毁。海杂波的反射系数是非常复杂的,影响的因素很多,除了和雷达参数有关,显然还和海况息息相关,经验模型经常将反射系数表示成海况的函数,在不同条件和不同模型的情况下,反射系数的值不同。说到“杂波”,你可能想到的就是如何去抑制它,去减少它在雷达回波中的分量,在很多情况是这样的。云雨的反射对飞机雷达来说是不希望的,但确是气象雷达所利用的,可以用来测量降雨率,提升天气预报的准确性。

qq_43416206的博客 2133

【我的Android进阶之旅】解决android应用使用android:persistent属性带来的系统Launcher应用必须重启设备才生效的问题,大幅度提升开发效率

一、问题描述 我们在开发系统级别应用,比如Launcher桌面的时候,会发现有个问题:每次Launcher修改完代码,重新编译之后,安装到android设备上之后,必须重启才会生效。否则就是使用了之前的Launcher版本的内容。而每次重启设备得一分钟左右,太慢了,太影响效率了! 1.1 痛点 每次更新完代码,重新安装之后,必须重启设备才会生效。效率太TM低了! 二、分析问题 经过一轮代码排查,最终发现是因为src\main\AndroidManifest.xml文件中,定义application使用了an

字节卷动 1713

NOIP2016 提高组题解

。。蒟蒻被老师撵去写题解,无奈。没什么功夫去写两天的t1了,这里先放D1T2和D2T3吧D1T2 天天爱跑步解题报告感言:这道题当时在考场上修修补补,一点一点挤牙膏地得到了正解,可是竟然最后被下标坑了,蒟蒻就是借口多:-(一种暴力算法O(n^2) 考虑到最朴素的思想,对每个人一步一步的跑到起点终点的lca,并统计到当前点x的时间Ti,对答案统计 即 预处理lca(nlogn的倍增算法) 每个

Haarmony的博客 5689

智元机器人开源具身仿真框架 Genie Sim 入门教程

GenieSim是AgiBot推出的具身智能仿真框架,提供完整闭环开发管道,包括轨迹生成、模型训练和基准测试。框架支持Docker容器化部署,要求Ubuntu 22.04和NVIDIA硬件环境。主要功能涵盖: 支持12种基准测试任务 提供ADER评估框架 集成UniVLA/RDT等基线模型 支持PICO/键盘遥操作 具备轨迹记录回放功能 提供完整API控制接口 开发者可通过Hugging Face获取场景资产,使用标准化ROS主题与仿真环境交互。框架特别优化了碰撞检测和抓取物理模拟,适用于从简单抓取到复杂操

2506_90492529的博客 2542

NOIP2016 提高组总结

题解每天的第二题和第三题题解已经在我的博客中放出 链接: NOIP2016提高组 第一天第二题 天天爱跑步running 题解 NOIP2016提高组 第一天第三题 换教室 classroom 题解 NOIP2016 提高组 第二天第二题 蚯蚓earthworm 题解 NOIP2016提高组 第二天第三题 愤怒的小鸟angrybirds 题解 洛谷题目链接第二次参加提高组,原来的目标是5

Jacky35 8090

ROS2 多机器人导航仿真入门教程(一)

RMF 是建立在 ROS 2 基础上的一系列可重复使用、可扩展的库和工具,可实现任何类型机器人系统的异构机群的互操作性。RMF 利用标准化的通信协议与部署机器人的基础设施、环境和自动化系统进行通信,以优化关键资源(如机器人、电梯、门、通道等)的使用。它通过资源分配和通过 RMF 核心(将在本书后面详细介绍)防止共享资源冲突,从而为系统增加智能。RMF 灵活而强大,几乎可以在任何通信层上运行,并与任何数量的物联网设备集成。RMF 的架构设计允许随着环境自动化水平的提高而扩展。

2506_90492529的博客 1659

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NOIP2011-2018提高组解题报告

NOIP2011-2018提高组解题报告

青少年趣味编程 538

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

洛谷 [NOIP2016 提高组] 玩具谜题

洛谷NOIP2016算法题玩具谜题

夜深人静写代码 1037

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

P1563 [NOIP2016 提高组] 玩具谜题【模拟】

NOIP2016 提高组 D1T1。

海岛Blog 1224

洛谷[NOIP 2016 提高组] 组合数问题

(t×n×m)对于 题目数据超时了,查询部分时间复杂度过高。一个很容易想到的优化便是:在预处理时,同时预处理出每个 n , m 对应的答案,将查询部分优化到 O ( 1 ) ,用到了二维前缀和。(n,m)遍历所有可能的 (i,j),计算组合数 (i,j),并判断是否能被 k 整除。对于每组测试数据,需要遍历 O(n×m)对于(i,j)。如果有 t 组测试数据,总时间复杂度为:O。根据组合数的定义,我们可以给出计算组合数。:这道题暴力算的话会超时,方法描述:对于每组测试数据。行,每行一个整数代表所有的。

2302_79431881的博客 1336

P1563 [NOIP 2016 提高组] 玩具谜题

NOIP2016 提高组 D1T1。

27届Java后端炒粉练习生,AICoding中........ 969

P2822 [NOIP2016 提高组] 组合数问题【打表】

NOIP2016 提高组 D2T1。

海岛Blog 986
上一篇: ATP的NOIP2016爆零记
下一篇: [BZOJ3337]ORZJRY I(块状链表)
FromATP
博客等级 码龄10年 75粉丝 163原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值