Codeforces Round #368

原创 2016年08月29日 10:55:52

自从上次366没有A掉C题以后,我对CF的C题一直有恐惧感,没错,367的C就是一道DP(还好我没打,要不得跪)。晚上八点左右吧,我被zzs神犇拉去打了368,本以为9点30开始,于是9点开电脑,没想到是9:05开始。。。。只好等Extra Resignation了。
好不容易熬完10分钟(此时zzs已经A了A题),终于进了比赛页面。
A题是给出一个字符矩阵,判断是不是彩色图像(有CMY)。水~~~~
代码如下:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
int n,m;
using namespace std;
int main(){
    cin>>n>>m;
    char c;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>c;
            if(c=='C'||c=='M'||c=='Y'){
                printf("#Color");
                return 0;
            }
        }
    }
    printf("#Black&White"); 
    return 0;
} 

然后马上看B。卧槽,这是什么?数据范围10^5?好吧,只能写spfa了。。。
然后花将近一小时YY出了一个spfa,交上去结果wa on test 2.好吧,放弃。这次肯定掉成pupil。。
之后看了一眼C,卧槽?什么鬼?好水啊。。。只是求直角三角形另外两条边啊。。有公式有木有。。。然后神速写完代码,A了这道题。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
int n;
long long ans1,ans2;
int main(){
    scanf("%d",&n);
    if(n<=2){
        printf("-1");
        return 0;
    }
    if(n%2==1){
        long long x=(n-1)/2;
        ans1=2*x*x+2*x;
        ans2=ans1+1; 
    }
    if(n%2==0){
        long long x=n/2;
        ans1=x*x-1;
        ans2=x*x+1;
    }

    printf("%I64d %I64d",ans1,ans2);    
    return 0;
} 

之后看D,主席树。。。放弃,看B
这次终于发现B的精髓所在,只是枚举一遍所有的边。。。好一个伪图论。坑死我了。。
然后YY完代码交了上去,wa on test13
这里写图片描述
好吧。。当我准备放弃的时候,突然发现只能是仓库连城市的边才可以选。。。
处理好以后,终于A了:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct edge{
    int u,v,w;
}e[1000001];
int n,m,k,ck[100001],Ans=0x3f3f3f3f;
int cmp(edge x,edge y){
    return x.w<y.w;
}
int main(){
    memset(ck,0,sizeof(ck));
    scanf("%d%d%d",&n,&m,&k);
    int u,v,w;
    for(int i=1;i<=m;i++){
        scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w);
    }
    int x;
    for(int i=1;i<=k;i++){
        scanf("%d",&x);
        ck[x]=1;
    }
    if(k==0&&k==n){
        printf("-1");
        return 0;
    }
    sort(e+1,e+m+1,cmp);
    for(int i=1;i<=m;i++){
        if(ck[e[i].u]&&!ck[e[i].v]||!ck[e[i].u]&&ck[e[i].v]){
            printf("%d",e[i].w);
            return 0;
        }
    }   
    printf("-1");
    return 0;
} 

尽管A了3道题,但是现在排名才1800多。。完了,要变pupil
Menci:40分钟A3T
zzs:30分钟A3T
Chentsuei:30分钟A3T
好吧。。只能等system test拉回点分。。不,别FST就行。。

万幸的是,我最终没有fst,rating反而升了。。
估计下一次就要掉了吧。
附:D题代码

#include<cstring>
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<vector>
#include<queue>
#include<cmath>
#include<map>
#include<set>
#include<algorithm>
using namespace std;

#define ll long long
char c;
bool flag;
inline void read(int&a)
{a=0;do c=getchar();while(c!='-'&&(c<'0'||c>'9'));c=c=='-'?flag=true,getchar():c;while(c<='9'&&c>='0')a=(a<<3)+(a<<1)+c-'0',c=getchar();a=flag?flag=false,-a:a;}
inline int min(int a,int b){return a<b?a:b;}
inline int max(int a,int b){return a>b?a:b;}
inline int Min(double &a,double b){return a<b?a:a=b;}
inline int Max(int &a,int b){return a>b?a:a=b;}

struct Node
{
    Node *lc,*rc;
    int l,r;
    int val;
    int sum;
    Node *Val;
};
Node *Root[200001];

inline void up(Node *A)
{
    if(A->l==A->r)A->sum=A->val;
    else 
    {
        A->sum=A->lc->sum+A->rc->sum;
        if(A->val)A->sum=A->r-A->l+1-A->sum;
    }
}

inline void up2(Node *A)
{
    if(A->l==A->r)
        A->sum=A->Val->sum;
    else 
    {
        A->sum=A->lc->sum+A->rc->sum;
    }
}

Node *N;

Node *Build(int l,int r)
{
    Node *A=new Node;
    A->l=l,A->r=r;
    A->val=0;
    A->sum=0;
    A->lc=A->rc=NULL;
    if(l==r)
        return A;
    A->lc=Build(l,l+r>>1);
    A->rc=Build((l+r>>1)+1,r);
    return A;
}

Node *New(Node *A)
{
    Node *R=new Node;
    *R=*A;
    return R;
}

Node *Build2(int l,int r)
{
    Node *A=new Node;
    A->l=l,A->r=r;
    A->val=0;
    A->sum=0;
    A->lc=A->rc=NULL;   
    if(l==r)
        {
            A->Val=New(N);
            return A;
        }
    A->lc=Build2(l,l+r>>1);
    A->rc=Build2((l+r>>1)+1,r);
    return A;

}


