T1 排序

题目描述

小Z 有一个数字序列a1; a2; .... ; an,长度为n,小Z 只有一个操作:选

定p(1<p<n),然后把ap 从序列中拿出,然后再插⼊到序列中任意位置。

比如a 序列为1,2,4,5,3,p = 5,可以取出3,然后在任意位置插入,可

以变为1,2,3,4,5。

现在给你一个序列a,问你是否可以通过一次操作把整个序列从小到大

排好序(变成不降的)。

输入输出格式

输入格式:

第一行一个整数n,第二行空格隔开的n 个整数,代表a 序列。

输出格式:

如果可以n次操作可以排好序,输出”YES”,否则输出”NO”。

输入输出样例

输入样例#1:

5
1 2 4 5 3
输出样例#1:

YES

说明

对于30% 的数据,满足n <=1000。

对于60% 的数据,满足n <=10^5。

对于100% 的数据,满足n <=10^6; 1 <=ai <=10^6。

一个大模拟、、挺水的(具体模拟过程看代码吧)

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 1000010
using namespace std;
int n,s,a[N],b[N];
int read()
{
    ,f=; char ch=getchar();
    ; ch=getchar();}
    +ch-',ch=getchar();
    return x*f;
}
int main()
{
//    freopen("sort.in","r",stdin);
//    freopen("sort.out","w",stdout);
    n=read();
    ;i<=n;i++)
     a[i]=read(),b[i]=a[i];
    ;i<=n;i++)
    {
        ]) continue;
        s++;
        ]>b[i]&&b[i-]>b[i+]) {printf(;}
        ]>b[i+]) b[i]=b[i-];
        ];
        ) {printf(;}
    }
    printf("YES");
    ;
}

AC代码

T2 同余方程组

题目描述

求关于x 的同余方程组

x%a1 = b1
x%a2 = b2
x%a3 = b3
x%a4 = b4
的大于等于0 的最小整数解。

输入输出格式

输入格式:

一行8 个整数,表示a1; b1; a2; b2; a3; b3; a4; b4。

输出格式:

一行一个整数,答案除以p 的余数。

输入输出样例

输入样例#1:

2 0 3 1 5 0 7 3
输出样例#1:

10

说明

对于30% 的数据,ai <=40, 保证ai 均为素数。

对于60% 的数据,1 <=ai <=10^3, 保证ai 均互素。

对于100% 的数据,0 <= bi < ai; 1 <=ai <= 10^3。

中国剩余定理裸题

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define N 5
#define ll long long
using namespace std;
ll n,m[N],a[N],m1,e;
ll read()
{
    ll x=,f=; char ch=getchar();
    ; ch=getchar();}
    +ch-'; ch=getchar();}
    return x*f;
}
ll exgcd(ll a,ll b,ll &x,ll &y)
{
    )
    {
        x=,y=;
        return a;
    }
    ll r=exgcd(b,a%b,x,y),tmp;
    tmp=x,x=y,y=tmp-a/b*y;
    return r;
}
ll crt()
{
    ll a1=a[],a2,m2,d,c;m1=m[];
    ;i<=n;++i)
    {
        a2=a[i],m2=m[i];
        c=a2-a1;ll x=,y=;
        d=exgcd(m1,m2,x,y);
        ;
        x=x*c/d;
        int mod=m2/d;
        x=(mod+x%mod)%mod;
        a1+=m1*x;m1*=mod;
    }
    return a1;
}
int main()
{
//    freopen("mod.in","r",stdin);
//    freopen("mod.out","w",stdout);
    n=;
    ;i<=n;i++)
     m[i]=read(),a[i]=read();
    printf("%lld\n",crt());
    ;
}

Ac代码

T3 字符串

题目描述

如果把一个字符串从头到尾翻转后和原字符串相等,我们称之为回文串,比如“aabaa”、“())(”、“2017102”。

如果一个字符串存在两个出现过的字母出现的次数相等,我们称之为好

的字符串。

现在给一个由小写字母组成的字符串,问在这个字符串的所有连续的串

中,好的回文串有多少个。(两个相同的回文串出现在不同位置算多次)。

输入输出格式

输入格式:

一行一个小写字母组成的字符串。

输出格式:

一行一个整数,表示答案。

输入输出样例

输入样例#1:

abcbaabcba
输出样例#1:

6
【样例解释】
abcba s[1..5] a,b 出现次数相等
baab s[4..7] a,b 出现次数相等
cbaabc s[3..8] a,b 出现次数相等
bcbaabcb s[2..9] a,c 出现次数相等
abcbaabcba s[1..10] a,b 出现次数相等
abcba s[6..10] a,b 出现次数相等

说明

len 表示字符串长度。

对于30% 的数据, len <=10^2。

对于60% 的数据, len <= 10^3。

对于100% 的数据,1 <= len <= 10^4。

考试的时候,有位大智障竟然用(s[k]==s[j])!=0来判断,s[k]==s[j]&&s[k]!=0&&s[j]!=0  (捂脸、、)竟然在while里面先让b++,e--在统计这两个地方的每个字符的个数、、、(智障啊、、)

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 10010
using namespace std;
bool flag;
char ch[N];
int n,b,e,ans,s[N];
int main()
{
    cin>>ch;n=strlen(ch);
    ;l<n;l++)
     ;i<n-l;i++)
     {
         b=i,e=l+i;flag=false;
         memset(s,,sizeof(s));
         while(b<=e)
         {
               if(ch[e]!=ch[b]) {flag=true;break;}
               if(b==e) s[ch[e]-'a']++;
               ;
               b++,e--;
         }
         ;j<;j++)
         {
            if(flag) break;
            ;k<;k++)
              if(s[j]&&s[k]&&s[j]==s[k]&&j!=k) {ans++,flag=true;break;}
         }
    }
    printf("%d",ans);
    ;
}

