首页 > 其他分享 >[USACO12JAN]Video Game G【AC自动机+DP】

[USACO12JAN]Video Game G【AC自动机+DP】

时间:2022-08-24 06:12:32浏览次数:66  
标签:为什么 AC ch int USACO12JAN Game fail DP

“Can a man still be brave if he’s afraid?”
“That is the only time a man can be brave.”

每天六点多起床,整理好寝室内务后就去图书馆研读论文和处理邮件,完成后开vue写前端准备项目,中途还要跑去做核酸和水军理课,因为组上项目的事迟到了两次军训了,九点结束后疲惫地赶往图书馆改改改,改完基本接近闭馆,回寝室刷一两道ACM题,写写有的没的博客,半死不活地倒在床上,而这也是平常的一天,本应如此……

Why do you think I came all this way?

为什么,看见了她的照片,为什么,她笑得那么开心,为什么,我为她的快乐也感到快乐
总是这样
总是这样,每次都是
我会窥见自己内心的阴暗面,我其实想的是
为什么,她家境那么好,为什么,她那么天生丽质,为什么,她能从小一路名校受到那么好的教育
我怎么配追一个各方面碾压自己的女孩,只凭两人涉世未深时那些单纯愉快的交谈?本就不是同一个世界的人,本就不是
我是不是,还可以更努力一点?
不,爱是理性的死亡,那么理性同样可以是爱的死亡
这么多年,武汉大学里,在正式开学前就主动联系教授并成功加入项目组的学生,我是第一个,这并不是值得高兴的事,与其说是上进,不如说是来自久远岁月的自卑作祟。
自从艾斯黛拉与皮普于废墟间重逢,我已迷失太久
我安静地看着周围,女孩子恋爱脑,男孩子精虫上脑;我又向里面看,浅薄、做作、失礼、自以为是的自己
我厌恶的不是庸俗的喧嚣,而是不能超脱其中的自己
我已无数次试图逃离
无数的泪水,方才构成我们的世界,你听见了吗,从东边天空升起的世界
一生用追寻来掩饰逃离,失败后又靠臆想舔舐伤痕
我出生于贫困的山林
我最重要的哥哥在我眼前死去
我最擅长的折纸是小时候为了摆摊卖钱补贴家用被迫所学
我仅仅考上个985就成了全乡里的谈资……
其实上高中后,家里经济状况渐渐也好转了,足以让我带着R7000来学校了。可是,为了一口水走几公里外打水的记忆,是再多可乐奶茶也淹没不了的
地球有七十亿人,有人能告诉我吗
为什么,哥哥会死啊,为什么,我力气那么小,没能拉哥哥上来啊,为什么,我的故乡那么闭塞,没能救回哥哥啊
为什么,那么多年了,偏偏今晚情绪再也控制不住了
我至今清晰地记得哥哥从强装镇定安抚我,到虚弱至极却不放弃希望的眼神,直到最终在黑暗中安静下来的空洞瞳孔…………
我后来也意识到,我从未从那晚黛青色的暮光里走出来,那段惨剧已经刻进我的灵魂,我像是上了发条的人偶,向着前方跌跌撞撞
上了发条的人偶吗?这个比喻,好像还不错
我是不会停下来的
因为在那个晚上,在凝视哥哥发散的瞳孔时,我就已经没把自己当活着了
中国十几亿人,没有谁会关注一个悲惨的农村家庭,也没有谁会留意一个心浮气躁的大一新生
更没有人会知道,他曾经多么相信考上名校就可以改写命运,到头来,却发现什么都没改变
就如他没人会看的博客,已经都快沦落成日记本了呵_
弗洛伊德说,人是同时崇尚生存与死亡的存在
我所理解的死亡,是在某个安静的傍晚,独自走在河畔,夕阳落红染赤了粼粼波光,和风正好,芦苇摇曳,于是我坐下,对自己说,啊,我要死在这了
在等到那遥远的夕阳前,还是挺起胸膛吧,没有什么比赶路更能让人忘却曾经
\(AC\)自动机上跳\(fail\)统计答案即可,常规\(DP\),毕竟\(trie\)图的\(DP\)都大同小异的

