【2019.10.27】

题目 题解

T1是道睿智题,理解题意花了20min,出题人的样例给了相当没给,用自己的话翻译了下题面后发现没注意到a1也可以更改,于是就想到了读入时线型预处理下每组等差数列,结构体记下末尾的序号、编号和数列长度;再枚举数列,合并算len,ans就是max(ans,ans+len);

#include<bits/stdc++.h>
#define ri register int
#define ll long long
#define For(i,l,r) for(ri i=l;i<=r;i++)
#define Dfor(i,r,l) for(ri i=r;i>=l;i--)
using namespace std;
const int M=1e5+5;
int n,k,a[M],ans,cnt=1,vis[M],len;
struct node{
    int x,e,l;
}f[M];
inline ll read(){
    ll f=1,sum=0;
    char ch=getchar();
    while(!isdigit(ch)){if(ch==‘-‘)f=-1;ch=getchar();}
    while(isdigit(ch)){sum=(sum<<1)+(sum<<3)+(ch^48);ch=getchar();}
    return f*sum;
}
int main(){
    freopen("chess.in","r",stdin);
    freopen("chess.out","w",stdout);
    n=read(),k=read();
    For(i,1,n){
        a[i]=read();
        if((i>1)&&(a[i]-a[i-1]==k)){
            f[cnt].l++;
        }
        else{
            if(f[cnt].l) f[cnt].x=i-1,f[cnt].e=a[i-1],f[cnt].l++,cnt++;
        }
    }
    if(f[cnt].l) f[cnt].x=n,f[cnt].e=a[n],f[cnt].l++;
    else cnt--;
    For(i,1,cnt){
        //cout<<f[i].x<<" "<<f[i].e<<" "<<f[i].l<<endl;
        if(!vis[i]){
            vis[i]=1;len=f[i].l;
            for(ri j=i+1;j<=cnt;j++,!vis[j]){
                if(f[j].e-f[i].e==(f[j].x-f[i].x)*k){
                    vis[j]=1;
                    len+=f[j].l;
                }
            }
        }
        ans=max(ans,len);
    }
    if(!ans) ans=1;
    printf("%d",n-ans);
    return 0;
} 

