1.14闲话

感觉近期接近神话的都神话了,现在中V里貌似没有几个接近神话的了,所以稔就直接用大量的联动去大力推歌行四方来机械降神了是吧

推歌:降临宇宙/洛天依 by 索尼音乐

当时第一遍看的时候最开始看到染成黑色的十周年的模型其实挺蒙的,但是十周年的模型确实好看,后面拿出电吉他那一刻其实挺震撼的

昨天放假没写闲话,因为回家之后光听歌了忘了

导致现在脑里一直在循环几首歌的片段

蝶变的butterfly butterfly butterfly

万物有灵的有多少 不经意的喧嚣 穿越世界的浩邈,交织成我歌谣 在你耳畔停靠,生命的祈祷 是风吹拂过树梢 万物曾来过的记号

和四重罪孽的现在向下穿越,向下穿越,主人换了我自由,各位观众朋友,观众朋友,有没有将我想念,我不会再离开,因为有着,恐惧在她血里面,我要继续加害,继续加害,妄想的女孩

绝体绝命的一差二错,三分愚昧,四分五裂到毁灭

不老不死的我让死断绝 灵魂也一起奉献 就算牺牲一切温柔与纯洁 我永生于世 踏遍每一座山岳 却又无法踏进内心的梦魇

世末歌者的我仍然在无人问津的阴雨霉湿之地,并合着雨唱着没有人听的歌曲

世末积雨云的为世界终结前最后的画面,配上的将会是怎样的旁白,生命情节究竟要如何更改,才不至于显得过于倦赖

歌行四方的ayalahula

我们发现这些都是一些非常能抓住耳朵的片段(歌行四方存疑),但是都是基本在歌曲偏后,我给别人听歌的时候别人告诉我开头不是非常好听就没听我非常恼

所以现在大多数人都是比较喜欢听那种上来把好听的部分放出来的吗,好奇怪

我去,HS_xh怎么备战期末去了,恼了