$Why$ $do$ $you$ $think$ $I$ $came$ $all$ $this$ $way$
# include "bits/stdc++.h"
using namespace std;
constexpr int N = 1003;
struct Ahio_Corasick_Automation {
    struct node {
        int ch[3], fail, tot;
    } t[N]; // hey, guys. I found that writing structure is more elegent and happy :)
    int trie_index;
    void insert(char *str) {
        int len = strlen(str + 1), u = 0;
        for(int i = 1; i <= len; ++i) {
            int v = str[i] - 'A';
            if(!t[u].ch[v]) t[u].ch[v] = ++trie_index;
            u = t[u].ch[v];
        }
        ++t[u].tot;
    }
    void build() {
        queue<int> q;
        for(int i = 0; i < 3; ++i) {
            if(t[0].ch[i]) {
                q.push(t[0].ch[i]);
            }
        }
        while(!q.empty()) {
            int u = q.front();
            q.pop();
            for(int i = 0; i < 3; ++i) {
                int &v = t[u].ch[i];
                if(v) {
                    t[v].fail = t[t[u].fail].ch[i];
                    q.push(v);
                }
                else {
                    v = t[t[u].fail].ch[i];
                }
            }
            t[u].tot += t[t[u].fail].tot; // save the time from jumping fail
        }
    }
} AC;
char str[N];
int main() {
    int n, K;
    scanf("%d%d", &n, &K);
    for(int i = 1; i <= n; ++i) {
        scanf("%s", str + 1);
        AC.insert(str);
    }
    AC.build();
    
    vector f(K + 1, vector<int>(AC.trie_index + 1, -0x3f3f3f3f));
   	f[0][0] = 0;
    for(int i = 1; i <= K; ++i) {
        for(int j = 0; j <= AC.trie_index; ++j) {
            for(int k = 0; k < 3; ++k) {
                f[i][AC.t[j].ch[k]] = max(f[i][AC.t[j].ch[k]], f[i - 1][j] + AC.t[AC.t[j].ch[k]].tot);
            }
        }
    }
    int ans = -0x7fffffff;
    for(int i = 0; i <= AC.trie_index; ++i) {
        ans = max(ans, f[K][i]);
    }
    printf("%d", ans);
    return 0;
}

image

标签:为什么,AC,ch,int,USACO12JAN,Game,fail,DP
From: https://www.cnblogs.com/bingoyes/p/16618422.html

相关文章

  • HCNP Routing&Switching之MAC安全
    前文我们了解了GREoverIPSec相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16601491.html;今天我们来聊一聊mac安全相关话题;先来回顾下二层交换机......
  • 1040 [USACO 2014 Mar S]Watering the Fields 最小生成树
     链接:https://ac.nowcoder.com/acm/problem/24587来源:牛客网题目描述Duetoalackofrain,FarmerJohnwantstobuildanirrigations......
  • 栈(Stack)和队列(Queue)
    一 栈(Stack):一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守先进后出。  ......
  • [AcWing 167] 木棒
    DFS剪枝点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=1e6+10;intn;intw[N];intsum,len;boolst......
  • React报错之React hook 'useState' cannot be called in a class component
    正文从这开始~总览当我们尝试在类组件中使用useState钩子时,会产生"Reacthook'useState'cannotbecalledinaclasscomponent"错误。为了解决该错误,请将类组件转换......
  • 2022河南萌新联赛第(七)场:南阳理工学院ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛牛客
    2022河南萌新联赛第(七)场:南阳理工学院ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛牛客竞赛OJ(nowcoder.com)1.B-龍_2022河南萌新联赛第(七)场:南阳理工学院(nowcoder.com)......
  • 【笔记】oracle using
    oracleusing在oracle中,using用于简化连接查询,只有当查询是等值连接和连接中的列必须具有相同的名称与数据类型时,才能使用using关键字进行简化比如原来是selects.user_......
  • 开坑之Acwing算法进阶课题单
    当初五折的时候冲动消费买下的,现在看题单内容挺丰富的,适合打基础,也适合存板子,于是回来刷.(不一定看视频)需要学习的知识点包括1图论1.1网络流1.1.1最大流1.1.1.1算......
  • centos8 安装 oracle11 报错(Could not create the Java virtual machine)
    centos8安装oracle11报错TherewasanerrortryingtoinitializetheHPIlibrary.Pleasecheckyourinstallation,HotSpotdoesnotworkcorrectlywheninsta......
  • [ACTF新生赛2020]swp
    下载文件,解压出来是流量包寻找http协议导出为http对象在这里有个zip文件把这个zip文件导出来直接用7zip打开这个secret.zip里的.flag.swp记事本打开直接找到fla......