T2题目好懂,but从我做的少的可怜的字符串题来看十分不可做。题意就是问一串字符中有多少子串位移后不改变原串(然而我没总结出来)。最简单的枚举需要对string函数比较了解(std我也够菜),正解我也不太可(KMP和哈希忘干净了...赶紧刷题

简单暴力:

#include<bits/stdc++.h>
#define ri register int
#define ll long long
#define For(i,l,r) for(ri i=l;i<=r;i++)
#define Dfor(i,r,l) for(ri i=r;i>=l;i--)
using namespace std;
string a,b,s,p;
int sum,len;
inline ll read(){
    ll f=1,sum=0;
    char ch=getchar();
    while(!isdigit(ch)){if(ch==‘-‘)f=-1;ch=getchar();}
    while(isdigit(ch)){sum=(sum<<1)+(sum<<3)+(ch^48);ch=getchar();}
    return f*sum;
}
int main(){
    freopen("substring.in","r",stdin);
    freopen("substring.out","w",stdout);
    cin>>s;
    len=s.size();
    For(i,1,len){
        For(j,i,len){
            b=s;
            a=s.substr(i-1,j-i+1);
            b.erase(i-1,j-i+1);
            int slen=b.size();
            For(k,0,slen){
                p=b;
                p=p.insert(k,a);
                if(p==s) sum++;
            }
        }
    }
    printf("%lld",sum);
    return 0;
}

%正%解%(先嫖上):

#include <bits/stdc++.h>

#define up(__i,__start,__end) for (int __i = (__start); __i <= (__end); __i++)
#define down(__i, __start,__end) for (int __i = (__start); __i >= (__end); __i--)

typedef long long ll;
typedef unsigned long long ull;
template<typename T> inline bool cmax(T &a, T b) {return a < b ? a = b, 1 : 0;}
template<typename T> inline bool cmin(T &a, T b) {return a > b ? a = b, 1 : 0;}

const ull bs = 17171;
const int maxn = 6e3 + 5;

int n, cnt[maxn], f[maxn][maxn];
char s[maxn];
ull h[maxn], pw[maxn];

inline ull hit(int cl, int cr) {return h[cr] - h[cl - 1] * pw[cr - cl + 1];}

int main() {

    freopen("substring.in", "r", stdin);
    freopen("substring.out", "w", stdout);

    scanf("%s", s + 1);
    n = std::strlen(s + 1);
    pw[0] = 1;
    up (i, 1, n) pw[i] = pw[i - 1] * bs, h[i] = h[i - 1] * bs + s[i];
    ll ans = 0;
    up (len, 1, n) {
        up (i, 0, n) cnt[i] = 0;
        up (i, len, n) {
            cnt[i] = 1;
            if (i - len * 2 >= 0) cnt[i] += hit(i - len + 1, i) == hit(i - len - len + 1, i - len) ? cnt[i - len] : 0;
            cmax(f[i - cnt[i] * len + 1][i], cnt[i]);
        }
    }
    up (i, 1, n) down (j, n, i) {
        cmax(f[i][j], 1);
        int len = (j - i + 1) / f[i][j];
        if (i + len <= j) cmax(f[i + len][j], f[i][j] - 1);
        if (j - len >= i) cmax(f[i][j - len], f[i][j] - 1);
        ans += 1 + (f[i][j] - 1) * 2;
    }
    printf("%lld\n", ans);

    return 0;

}

T3题都没读懂搞好久,不如去搞T2,所以一题不花太长时间,一种思路不花太长时间。题解也没解释样例,依旧不懂。

原文地址:https://www.cnblogs.com/jian-song/p/11748804.html

时间: 2024-11-05 23:31:40

【2019.10.27】的相关文章

【2019.10.18】luogu TG5动态规划进阶

树形dp P1352 没有上司的舞会 P2607 骑士(review) 对于每一个"联通快" 只有根节点有机会形成环 强制不选\(rt\)和\(rt\)的父亲 各跑一遍 P1131 时态同步(review) 贪心 显然增加深度约小的边越优 从下到上来调整 先将同一个点的儿子们延伸到一样 再往上进行一样的操作 //apio 烟火 树上背包? 一棵\(n\)个点的树,有点权.选择一个大小不超过\(K\)的联通块,使得点权和最大.\(n ≤ 2000\) \(f(x, i)\)表示\(x\)

【2019.10.8】

T1.方阵 题意:n*m的方阵,第i列j行的值为Xij,给定几个矩形的左上角和右下角,问SUM/ MAX/ MIN? 题解:我是打的前缀和求SUM,但是遇到MAX和MIN就直接跪了打的枚举,拿了40暴力分. 代码: 原文地址:https://www.cnblogs.com/jian-song/p/11634925.html

【2019.10.25】

summary 分情况拿分保底真的很好用 像我这种辣鸡应该注意保底 打题不要慌 有条理 不要东一条西一条 小奇采药 对于 30% 的数据,O(2n ) 枚举取 or 不取 对于 60% 的数据,O(nm) 做 01 背包,即 f(i, j) 表示前 i 株 草药,耗费 j 的时间能达到的最?代价. 对于 100% 的数据,注意到 m,t,v 纯随机 那么不会选太多的草药,?耗时较少的草药有很?概率存在 于最优解中 针对这些性质优化搜索 当然也可以合理使用随机化和卡时,复杂度 O(?学) 最基础6

【2019.10.30】意料之外的小黄衫——获得小黄衫感言

前言 能在还没到期末之前就获得小黄衫确实是出乎我的意料 能被选中小黄衫真的是非常开心 在大家的印象中 我也许就是那么一个臭打游戏的男生 和大家所了解的"宅男"无异 我乐于交流却不擅长于交际 相比于侃侃而谈更偏向于喜欢默默思考 这样子的我 有什么原因能被选上小黄衫呢? 我想, 擅于观察生活的眼睛 与乐于解决问题的双手 以及一颗勇于实践的内心 这些都是主要的原因吧 在大一大二的时候我上课学习理论 期末也是理论考试 我对这样只追求分数的大学生活渐渐感到了疲惫 我所认知的计算机就该是这样子的吗

【Windows 10 IoT】为Win10 IoT镜像添加默认应用(树莓派)

[Windows 10 IoT]为Win10 IoT镜像添加默认应用(树莓派) 在Windows 10 IoT应用程序开发好之后,一般通过IoT WebManagement或者直接用vs将应用部署上去.并且执行命令iotstartup.exe add headed/headless AppxID,将应用设置为开机启动.但是,如果想基于一个开发板,量产某种硬件设备,这种方式肯定是不可行的. 我们会想到,是否可以将我们的应用直接打包到镜像中,并设置成为开机自启的默认应用呢?当然可以. 基本原理是这样

2019.10.27 头条面试准备

2019.10.27 头条面试准备 个人简历 2019.06 - 至今上海华为开发工程师 实习部门:5G开发部 项目:网站开发.运维开发.数据处理 2019.06至今华为实习 Python+Django+Javascript+Nginx+rabbitMQ+ELK 基于 Django 框架使用 Python 开发网站基础进程监控系统,实现进程异常记录.进程异常自动恢复.发送告警邮件,并且用 Web 界面进行展示和管理.整个框架由本人独立设计完成并上线,保证了部门 Web 的稳定. 使用Python

Flask学习【第10篇】:自定义Form组件

wtforms源码流程 实例化流程分析 1 # 源码流程 2 1. 执行type的 __call__ 方法,读取字段到静态字段 cls._unbound_fields 中: meta类读取到cls._wtforms_meta中 3 2. 执行构造方法 4 5 a. 循环cls._unbound_fields中的字段,并执行字段的bind方法,然后将返回值添加到 self._fields[name] 中. 6 即: 7 _fields = { 8 name: wtforms.fields.core

【2018.10.4】二连爆搜+再次出锅

T1:五子棋 [题目描述] 五子棋是世界智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏.通常双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连珠者获胜. 五子连珠是在 横线,纵线,斜线,反斜线 四个方向上形成五子及以上的连线,当出现多于五子的连珠时,也只记为一次五子连珠. 五子连珠总数. 等于棋局中的所有方向上的五子连珠连线的数量之和.我们想知道,给定一个长宽皆为 n 的棋局,白棋落在哪些点可以增加白棋五子连珠总数?对增加白棋五子连珠总数的举例说明 (A 点为我们选

【2019最新版】免接口!!涛舅舅轻奢版视频强制裂变程序,免公众号免备案域名!

轻奢版视频强制裂变程序[免接口版]正式上线,不需要认证公众号和备案域名! 优化防封和跳转逻辑,入口.落地.分享域名全部隔离 并加入针对微信IOS版的特殊防封策略! 除了分享卡片没有“小字描述”和“分享图标”以外,其他功能和[接口版]基本无差异! 轻奢版视频免接口版主要更新如下: 1.代码完全重构,大范围增强了程序的健壮性! 2.加入FuckXX脚本,禁止一切XX节点的访问,优化防封! 3.加入来路判断,非法访问将禁止,强化防封! 4.数据全部缓存化,前台完全避免对数据库的请求调用,所有数据调用全