• 国庆贺礼


    $DrinkGrass!$竟然考试了???迟到了$10min$

    Before

    T1

    贪心?

    T2

    规律?

    T3

    毒瘤?

    During

    T1

    2
    2
    4 7
    1 5
    3
    1 4
    4 6
    3 5
    

     是贪心,

    只要让后一个的“浪费”少,

    前面留给后面的多即可。

    于是$Theta(T N log N)$仿佛可过$N=1e5$

    T2

    $O(N log mod)$预处理,$Theta(T)$回答……$emm$

    我疯了?

    应该是吧……

    性质($YY$):

    $(n!)^2=((n-1)!)^2*n^2$ 显然。

    主要要处理分母。

    我想可能和样辉三角有关系……

    $$C_n^i=C_{n-1}^i+C_{n-1}^{i-1}$$

    $$(C_n^i)^2=(C_{n-1}^i)^2+(C_{n-1}^{i-1})^2+2 imes C_{n-1}^{i} imes C_{n-1}^{i-1}$$

    所以维护两个东西,一个是平方和,一个是邻项积和。

    最后就是两倍邻项积和与两倍平方和。

    所以平方转移过来了

    $DrinkGrass$

    邻项积和如何转移?

    继续打表……

    $$emm\[50ex]
    vdots\[50ex]
    $$

    $ans=C_n^0 imes C_n^n+C_n^1 imes C_n^{n-1}+cdots$

    于是建模,拿两个大小为$n$的集合,一个里面选$i$个,另一个里面选$n-i$个。

    仿佛就是$2n$的集合里选$n$个???

    $ans$时大时小……

    迷……

    暴力打错了(身败名裂)

    最后还是打出来啦!

    T3

    我记得我看过马拉车……忘了=。=

    把马拉车套在莫队上$qwq$

    不过我也只能打暴力辣(都不会打$QAQ$)。

    试试 $S^2$ 预处理前缀和?

    老感觉“数据结构”是在唬我~~

    试试打个双向$hash$?

    分治?

    After

    28
    Miemeng 0
    03:14:34
    100
    03:14:34
    20
    03:14:35
    120
    03:14:35

    总结:

    水体……

    T1我写的是正解……但是出于某种玄学的原因(不小心删掉了sort……)WA0

    T2是一个柿子:$C_{2n}^{n}$又是正解

    T3真不是数据结垢,而是真正的数据结构:数组!(其实是$dp$)

    UPD咕掉的T3解:

    设$dp_{i,j}$

    然后上代码:

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #define N 5555
    using namespace std;
    
    bool is_ok[N][N];
    int ans[N][N];
    char st[N];
    int main(){
    	scanf("%s",st+1);
    	int len=strlen(st+1);
    	for(int i=1;i<=len;i++)
    		is_ok[i][i]=1;
    	for(int i=1;i<len;i++){
    		is_ok[i][i+1]=st[i]==st[i+1];
    	}
    	for(int i=2;i<len;i++){
    		for(int j=1;j<=len;j++){
    			is_ok[j][j+i]=is_ok[j+1][j+i-1]&&st[j]==st[j+i];
    			//cout<<j<<" "<<j+i<<" "<<is_ok[j+1][j+i-1]<<endl;
    		}
    	}
    	for(int i=1;i<=len;i++)
    		ans[i][i]=1;
    	for(int i=1;i<len;i++)
    		ans[i][i+1]=2+is_ok[i][i+1];
    	for(int i=2;i<len;i++){
    		for(int j=1;j+i<=len;j++){
    			ans[j][j+i]=ans[j+1][j+i]+ans[j][j+i-1]-ans[j+1][j+i-1]+is_ok[j][j+i];
    		}
    	}
    	int T,a,b;
    	scanf("%d",&T);
    	for(int i=1;i<=T;i++){
    		scanf("%d%d",&a,&b);
    		printf("%d
    ",ans[a][b]);
    	}
    }
    
  • 相关阅读:
    NopCommerce4.2 常见错误及异常处理
    使用NopCommerce微信电商系统
    简单理解Socket
    html5 postMessage解决跨域、跨窗口消息传递
    html5 Web Workers
    node.js module初步理解
    node.js调试
    最简单的JavaScript模板引擎
    简单JavaScript模版引擎优化
    容易被忽略CSS特性
  • 原文地址:https://www.cnblogs.com/kalginamiemeng/p/Exam20191001.html
Copyright © 2020-2023  润新知