2017 女生赛

A直接模拟

1 CE算罚时 2  后面的罚时不算  3错掉 过了才算罚时

#include<stdio.h>
#include<algorithm>
#include<stdlib.h>
#include<cstring>
#include<iostream>
#include<string>
#include<cmath>
#include<vector>
#include<queue>
#include<deque>
#include<map>
#include<iterator>
#include<stack>

using namespace std;

#define ll  __int64
#define MAXN  101000
#define inf  1000000007

bool vis[MAXN];
int w[MAXN];

int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,m;
        memset(vis,0,sizeof(vis));
        memset(w,0,sizeof(w));
        scanf("%d%d",&n,&m);
        int ans=0;
        int cnt=0;
        for(int i=1;i<=m;i++)
        {
            int a,b,c;
            char s[10];
            scanf("%d %d:%d %s",&a,&b,&c,s);
            int t=b*60+c;
            if(vis[a]==0&&strcmp(s,"AC")!=0)
            {
                w[a]++;
            }
            if(vis[a]==0&&strcmp(s,"AC")==0)
            {
                vis[a]=1;
                ans=ans+t+w[a]*20;
            }
        }
        for(int i=1;i<=2000;i++)
            if(vis[i]==1)
               cnt++;
        printf("%d %d\n",cnt,ans);
    }

    return 0;
}

B

n 个地点然后 位置 开糖果店的花费如果这个点不开  那么花费算这个点到左边最近的糖果店的距离

dp[i][j] dp[0][j] 代表这个点不开最小花费  dp[1][j]代表开  最小花费 时间 n方

#include<stdio.h>
#include<algorithm>
#include<stdlib.h>
#include<cstring>
#include<iostream>
#include<string>
#include<cmath>
#include<vector>
#include<queue>
#include<deque>
#include<map>
#include<iterator>
#include<stack>

using namespace std;

#define ll  long long
#define MAXN  301000
#define inf  1000000007

struct node
{
    ll x,y;
}z[MAXN];

bool cmp(node a,node b)
{
    return a.x<b.x;
}
ll dp[2][MAXN];

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        for(int i=1;i<=n;i++)
            scanf("%lld%lld",&z[i].x,&z[i].y);
        sort(z+1,z+n+1,cmp);
        for(int i=1;i<=n;i++)
        {
            dp[0][i]=inf;
            dp[1][i]=inf;
        }
        dp[0][0]=0;
        dp[1][0]=0;
        for(int i=1;i<=n;i++)
        {
            dp[1][i]=min(dp[0][i-1],dp[1][i-1])+z[i].y;
            ll ans=0;
            for(int j=i-1;j>=1;j--)
            {
                ans=ans+(i-j)*(z[j+1].x-z[j].x);
                dp[0][i]=min(dp[0][i],dp[1][j]+ans);
            }
        }
        printf("%lld\n",min(dp[0][n],dp[1][n]));
    }
    return 0;
}

C求去掉一个数剩下数的GCD  求最大的GCD

我用线段树维护了gcd 其实可以不用 维护前缀gcd和后缀gcd 时间是n  我的是nlog(n)

#include<stdio.h>
#include<algorithm>
#include<stdlib.h>
#include<cstring>
#include<iostream>
#include<string>
#include<cmath>
#include<vector>
#include<queue>
#include<deque>
#include<map>
#include<iterator>
#include<stack>

using namespace std;

#define ll  __int64
#define MAXN  101000
#define inf  1000000007

struct node
{
    int l,r,w;
}tree[MAXN<<2];
int gcd(int a,int b)
{
    return b?gcd(b,a%b):a;
}