30分暴力

气死我了、、玄学错误,一个枚举长度跟左端点,一个枚举左右端点,时间复杂度完全一样,结果一个TLE30分,另一个TLE60分!!!!!!!!

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 10010
using namespace std;
char ch[N];
int n,b,e,ans,s[N],tmp[N];
bool pd(int b,int e)
{
    memset(s,,sizeof(s));
    while(b<=e)
    {
        if(ch[e]!=ch[b]) return false;
        if(b==e) s[ch[e]-'a']++;
        ;
        b++,e--;
    }
    sort(s,s+);
    ;i>=;--i)
     ])  return true;
    return false;
}
int main()
{
    cin>>ch;n=strlen(ch);
    ;l<n;++l)
     ;i<n-l;++i)
     {
         b=i,e=l+i;
         if(pd(b,e)) ans++;
    }
    printf("%d",ans);
    ;
}

枚举长度跟左端点 30分

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 10010
using namespace std;
char ch[N];
];
bool pd(int b,int e)
{
    memset(s,,sizeof(s));
    while(b<=e)
    {
        if(ch[e]!=ch[b]) return false;
        if(b==e) s[ch[e]-'a']++;
        ;
        b++,e--;
    }
    sort(s,s+);
    ;i>=;--i)
     ])  return true;
    return false;
}
int main()
{
    cin>>ch;n=strlen(ch);
    ;b<n-;++b)
     ;e<n;++e)
         if(pd(b,e)) ans++;
    printf("%d",ans);
    ;
}

枚举左右端点 60分

什么?!  s数组开大了?! 开小点就是60?!!!

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 10010
using namespace std;
char ch[N];
];
bool pd(int b,int e)
{
    memset(s,,sizeof(s));
    while(b<=e)
    {
        if(ch[e]!=ch[b]) return false;
        if(b==e) s[ch[e]-'a']++;
        ;
        b++,e--;
    }
    sort(s,s+);
    ;i>=;--i)
     ])  return true;
    return false;
}
int main()
{
    cin>>ch;n=strlen(ch);
    ;l<n;++l)
     ;i<n-l;++i)
     {
         b=i,e=l+i;
         if(pd(b,e)) ans++;
    }
    printf("%d",ans);
    ;
}

枚举长度跟左端点 60分

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
using namespace std;

typedef unsigned long long ULL;
typedef long long LL;

];
ULL h[],rh[],pw[];
int L;

ULL hs(int l,int r){
    ]*pw[r-l+];
}
ULL rhs(int l,int r){
    ]*pw[r-l+];
}
struct N{
    ];
    bool ok(){
        ];
        ;i<;i++) b[i]=a[i];
        sort(b,b+);
        ;i<;i++){
            && b[i] == b[i+]) return true;
        }
        return false;
    }
    void clear(){
        memset(a,,sizeof a);
    }
};
LL ans=;
map<ULL,LL> num;
map<ULL,N> A;
void solve_odd(){
    ;i<=L;i++){
        ,r = min(i,L-i+)+;
        ){
            ;
            ,i+mid-)== rhs(i-mid+,i+mid-)) l=mid;
            else r=mid;
        }
        int p=l;
        int tmp = p;
        &&num.find(hs(i-tmp+,i+tmp-))==num.end()) tmp--;
        LL sum = ;
        N st;
        st.clear();
        ){
            sum=num[hs(i-tmp+,i+tmp-)];
            st = A[hs(i-tmp+,i+tmp-)];
        }
        while(tmp<p){
            st.a[s[i+tmp]-?:);
            if(st.ok()) sum++;
            num[hs(i-tmp,i+tmp)] = sum;
            A[hs(i-tmp,i+tmp)] = st;
            tmp++;
        }
        ans+=sum;
        // printf("# %d %lld\n",i,sum);
    }
}
void solve_even(){
    A.clear();
    num.clear();
    ;i<L;i++){
        // printf("### %d\n",i);
        ,r = min(i,L-i)+;
        ){
            ;
            ,i+mid)== rhs(i-mid+,i+mid)) l=mid;
            else r=mid;
        }
        int p=l;
        int tmp = p;
        &&num.find(hs(i-tmp+,i+tmp))==num.end()) tmp--;
        LL sum = ;
        N st;
        st.clear();
        // printf("## %d\n",p);
        ){
            sum=num[hs(i-tmp+,i+tmp)];
            st = A[hs(i-tmp+,i+tmp)];
        }
        while(tmp<p){
            // printf("# %d %lld\n",tmp,sum);
            st.a[s[i+tmp+]-;
            if(st.ok()) sum++;
            num[hs(i-tmp,i+tmp+)] = sum;
            A[hs(i-tmp,i+tmp+)] = st;
            tmp++;
        }
        ans+=sum;
        // printf("# %d %lld\n",i,sum);
    }
}

