1.29

xrlong:知道的不知道,不知道的还不知道呢。

xrlong:这要是能过编译我就把这线段树吃了

wkh2008 调了半个小时没输出,发现原来是文件输入输出写错了,应为‘weakness’而他写成了‘weekness’,他称之为‘星期少的’。

然后我发现如图:
image

image

绷,得知 weekness 这个词是百度翻译自己生翻的,乐了


HuTaoImpact因为太闹而被遣返了,集训时间总长 1d19h,寄

HuTaoImpact:待会捂住耳朵,可能声音会有点大。

HuTaoImpact:我下不去手。

知道的知道是打胶,不知道的还以为要大闹机房呢。

总之现在他走了。


无意义内容

我朝二百数年,深仁厚泽,凡远人来中国者,列祖列宗罔不待以怀柔。迨道光、咸丰年间,俯准彼等互市,并乞在我国传教;朝廷以其劝人为善,勉允所请,初亦就我范围,遵我约束。讵三十年来,恃我国仁厚,一意拊循,彼乃益肆枭张,欺临我国家,侵占我土地,蹂躏我人民,勒索我财物。朝廷稍加迁就,彼等负其凶横,日甚一日,无所不至。小则欺压平民,大则侮慢神圣。我国赤子,仇怨郁结,人人欲得而甘心。此义勇焚毁教堂、屠杀教民所由来也。朝廷仍不肯开衅,如前保护者,恐伤吾人民耳。故一再降旨申禁,保卫使馆,加恤教民。故前日有「拳民、教民皆吾赤子」之谕,原为民教,解释夙嫌。朝廷柔服远人,至矣尽矣!然彼等不知感激,反肆要挟。昨日公然有社士兰照会,令我退出大沽口炮台,归彼看管,否则以力袭取。危词恫吓,意在肆其猖獗,震动畿辅。

平日交邻之道,我未尝失礼於彼,彼自称教化之国,乃无礼横行,专肆兵监器利,自取决裂如此乎。朕临御将三十年,待百姓如子孙,百姓亦戴朕如天帝。况慈圣中兴宇宙,恩德所被,浃髓沦肌,祖宗凭依,神祇感格。人人忠愤,旷代无所。朕今涕泣以告先庙,抗慨以示师徒,与其苟且图存,贻羞万古,孰若大张鞑伐,一决雌雄。连日召见大小臣工,询谋佥同。近畿及山东等省义兵,同日不期而集者,不下数十万人。下至五尺童子,亦能执干戈以卫社稷。

彼仗诈谋,我恃天理;彼凭悍力,我恃人心。无论我国忠信甲胄,礼义干橹,人人敢死,即土地广有二十馀省,人民多至四百馀兆,何难减比凶焰,张我国威。其有同仇敌忾,陷阵冲锋,抑或仗义捐资,助益儴项,朝廷不惜破格懋赏,奖励忠勋。苟其自外生成,临阵退缩,甘心从逆,竟作汉奸,朕即刻严诛,绝无宽贷。尔普天臣庶,其各怀忠义之心,共泄神人之愤,朕实有厚望焉!

"向美利坚开栈!向法兰西开栈!向英吉利开栈!向德意志开栈!向日本开栈!向奥匈帝国开栈!向俄罗斯开栈!向意大利开栈!向荷兰开栈!向比利时开栈!向西班牙开栈!向中华民国开栈!向三体开栈!”


image

image

