NOIP 2023 游记

· · 个人记录

day -6(11.11)

双十一打模拟赛。

挂分。

电脑抽搐,并且旁边两个大神一起压制我。

day -2(11.15)

考完期中了,数学最后一题超纲太离谱了吧。

CSP 榜还没出来就 NOIP 了。有点紧张。

不过其实没什么,想想我 J 第一二题都挂到了 90 的好成绩,肯定 RP 转移了。

SX 有无面基?

晚上打 NFLS-S,前四题 AK,第一次 AK 普及赛。

day -1(11.16)

做了道紫题。

学校跳蚤市场了,还挺好玩的。

day 0(11.17)

运势大吉。

写题解,求 RP++。

day 1(11.18)

早晨 7:10 出发。

去了之后真的好冷啊。进楼以后碰见了同学。

开始前略,写了快读和文件输入输出。

先看 T1,发现好像可做。

明显的,一个串的最小字典序如果比任意另一个串的最大字典序还大,就不可能为字典序最小的串。

所以就写出来了。

看 T2。明显并查集,但是写了一半意识到了一个问题:如果一个更新了,那么与以前在一个集合的变量就有可能不在一个集合了啊!废了,看 T3T4。

T3 一眼就是神秘数据结构,T4 B 性质还行,写了一下。

随后想到了 T1 可以开桶加速字典序比较,所以扭头写 T1。侧大样例 573ms。应该很稳吧。

随后又看见了 T4T2 小数据可以二进制枚举,于是写了些,最后死磕 T3,没收获。

预估 100+20+0+16~100+25+5+21,没拉爆 xsy。

总结:挺满意的,前 20 问题稍大,估计进不了初中前三。不过 S6 级勾已经很爽了。

upd on 2024.8.15:实际 100+20+0+8=128,挂了一些分但是在接受范围内。

#include<bits/stdc++.h>
#define rep(a,l,r) for(int a=l;a<=r;a++)
using namespace std;
int read(){
    int x=0,f=1;char c=getchar();
    while(c<48||c>57){if(c=='-')f=-1;c=getchar();}
    while(c>47&&c<58)x=(x<<1)+(x<<3)+c-48,c=getchar();
    return f?x:-x;
}
char str[3005];
int n,m;
struct node{
    int cnt[27];
}dic[3005];
bool p(int x,int y){
    int strx,stry;
    rep(i,0,25)
        if(dic[x].cnt[i]){
            strx=i;
            break;
        }
    rep(i,0,25)
        if(dic[y].cnt[25-i]){
            stry=25-i;
            break;
        }
    if(strx>=stry) return 1;
    else return 0;
}
int main(){
    freopen("dict.in","r",stdin);
    freopen("dict.out","w",stdout);
    n=read(),m=read();
    rep(i,1,n){
        scanf("%s",str);
        rep(j,0,m-1) dic[i].cnt[str[j]-97]++;
    }
    rep(i,1,n){
        bool fl=1;
        rep(j,1,n)
            if(j!=i&&p(i,j)){
                fl=0;
                break;
            }
        putchar(fl+48);
    }
    return 0;
}
/*
    Name: T1
    Copyright: 100
    Author: zgy_123
    Date: 18/11/23 12:37
    Description: None
*/
#include<bits/stdc++.h>
#define rep(a,l,r) for(int a=l;a<=r;a++)
using namespace std;
int read(){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
    return f?x:-x;
}
int main(){
    freopen("expand.in","r",stdin);
    freopen("expand.out","w",stdout);
    int q=read();
    rep(i,1,q) cout<<"1";
    return 0;
}
/*
    Name: T3
    Copyright: 0
    Author: zgy_123
    Date: 18/11/23 12:37
    Description: None
*/
#include<bits/stdc++.h>
#define rep(a,l,r) for(int a=l;a<=r;a++)
using namespace std;
int read(){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
    return f?x:-x;
}
struct node{
    int x,y,v;
}a[1005];
int day_[20];
void worksub1(int n,int m,int k,int d){
    rep(i,1,m) cin>>a[i].x>>a[i].y>>a[i].v;
    long long ans=0;
    rep(i,0,(1<<n)-1){
        long long tot=0;
        rep(j,0,n-1) day_[j+1]=(day_[j]+1)*(i&(1<<j));
        rep(j,0,n-1) tot-=d*(i&(1<<j));
        rep(i,1,m) if(day_[a[i].x]>=a[i].y) tot+=a[i].v;
        ans=max(ans,tot);
    }
    cout<<ans<<endl;
}
void worksub2(int n,int m,int k,int d){
    long long ans=0;
    while(m--){
        int x=read(),y=read(),v=read();
        if(y<=k) ans+=max(0ll,v-1ll*y*d);
    }
    cout<<ans<<endl;
}
int main(){
    freopen("run.in","r",stdin);
    freopen("run.out","w",stdout);
    int t=read();t=read();
    while(t--){
        int n=read(),m=read(),k=read(),d=read();
        if(n<=18) worksub1(n,m,k,d);
        else worksub2(n,m,k,d);
    }
    return 0;
}
/*
    Name: T4
    Copyright: 16
    Author: zgy_123
    Date: 18/11/23 12:36
    Description: None
*/
#include<bits/stdc++.h>
#define rep(a,l,r) for(int a=l;a<=r;a++)
using namespace std;
int read(){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
    return f?x:-x;
}
struct node{
    char op;
    int x,y;
}a[15];
int val[15],val2[15];
void worksub1(int n,int m){
    int ans=2e9;
    rep(tf,0,(1<<n)-1){
        for(int t=tf;;t=(t-1)&tf){
            int cnt=0;
            rep(i,0,n-1){
                if((tf&(1<<i))==0) val[i+1]=0,cnt++;
                else if(t&(1<<i)) val[i+1]=1;
                else val[i+1]=-1;
            }
            rep(i,1,n) val2[i]=val[i];
            rep(i,1,m)
                if(a[i].op=='T') val2[a[i].x]=1;
                else if(a[i].op=='F') val2[a[i].x]=-1;
                else if(a[i].op=='U') val2[a[i].x]=0;
                else if(a[i].op=='+') val2[a[i].x]=val2[a[i].y];
                else val2[a[i].x]=-val2[a[i].y];
            bool fl=0;
            rep(i,1,n) if(val[i]!=val2[i]) fl=1;
            if(fl==0) ans=min(ans,cnt);
            if(t==0) break;
        }
    }
    cout<<ans<<endl;
}
int main(){
    freopen("tribool.in","r",stdin);
    freopen("tribool.out","w",stdout);
    int t=read();t=read();
    while(t--){
        int n=read(),m=read();
        rep(i,1,m){
            cin>>a[i].op>>a[i].x;
            if(a[i].op=='-'||a[i].op=='+') cin>>a[i].y;
        }
        worksub1(n,m);
    }
    return 0;
}
/*
    Name: T2
    Copyright: 20
    Author: zgy_123
    Date: 18/11/23 12:37
    Description: None
*/

听说 xsy CE 了?祝好,但是才一年半就考 NOIplus,拉爆我。我一年半还在学树,他一年半学线段树和摩尔投票。。。