int main(){
    freopen("str.in","r",stdin);
    freopen("str.out","w",stdout);
    scanf();
    L=strlen(s+);
    s[]='#';
    pw[]=;
    ;i<=L;i++) pw[i] = pw[i-]* ;
    ;i<=L;i++) h[i] = h[i-]* + s[i];
    ;i--) rh[i] = rh[i+]* + s[i];

    // printf("%llu %llu",hs(1,3),rhs(1,3));

    solve_odd();
    solve_even();
    printf("%lld\n",ans);
    fclose(stdout);
    ;
}

标称(字符串+二分)

10.1综合强化刷题 Day6的更多相关文章

  1. 10.1综合强化刷题 Day3 morning

    竞赛时间:????年??月??日??:??-??:?? 题目名称 a b c 名称 a b c 输入 a.in b.in c.in 输出 a.out b.out c.out 每个测试点时限 1s 1s ...

  2. 10.1综合强化刷题 Day3 afternoon

    竞赛时间:????年??月??日??:??-??:?? 题目名称 a b c 名称 a b c 输入 a.in b.in c.in 输出 a.out b.out c.out 每个测试点时限 1s 1s ...

  3. 10.1综合强化刷题 Day2 morning

    一道图论神题(god) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只有 ...

  4. 10.1综合强化刷题 Day2 afternoon

    最大值(max) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n的 ...

  5. 10.1综合强化刷题 Day7

                                                                                       noip提高组模拟赛       ...

  6. 10.1综合强化刷题 Day1 afternoon

    一道图论好题(graph) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图, ...

  7. 10.1综合强化刷题 Day5

    T1 拼不出的数 lost.in/.out/.cpp[问题描述]3 个元素的集合{5; 1; 2}的所有子集的和分别是0; 1; 2; 3; 5; 6; 7; 8.发现最小的不能由该集合子集拼出的数字 ...

  8. 10.1综合强化刷题 Day4

    财富(treasure) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是以 ...

  9. 10.1综合强化刷题 Day3

    括号序列(bracket) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一个括号序列,但这个序列不一定合法. 一个合法的括号序列如下: ()是合法的 ...

随机推荐

  1. sql优化系列1

    sql中索引是否会用到,进而影响查询效率. 带通配符(%)的like语句 1.不能用null作索引,任何包含null值的列都将不会被包含在索引中.即使索引有多列这样的情况下,只要这些列中有一列含有nu ...

  2. git上传自己的代码

    感谢这个哥们的博客,不过里面有些错误. http://www.cnblogs.com/ruofengzhishang/p/3842587.html 下面是我自己的实践成功的: 这篇文章写得是windo ...

  3. Go语言之反射(三)

    结构体转JSON JSON格式是一种用途广泛的对象文本格式.在Go语言中,结构体可以通过系统提供的json.Marshal()函数进行序列化.为了演示怎么样通过反射获取结构体成员以及各种值的过程,下面 ...

  4. CLOUDSTACK FOR HYPER-V

    原文地址:http://zhu.vn/archives/1040 我这里是内网测试环境,宿主机为Server 2012R2 ,虚拟化技术为HYPER-V,域环境来的(不是域环境玩不了). 先给宿主机安 ...

  5. 【Word Break】cpp

    题目: Given a string s and a dictionary of words dict, determine if s can be segmented into a space-se ...

  6. CSU-1980 不堪重负的树

    CSU-1980 不堪重负的树 Description 小X非常喜欢树,然后他生成了一个大森林给自己玩. 玩着玩着,小X陷入了沉思. 一棵树由N个节点组成,编号为i的节点有一个价值Wi. 假设从树根出 ...

  7. webpack vue-cli 常见问题总结

    1. webpack打包压缩 ES6 js..vue报错: ERROR in js/test.js from UglifyJs Unexpected token punc ?(?, expected ...

  8. mvc项目限制请求类型

    MVC 5限制所有HTTP请求必须是POST方式 这篇文章讲述了如何限制请求类型.

  9. 谷歌插件请求ci 解决CI框架的Disallowed Key Characters错误提示

    用CI框架时,有时候会遇到这么一个问题,打开网页,只显示 Disallowed Key Characters 错误提示.有人说 url 里有非法字符.但是确定 url 是纯英文的,问题还是出来了.但清 ...

  10. linux下telnet安装与使用

    现在管理linux基本都用crt.xshell或者putty,已经没什么人用telnet,因为后续需要讲zabbix免客户端监控只telnet,通过telnet来监控服务器性能. yum安装telne ...