偶像大师的图但是别问我是谁(

本来有张璃亚梦的图但是它有水印所以我没放,璃亚梦真是可爱捏好像抱起来狠狠鸿儒😍😍😍🥵🥵🥵


机房里多了智慧小装置,可以打卡,和智能 AI 聊天,但是 whk 制度入侵机房了😓😓😓每天要打六次卡刚才晚饭差点没打上卡累死了而且迟到了还算违纪怎么难道还给每个人算量化吗如果迟到太多次会被遣返是吧我不颓就很了不起了你还让我到那么早我真是服了反正我过不了几天就走了真他吗难受本来牛没几天还不能好好度过又收手机晚上还不能太大声而且还各种封封封防止我们颓颓颓那我来集训真就除了学 OI 啥也干不了呗但是这好像也挺对的反正来都来了既来之则安之吧。

怎么我现在闲话变成这风格了😨😨😨


今天也是写了若干字符串

学习了 Trie 和 01-Trie,但是写的题都挺板的,可能是难题现在也写不了了吧。

OKR-Periods of Words
KMP,找到前缀后继续找前缀的前缀,因为 border 的一些性质可以得到字符串的最小 border.

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+50;
const int p=1e9+7;
int n,lb,next_[N];
int ans;
int min_border[N];
char a[N];
signed main()
{
    cin>>n;
    cin>>a+1;
    for(int i=2,j=0;i<=n;++i)
    {
        while(j && a[i]!=a[j+1])
            j=next_[j];
        if(a[j+1]==a[i]) j++;
        next_[i]=j;
    }
    for(int i=1;i<=n;++i)
    {
        int j=i;
        while(next_[j]) j=next_[j];
        if(next_[i]) next_[i]=j;
        ans+=(i-j);
    }
    cout<<ans;
}

Trie

最基础的板子(判断是否有 $A$ 串为 $B$ 串的前缀)
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+5;
const int p=1e9+7;
int n,tot,nxt[N],k,t;
int root,len;
int trie[N][30];
int f[N];
inline void insert(string s)
{
    int len=s.size();
    int root=1;
    for(int i=0;i<len;++i)
    {
        int x=s[i]-'0';
        if(!trie[root][x])
            trie[root][x]=++tot;
        root=trie[root][x];
    }
    f[root]=1;
}
inline int find(string s)
{
    int len=s.size();
    int root=1;
    for(int i=0;i<len;++i)
    {
        int x=s[i]-'0';
        if(!trie[root][x]) return 0;
        root=trie[root][x];
        if(f[root]) return 1;
    }
    return 1;
}
signed main()
{
    cin>>t;
    while(t--)
    {
        memset(trie,0,sizeof(trie));
        memset(f,0,sizeof(f));
        tot=1;
        int ans=0;
        cin>>n;
        for(int i=1;i<=n;++i)
        {
            string s;
            cin>>s;
            if(find(s)) ans=1;
            insert(s);
        }
        if(ans) cout<<"NO"<<'\n';
        else cout<<"YES"<<'\n';
    }
}

01-Trie

两点异或最大和
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+5;
const int p=1e9+7;
int n,tot,nxt[N],k,t;
int root,ans;
int trie[N][2];
int s[N];
inline void insert(int x)
{
    int root=0;
    for(int i=31;i>=0;--i)
    {
        int c=(x>>i)&1;
        if(!trie[root][c])
            trie[root][c]=++tot;
        root=trie[root][c];
    }
}
inline int find(int x)
{
    int root=0;
	int ans=0;
    for(int i=31;i>=0;--i)
    {
        int c=(x>>i)&1,o=c^1;
        if(trie[root][o]) root=trie[root][o],ans=ans<<1|1;
        else root=trie[root][c],ans<<=1;
    }
    return ans;
}
signed main()
{
	cin>>n;
	for(int i=1;i<=n;++i)
	{
		int x;
		cin>>x;
		ans=max(ans,find(x));
		insert(x);
	}
	cout<<ans;
}
边权异或最大值(放个前向星存图就行)
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+5;
const int p=1e9+7;
int n,tot,nxt[N],k,t;
int root;
int trie[N][2];
int s[N];
struct node
{
    int to,next,w;
}e[2*N];
int head[N],cnt;
inline void add(int u,int v,int w)
{ 
    e[++cnt].to=v;
    e[cnt].next=head[u];
    e[cnt].w=w;
    head[u]=cnt;
}
inline void insert(int x)
{
    int root=0;
    for(int i=31;i>=0;--i)
    {
        int c=(x>>i)&1;
        if(!trie[root][c])
            trie[root][c]=++tot;
        root=trie[root][c];
    }
}
inline int find(int x)
{
    int root=0;
	int ans=0;
    for(int i=31;i>=0;--i)
    {
        int c=(x>>i)&1,o=c^1;
        if(trie[root][o]) root=trie[root][o],ans=ans<<1|1;
        else root=trie[root][c],ans<<=1;
    }
    return ans;
}
int f[N];
inline void dfs(int x,int fa)
{
    insert(f[x]);
    for(int i=head[x];i;i=e[i].next)
    {
        int y=e[i].to;
        if(fa==y) continue;
        f[y]=f[x]^e[i].w;
        dfs(y,x);
    }
}
signed main()
{
	cin>>n;
	for(int i=1;i<n;++i)
	{
        int u,v,w;
        cin>>u>>v>>w;
        add(u,v,w);
        add(v,u,w);
	}
    dfs(1,1);int ans=0;
    for(int i=1;i<=n;++i)
        ans=max(ans,find(f[i]));
	cout<<ans;
}

Nikitosh 和异或

神奇的数据导致可以乱搞做法(非正解,无不良导向)
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
    int n,a,ans=0;
    cin>>n;
    while(n--)
    {
        cin>>a;
        ans|=a;
    }
    cout<<ans*2;
}

$ \text{\color{white}{Hi,想我了嘛?}}$


posted @ 2024-01-29 19:48  HS_xh  阅读(32)  评论(0编辑  收藏  举报
init();