void Build(int l,int r,int a)
{
    tree[a].l=l;
    tree[a].r=r;
    if(l==r)
    {
        scanf("%d",&tree[a].w);
        return ;
    }
    int mid=(l+r)>>1;
    Build(l,mid,a<<1);
    Build(mid+1,r,a<<1|1);
    tree[a].w=gcd(tree[a<<1].w,tree[a<<1|1].w);
}
int Ques(int l,int r,int a1,int b1,int a)
{
    if(a1<=l&&r<=b1)
        return tree[a].w;
    int mid=(l+r)>>1;
    int ans=0;
    if(a1<=mid)
        ans=gcd(ans,Ques(l,mid,a1,b1,a<<1));
    if(b1>mid)
        ans=gcd(ans,Ques(mid+1,r,a1,b1,a<<1|1));
    return ans;
}

int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        Build(1,n,1);
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            if(i==1)
            {
                ans=max(ans,Ques(1,n,i+1,n,1));
            }
            else if(i==n)
            {
                ans=max(ans,Ques(1,n,1,i-1,1));
            }
            else
            {
                int d=gcd(Ques(1,n,1,i-1,1),Ques(1,n,i+1,n,1));
                ans=max(d,ans);
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

E直接暴力

#include<stdio.h>
#include<algorithm>
#include<stdlib.h>
#include<cstring>
#include<iostream>
#include<string>
#include<cmath>
#include<vector>
#include<queue>
#include<deque>
#include<map>
#include<iterator>
#include<stack>

using namespace std;

#define ll  __int64
#define MAXN  101000
#define inf  1000000007

ll z[6][10010];

int main()
{
    for(int i=1;i<=10000;i++)
    {
         z[0][i]=z[0][i-1]+1;
         z[1][i]=(z[1][i-1]+i)%inf;
         z[2][i]=(z[2][i-1]+i*i)%inf;
         z[3][i]=(z[3][i-1]+((((long long)i*i)%inf)*i)%inf)%inf;
         z[4][i]=((z[4][i-1]+(((((long long)i*i)%inf)*i)%inf)*i)%inf)%inf;
         z[5][i]=(z[5][i-1]+(((((((((long long)i*i)%inf)*i)%inf)*i)%inf)%inf)*i)%inf)%inf;
    }
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,m;
        scanf("%d%d",&n,&m);
        printf("%lld\n",z[m][n]);
    }
    return 0;
}

G n个点  n-1个操作   1 或者2  1 代表这个点和前面的点都有边  2 没操作

问能不能是个完美匹配的图   水题一个  记录下前面没匹配的点的数目就行了

#include<stdio.h>
#include<algorithm>
#include<stdlib.h>
#include<cstring>
#include<iostream>
#include<string>
#include<cmath>
#include<vector>
#include<queue>
#include<deque>
#include<map>
#include<iterator>
#include<stack>

using namespace std;

#define ll  long long
#define MAXN  101000
#define inf  1000000007

int z[MAXN];

int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        for(int i=2;i<=n;i++)
            scanf("%d",&z[i]);
        int cnt=n;
        int c1=1;

        for(int i=2;i<=n;i++)
        {
            if(z[i]==1&&c1>0)
            {
                c1--;
                cnt=cnt-2;
            }
            else
            {
                c1++;
            }
        }
        if(cnt==0)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}

时间: 2024-10-11 21:15:40

2017 女生赛的相关文章

ccpc女生赛题目总结

第一场:2017年ccpc女生赛 分类: a) 数论&数学,a) 矩阵快速幂,a) 模拟,a) 找感觉题,a) 动态规划 题解:https://www.cnblogs.com/zhangmingzhao/p/7256603.html 第一题:Automatic Judge http://acm.hdu.edu.cn/showproblem.php?pid=6023 水题 第二题:Easy Summation   http://acm.hdu.edu.cn/showproblem.php?pid=

2017浙江省赛 D - Let&#39;s Chat ZOJ - 3961