改模拟赛的题

  • A.

    这不无意义小模拟题目吗,直接对所有炸弹附近的八个格子里的数+1,并把炸弹赋值为INF,输出时若发现存的比INF大或者是INF就输出*,否则直接输出就行

    我的代码好像也挺抽象的

    Vsinger_乐正龙牙
    #include<bits/stdc++.h>
    #define int long long
    inline int read(){
        int f=1,s=0;char ch=getchar();
        while(ch<'0'||'9'<ch){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
        return f*s;
    }
    using namespace std;
    namespace SOLVE{
        char map1[1005][1005];
        int map2[1005][1005];
        const int INF=0x66CCFF0712;
        inline void IN(){
            int n=read(),m=read();
            for(int i=1;i<=n;i++)
                for(int j=1;j<=m;j++)
                    cin>>map1[i][j];
            for(int i=1;i<=n;i++)
                for(int j=1;j<=m;j++)
                    if(map1[i][j]=='*'){
                        map2[i][j]=INF;
                        map2[i-1][j-1]++;
                        map2[i-1][j]++;
                        map2[i-1][j+1]++;
                        map2[i][j-1]++;
                        map2[i][j]++;
                        map2[i][j+1]++;
                        map2[i+1][j-1]++;
                        map2[i+1][j]++;
                        map2[i+1][j+1]++;
                    }
            for(int i=1;i<=n;i++){
                for(int j=1;j<=m;j++){
                    if(map2[i][j]>=INF) cout<<"*";
                    else cout<<map2[i][j];
                }
                puts("");
            }
        }
    }
    signed main(){
        SOLVE::IN();
    }
    
  • B

    因为题目让求不平行的线,考虑建立平面直角坐标系,在其中斜率相同的一定平行

    那么题目就可以转化为求不相等的斜率的个数

    非常不好的是根据shadow的理论是不能用double来存的,因为存在精度误差,所以直接存最简分子和分母来统计

    呃呃但是其实好像是可以的,因为我的代码在 jijidawang 的大力修改下 100pts 了

    但是我代码写的太好被jijidawang怒D了

    Vsinger_乐正绫
    #include<bits/stdc++.h>
    #define IN VSINGER_LUOTIANYI
    #define int long long
    inline int read(){
        int f=1,s=0;char ch=getchar();
        while(ch<'0'||'9'<ch){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
        return f*s;
    }
    using namespace std;
    namespace SOLVE{
        pair<int,int> map1[1000005];
        set<double> s;
        bool flag1,flag2;
        const int INF=0x66CCFF0712;
        inline  double solve(int x1,int x2,int y1,int y2){
            if(x1==y1) return INF;
            if(x2==y2) return INF+1;
            return (1.*((x1-y1)) / ((x2-y2)));
        }
        inline void IN(){
            int n=read();
            for(int i=1;i<=n;i++){
                map1[i].first=read(),map1[i].second=read();
                for(int j=1;j<i;j++)
                    s.insert(solve(map1[j].first,map1[j].second,map1[i].first,map1[i].second));
            }
            cout<<s.size();
        }
    }
    signed main(){
        SOLVE::IN();
    }
    
  • C

    考虑一个朴素做法:大力求前缀和,然后枚举断开的位置,复杂度\(O(n^2)\)只能过4个点

    再看一眼题面发现是让最大值最小,可以很清晰的发现需要二分答案但是考场上看出来了没写出来

    这个差不多算是最简单的题之一了感觉,甚至可能没T2难但是我二分没打出来啊啊啊啊啊啊啊啊啊啊啊

    Vsinger_言和
    #include<bits/stdc++.h>
    #define IN VSINGER_LUOTIANYI
    #define int long long
    #define mid ((l+r)>>1)
    inline int read(){
        int f=1,s=0;char ch=getchar();
        while(ch<'0'||'9'<ch){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
        return f*s;
    }
    using namespace std;
    namespace SOLVE{
        int a[0x66CCFF];
        inline bool check(int l,int r){
            int num(0),ans(0);
            for(int i=1;i<=r;i++)
                if(num+a[i]<=l)num+=a[i];
                else num=a[i],ans++;
            return ((ans>2)?1:0);
        }
        inline void IN(){
            int l(0),r(0),n=read();
            for(int i=n;i;i--){
                a[i]=read();
                l=max(l,a[i]);
                r+=a[i];
            }
            while(l<=r)
                if(check(mid,n))
                    l=mid+1;
                else
                    r=mid-1;
            cout<<l;
        }
    }
    signed main(){
        SOLVE::IN();
    }
    
  • D

    这道题非常不好,考场上我的大力搜索全TLE了

    警钟长鸣,原因是a[i]=make_pair(read(),read())是不等于int x=read(),y=read();a[i]=make_pair(x,y)

    10pts做法:输出0

    20pts做法1:大力搜索即可

    20pts做法2:输出\(\sum_{i=1}^{n}g_i\)

    思考一下正解,首先我搜索学的不太好所以尽量就不搜了

    • 正解是DP

      大力推转移方程

      众所周知,人和塔都会同步进行攻击,那发扬人类智慧,把人的攻击攒下来当攻击次数用

      但是非常不好的是有的时候塔已经揍了小兵半天的,我们还是一下没打那么就需要额外消耗攻击次数,这是非常显而易见的毕竟回合制?

      小兵还可以抗塔好几下所以记录一下能抗几下

      Vsinger_洛天依
      #include<bits/stdc++.h>
      #define IN VSINGER_LUOTIANYI
      #define int long long
      const int INF=0x66CCFF0712;
      inline int read(){
          int f=1,s=0;char ch=getchar();
          while(ch<'0'||'9'<ch){if(ch=='-')f=-1;ch=getchar();}
          while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
          return f*s;
      }
      using namespace std;
      namespace SOLVE{
          int h[2005000],P,Q,n,f[210][100020],g[2005000],ans;
          struct stu{
              int x,y;
          }a[50050];
          inline void IN(){
              P=read(),Q=read(),n=read();
              for(int i=1;i<=n;i++){
                  h[i]=read(),g[i]=read();
                  a[i].y=(h[i]-1)/Q;
                  a[i].x=(h[i]-a[i].y*Q-1)/P+1;
              }
              for(int i=0;i<=n;i++)
                  for(int j=1;j<=100002;j++)
                      f[i][j]=-INF;
              f[0][1]=0;
              for(int i=1;i<=n;i++)
                  for(int j=0;j<=100002;j++){
                      if(f[i][j+a[i].y+1]<f[i-1][j])
                          f[i][j+a[i].y+1]=f[i-1][j];
                      if(j>=a[i].x-a[i].y)
                          if(f[i][j-a[i].x+a[i].y]<f[i-1][j]+g[i])
                              f[i][j-a[i].x+a[i].y]=f[i-1][j]+g[i];
                  }
              for(int i=0;i<=100002;i++)
                  ans=max(ans,f[n][i]);
              cout<<ans<<'\n';
          }
      }
      signed main(){
          SOLVE::IN();
      }
      

      后记:警惕数据和范围不符骗局

posted @ 2024-01-14 19:57  Vsinger_洛天依  阅读(23)  评论(2编辑  收藏  举报