Node *Modify(Node *Cur,int l,int data,int Sum)
{
    Node *N=New(Cur);
    Sum^=Cur->val;
    if(Cur->l!=Cur->r)
    {
        if(Cur->lc->r>=l)N->lc=Modify(Cur->lc,l,data,Sum);
        else N->rc=Modify(Cur->rc,l,data,Sum);
        return up(N),N;
    }
    else
    {
        if(Sum&&data)return up(N),N;
        if(Sum&&!data)
            {
                Sum^=Cur->val;
                return N->val=Sum?1:0,up(N),N;
            }
        if(data)
            {
                Sum^=Cur->val;
                return N->val=Sum?0:1,up(N),N;
            }

        return up(N),N;
    }
}

Node *Modify2(Node *Cur,int l,int lly,int data)
{
    if(Cur->l==Cur->r)
    {
        Node *N=New(Cur);
        N->Val=Modify(Cur->Val,lly,data,0);
        return up2(N),N;
    }
    Node *N=New(Cur);
    if(l<=Cur->lc->r)N->lc=Modify2(Cur->lc,l,lly,data);
    else N->rc=Modify2(Cur->rc,l,lly,data);
    return up2(N),N;
}

Node *Rotato(Node *Cur,int l)
{
    if(Cur->l==Cur->r)
    {
        Node *N=New(Cur);
        N->Val=New(N->Val);
        N->Val->val^=1;
        up(N->Val);
        return up2(N),N;
    }
    Node *N=New(Cur);
    if(l<=Cur->lc->r)N->lc=Rotato(Cur->lc,l);
    else N->rc=Rotato(Cur->rc,l);
    return up2(N),N;
}

int n,m,q;
int main()
{
    read(n),read(m),read(q);
    N=Build(1,m);
    Root[0]=Build2(1,n);
    for(int i=1;i<=q;i++)
    {
        int op;read(op);
        if(op==1)
        {
            int u,v;
            read(u),read(v);
            Root[i]=Modify2(Root[i-1],u,v,1);
        }
        else if(op==2)
        {
            int u,v;
            read(u),read(v);
            Root[i]=Modify2(Root[i-1],u,v,0);
        }
        else if(op==3)
        {
            int u;
            read(u);
            Root[i]=Rotato(Root[i-1],u);
        }
        else {int u;read(u);Root[i]=Root[u];}
        int Ans=Root[i]->sum;
        printf("%d\n",Ans);
    }


    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Codeforces Round #406 (Div. 2):C. Berzerk(记忆化搜索解决博弈问题)

C. Berzerk time limit per test 4 seconds memory limit per test 256 megabytes input standard in...
  • Jaihk662
  • Jaihk662
  • 2017年03月24日 15:23
  • 787

【Codeforces Round 375 (Div 2) E】【欧拉回路Fleury算法 或网络流】One-Way Reform 每条边定向使得最多的点满足入度=出度

E. One-Way Reform time limit per test 2 seconds memory limit per test 256 megabytes ...
  • snowy_smile
  • snowy_smile
  • 2016年10月04日 10:20
  • 735

解决Codeforces Round 的一些问题

题目链接   代码链接   A:   考虑对于矩形(x,y,z,t):sum = sigma( sigma( si * sj ) ) x   B:   容易知道能获得的最大价值,把不可能拿到...
  • u012923082
  • u012923082
  • 2013年11月22日 17:53
  • 294

【codeforces 732E】【贪心 map乱搞】

传送门:http://codeforces.com/contest/732/problem/E 描述: E. Sockets time limit per t...
  • guhaiteng
  • guhaiteng
  • 2016年10月22日 15:32
  • 542

codeforces上一种应对大测试数据debug方法

接触codeforces时间不长,也就参加了10场左右。之前有次比赛就出现了wa了一道题,在比赛结束后看测试数据log时,发现出错的那组用例是个超过一万行输入的情况,codeforces上的测试数据无...
  • qq_29070399
  • qq_29070399
  • 2017年02月03日 16:09
  • 762

关于codeforces比赛规则介绍(转载)

Codeforces 简称: cf(所以谈论cf的时候经常被误会成TX的那款游戏). 网址: codeforces.com   这是一个俄国的算法竞赛网站,由来自萨拉托夫州立大学、由Mike Mirz...
  • y990041769
  • y990041769
  • 2014年02月19日 08:41
  • 15548

BZOJ 3625 [Codeforces Round #250]小朋友和二叉树 多项式开根

BZOJ 3625 [Codeforces Round #250]小朋友和二叉树 多项式开根
  • wzq_QwQ
  • wzq_QwQ
  • 2015年09月12日 16:02
  • 2078

python爬虫抓取codeforces分数

环境介绍 python 2.7.2 re 正则表达式库 urllib2 代码#coding:utf8 import sys import urllib2,redef getrating(name): ...
  • qscqesze
  • qscqesze
  • 2016年11月17日 22:02
  • 467

Codeforces 708D 费用流 (呃我们的考试题)

NB的题目背景 输入输出一样考试的时候貌似只有gzz一个人搞出来了 %gzz思路: 分情况讨论 add(x,y,C,E) C是费用 E是流量 1. f>c add(x,y,2,inf),...
  • qq_31785871
  • qq_31785871
  • 2017年01月05日 17:56
  • 729

【Codeforces708C】【树形dp】【贪心】Centroids

Centroids Time Limit: 4000MS Memory Limit: 524288KB 64bit IO Format: %I64d & %I64u ...
  • u011327397
  • u011327397
  • 2016年10月14日 11:24
  • 423
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Codeforces Round #368
举报原因:
原因补充:

(最多只允许输入30个字)