地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3961 题目: ACM (ACMers' Chatting Messenger) is a famous instant messaging software developed by Marjar Technology Company. To attract more users, Edward, the boss of Marjar Company, has re

CCPC 2017 网络赛

1001.我们的想法是,先构造n个要删掉的点,然后不断给图加边,使得每条边的其中一个点在n个点之中. 我们要使n个点之外的点尽量多,并且每次删掉的点在n个点之外. 贪心的决策是,每次操作,前n个点的度和令外的最大度的点度数相同. 然后删掉这个点之后,之后的操作,剩余的点也满足这个要求.所以度数最大的点必定与n个点有边. 于是可以这样构造,增加n批点(i = 1~n),每次增加n/i个点的,每个增加的点连出i条边到n个点. 这样,n个点每次增加的最大度数不超过1.但每次删点的时候(按n~1批的顺序

2019CCPC女生赛小菜鸡打铜记

2018年十二月底加入acm,2019年一月正式开始训练,到六月份去南京第一次参加女生赛,感觉做梦一样(其实还是因为自己太菜了) 一开始决定参加女生赛时候有过小小犹豫,因为临近期末复习周,加上自己实力又菜,我也很无奈哇,但是yl给了我超级多信心!之后的训练和赛前准备,yl和yt都付出了非常多努力!在线拥抱我的队友们! 一号到南京我们仨玩了大半天,也是疯狂被鸭血粉丝和汤包支配的一天! 二号早上很顺利,酒店的位置刚刚好,附近有早点,打个车过去时间也非常盈余. 热身赛的时候本来想测万能头,但是队友都觉

2017区域赛简要小结

仅以此篇献给我即将逝去的2017年 ACM/ICPC系列赛事一站一站地打下去,和NOI系列赛事差不多.理论上说,只要有实力,拿不拿名次都无所谓.但"算法竞赛"的魅力就是如此:能拿WF的门票,能取得名次,这就是实力的证明,也是你追梦成功的证明! 前几天,灿哥约我咖啡,传授了一些"看上去比较显然,但肯定还不能完全理解"的人生道理给我.不过,至少这让我明白了ACM/ICPC赛事的成功之处.目标明确,摒弃杂念,就能持之以恒地向前努力.一个想进final的单纯动机,比很多荣誉

2019省赛训练组队赛4.9周二 2017浙江省赛

A - Cooking Competition "Miss Kobayashi's Dragon Maid" is a Japanese manga series written and illustrated by Coolkyoushinja. An anime television series produced by Kyoto Animation aired in Japan between January and April 2017. In episode 8, two

【原根】【动态规划】【bitset】2017四川省赛 K.2017 Revenge

题意: 给你n(不超过200w)个数,和一个数r,问你有多少种方案,使得你取出某个子集,能够让它们的乘积 mod 2017等于r. 2017有5这个原根,可以使用离散对数(指标)的思想把乘法转化成加法,然后就可以用bitset优化dp了. 裸的dp方程是f(i,j)=f(i-1,j)+f(i-1,(j-I(a(i)))%2016),第一维可以滚动.I(i)规定为i的指标,但是我们这里不像<数论概论>那本书上把I(1)规定为2016,而当成0,比较方便. #include<cstdio&g

2017浙江省赛 A - Cooking Competition ZOJ - 3958

地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3958 题目: "Miss Kobayashi's Dragon Maid" is a Japanese manga series written and illustrated by Coolkyoushinja. An anime television series produced by Kyoto Animation aired in Japan b

2017湖南省赛心得

没参赛···全程观战,这次一银二铜. 除了题目本身还有一些要注意的. 1.带草稿纸和本子和一些重要证件+物件和时间观念. 2.比赛前 测试头文件(顺便看看键盘哪里有问题,敲头文件的时候就差不多检查到了) /lld or I64d / 打印功能 / 分工明确 / 一头一尾一中间看题目(有水题的情况下,都难的话就一起上吧···)/ 热身赛气球颜色或许对应正式赛? / 一人敲最好有人在旁边看着 / 要有自己的想法,防止整个队思路全错 /突然AC率猛增的题目可以开 / 纸上代码力↑ / 心态放松···