小鸡腿U T7 NEERC2011

来源:互联网 发布:路过蜻蜓 知乎 编辑:程序博客网 时间:2024/04/29 20:24

[TOC]
题目:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=527

ASCII Area

#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<functional>#include<iostream>#include<cmath>#include<cctype>#include<ctime>#include<iomanip> #include<vector>#include<string>#include<queue>#include<stack>#include<map>#include<sstream>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define ForD(i,n) for(int i=n;i;i--)#define ForkD(i,k,n) for(int i=n;i>=k;i--)#define RepD(i,n) for(int i=n;i>=0;i--)#define Forp(x) for(int p=Pre[x];p;p=Next[p])#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])  #define Lson (o<<1)#define Rson ((o<<1)+1)#define MEM(a) memset(a,0,sizeof(a));#define MEMI(a) memset(a,127,sizeof(a));#define MEMi(a) memset(a,128,sizeof(a));#define INF (2139062143)#define F (1000000007)#define pb push_back#define mp make_pair #define fi first#define se second#define vi vector<int> #define pi pair<int,int>#define SI(a) ((a).size())#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;#define PRi2D(a,n,m) For(i,n) { \                        For(j,m-1) cout<<a[i][j]<<' ';\                        cout<<a[i][m]<<endl; \                        } #pragma comment(linker, "/STACK:102400000,102400000")typedef long long ll;typedef long double ld;typedef unsigned long long ull;ll mul(ll a,ll b){return (a*b)%F;}ll add(ll a,ll b){return (a+b)%F;}ll sub(ll a,ll b){return ((a-b)%F+F)%F;}void upd(ll &a,ll b){a=(a%F+b%F)%F;}int read(){    int x=0,f=1; char ch=getchar();    while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}    while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}    return x*f;} char s[1000][1000];int main(){//  freopen("A.in","r",stdin);//  freopen(".out","w",stdout);    int n,m;     while(cin>>n>>m) {        Rep(i,n) {            scanf("%s",s[i]);        }               int t=0,b=0;        Rep(i,n) Rep(j,m) if (s[i][j]!='.') t++;        Rep(i,n) {            bool f=0;            Rep(j,m) if (s[i][j]!='.') f^=1; else b+=f;        }        cout<<b+t/2<<endl;    }    return 0;}

Binary Encoding

#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<functional>#include<iostream>#include<cmath>#include<cctype>#include<ctime>#include<iomanip> #include<vector>#include<string>#include<queue>#include<stack>#include<map>#include<sstream>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define ForD(i,n) for(int i=n;i;i--)#define ForkD(i,k,n) for(int i=n;i>=k;i--)#define RepD(i,n) for(int i=n;i>=0;i--)#define Forp(x) for(int p=Pre[x];p;p=Next[p])#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])  #define Lson (o<<1)#define Rson ((o<<1)+1)#define MEM(a) memset(a,0,sizeof(a));#define MEMI(a) memset(a,127,sizeof(a));#define MEMi(a) memset(a,128,sizeof(a));#define INF (2139062143)#define F (1000000007)#define pb push_back#define mp make_pair #define fi first#define se second#define vi vector<int> #define pi pair<int,int>#define SI(a) ((a).size())#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;#define PRi2D(a,n,m) For(i,n) { \                        For(j,m-1) cout<<a[i][j]<<' ';\                        cout<<a[i][m]<<endl; \                        } #pragma comment(linker, "/STACK:102400000,102400000")typedef long long ll;typedef long double ld;typedef unsigned long long ull;ll mul(ll a,ll b){return (a*b)%F;}ll add(ll a,ll b){return (a+b)%F;}ll sub(ll a,ll b){return ((a-b)%F+F)%F;}void upd(ll &a,ll b){a=(a%F+b%F)%F;}int read(){    int x=0,f=1; char ch=getchar();    while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}    while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}    return x*f;} void prit(int n,int l) {    if (!l) return;    prit(n/2,l-1);    printf("%d",n&1);}int n; int main(){//  freopen("B.in","r",stdin);//  freopen(".out","w",stdout);    while(cin>>n) {        int m=1;        while((1<<m)<n) ++m;        int p=(1<<m)-n;        Rep(i,1<<m) {            if (p) prit(i/2,m-1),p--,i++;            else prit(i,m);            puts("");        }    }    return 0;}

Dictionary Size

#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<functional>#include<iostream>#include<cmath>#include<cctype>#include<ctime>#include<iomanip> #include<vector>#include<string>#include<queue>#include<stack>#include<map>#include<sstream>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define ForD(i,n) for(int i=n;i;i--)#define ForkD(i,k,n) for(int i=n;i>=k;i--)#define RepD(i,n) for(int i=n;i>=0;i--)#define Forp(x) for(int p=Pre[x];p;p=Next[p])#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])  #define Lson (o<<1)#define Rson ((o<<1)+1)#define MEM(a) memset(a,0,sizeof(a));#define MEMI(a) memset(a,127,sizeof(a));#define MEMi(a) memset(a,128,sizeof(a));#define INF (2139062143)#define F (1000000007)#define pb push_back#define mp make_pair #define fi first#define se second#define vi vector<int> #define pi pair<int,int>#define SI(a) ((a).size())#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;#define PRi2D(a,n,m) For(i,n) { \                        For(j,m-1) cout<<a[i][j]<<' ';\                        cout<<a[i][m]<<endl; \                        } #pragma comment(linker, "/STACK:102400000,102400000")typedef long long ll;typedef long double ld;typedef unsigned long long ull;ll mul(ll a,ll b){return (a*b)%F;}ll add(ll a,ll b){return (a+b)%F;}ll sub(ll a,ll b){return ((a-b)%F+F)%F;}void upd(ll &a,ll b){a=(a%F+b%F)%F;}int read(){    int x=0,f=1; char ch=getchar();    while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}    while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}    return x*f;} #define MAXNode (100000*4+10)#define Sigma_size (26)int a[Sigma_size],b[Sigma_size];class Trie{public:    int ch[MAXNode][Sigma_size];    int v[MAXNode],siz;    Trie(int _siz=0):siz(_siz){}    void mem(int _siz=0){siz=_siz; }    int idx(char c){return c-'a';}    void insert(char *s,int *t,int val=1)    {        int u=0,n=strlen(s);        Rep(i,n)        {            int c=idx(s[i]);            if (!ch[u][c])            {                ++siz;                MEM(ch[siz]);v[siz]=0;                ch[u][c]=siz;                if (i) t[c]++;            }            u=ch[u][c];        }        v[u]=val;    }}T,rT;int n; char s[44];int main(){//  freopen("D.in","r",stdin);//  freopen(".out","w",stdout);    while(scanf("%d",&n)!=EOF) {        T.mem();rT.mem(); MEM(a) MEM(b)        For(i,n) {            scanf("%s",s);            T.insert(s,a);            reverse(s,s+strlen(s));            rT.insert(s,b);        }        ll ans=(ll)T.siz*rT.siz;        Rep(i,Sigma_size) ans-=(ll)a[i]*b[i];        Rep(i,Sigma_size) if (T.v[T.ch[0][i]]) ans++;        printf("%lld\n",ans);    }    return 0;}

Eve

#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<functional>#include<iostream>#include<cmath>#include<cctype>#include<ctime>#include<iomanip> #include<vector>#include<string>#include<queue>#include<stack>#include<map>#include<sstream>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define ForD(i,n) for(int i=n;i;i--)#define ForkD(i,k,n) for(int i=n;i>=k;i--)#define RepD(i,n) for(int i=n;i>=0;i--)#define Forp(x) for(int p=Pre[x];p;p=Next[p])#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])  #define Lson (o<<1)#define Rson ((o<<1)+1)#define MEM(a) memset(a,0,sizeof(a));#define MEMI(a) memset(a,127,sizeof(a));#define MEMi(a) memset(a,128,sizeof(a));#define INF (2139062143)#define F (1000000007)#define pb push_back#define mp make_pair #define fi first#define se second#define vi vector<int> #define pi pair<int,int>#define SI(a) ((a).size())#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;#define PRi2D(a,n,m) For(i,n) { \                        For(j,m-1) cout<<a[i][j]<<' ';\                        cout<<a[i][m]<<endl; \                        } #pragma comment(linker, "/STACK:102400000,102400000")typedef long long ll;typedef long double ld;typedef unsigned long long ull;ll mul(ll a,ll b){return (a*b)%F;}ll add(ll a,ll b){return (a+b)%F;}ll sub(ll a,ll b){return ((a-b)%F+F)%F;}void upd(ll &a,ll b){a=(a%F+b%F)%F;}int read(){    int x=0,f=1; char ch=getchar();    while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}    while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}    return x*f;} #define MAXN (300000+10)class bingchaji{public:    int father[MAXN],n;    void mem(int _n)    {        n=_n;        For(i,n) father[i]=i;    }    int getfather(int x)     {        if (father[x]==x) return x;        return father[x]=getfather(father[x]);    }    void unite(int x,int y)    {        father[x]=getfather(father[x]);        father[y]=getfather(father[y]);        father[father[x]]=father[father[y]];    }    bool same(int x,int y)    {        return getfather(x)==getfather(y);    }}S;int sx[MAXN],n;bool b[MAXN];int id[MAXN];int main(){//  freopen("E.in","r",stdin);//  freopen(".out","w",stdout);    while(cin>>n) {        MEM(id) MEM(b) MEM(sx)         For(i,n) {            char s[2];            scanf("%s",s);            sx[i]=(s[0]=='F'); b[i]=1;         }        int m=read();        S.mem(n+m);        For(i,m) {            int p=read();            if (p<0) b[-p]=0;            else {                int q; char c[2];                scanf("%d %s",&q,c);                if (!sx[p]) p=q;                S.unite(++n,p);                 sx[n]=c[0]=='F';                b[n]=1;             }        }        int k=read();        For(i,n) S.getfather(i);        For(i,k) {            int p=read(),q=read();            id[S.getfather(p)]=q;        }        For(i,n) if (!id[i]) {            id[i]=-i;        }        vi v;        For(i,n) if (b[i]) {            int q=id[S.getfather(i)];            v.pb(q);        }        sort(v.begin(),v.end());        int f=unique(v.begin(),v.end())-v.begin();        if (f<=1) {            puts("YES");        } else {            int p=0,q=0;            Rep(i,f) if (v[i]<0) ++p;             else ++q;            if (q>=2) puts("NO");             else puts("POSSIBLY");        }    }    return 0;}

GCD Guessing Game

#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<functional>#include<iostream>#include<cmath>#include<cctype>#include<ctime>#include<iomanip> #include<vector>#include<string>#include<queue>#include<stack>#include<map>#include<sstream>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define ForD(i,n) for(int i=n;i;i--)#define ForkD(i,k,n) for(int i=n;i>=k;i--)#define RepD(i,n) for(int i=n;i>=0;i--)#define Forp(x) for(int p=Pre[x];p;p=Next[p])#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])  #define Lson (o<<1)#define Rson ((o<<1)+1)#define MEM(a) memset(a,0,sizeof(a));#define MEMI(a) memset(a,127,sizeof(a));#define MEMi(a) memset(a,128,sizeof(a));#define INF (2139062143)#define F (1000000007)#define pb push_back#define mp make_pair #define fi first#define se second#define vi vector<int> #define pi pair<int,int>#define SI(a) ((a).size())#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;#define PRi2D(a,n,m) For(i,n) { \                        For(j,m-1) cout<<a[i][j]<<' ';\                        cout<<a[i][m]<<endl; \                        } #pragma comment(linker, "/STACK:102400000,102400000")typedef long long ll;typedef long double ld;typedef unsigned long long ull;ll mul(ll a,ll b){return (a*b)%F;}ll add(ll a,ll b){return (a+b)%F;}ll sub(ll a,ll b){return ((a-b)%F+F)%F;}void upd(ll &a,ll b){a=(a%F+b%F)%F;}int read(){    int x=0,f=1; char ch=getchar();    while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}    while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}    return x*f;} #define MAXN (10010)int p[MAXN],tot;bool b[MAXN]={0};void make_prime(int n){    tot=0;    Fork(i,2,n)    {        if (!b[i]) p[++tot]=i;        For(j,tot)        {            if (i*p[j]>n) break;            b[i*p[j]]=1;            if (i%p[j]==0) break;          }    }}int main(){//  freopen("D.in","r",stdin);//  freopen(".out","w",stdout);    int n;    make_prime(10000);    while(cin>>n) {        int r=upper_bound(p,p+1+tot,n)-(p+1);        int l=1,ans=0;        while(l<=r) {            ll a=p[r--];            while(a*p[l]<=n) a*=p[l++];            ans++;        }        cout<<ans<<endl;    }    return 0;}

Kingdom Roadmap

#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<functional>#include<iostream>#include<cmath>#include<cctype>#include<ctime>#include<iomanip> #include<vector>#include<string>#include<queue>#include<stack>#include<map>#include<sstream>using namespace std;#define For(i,n) for(int i=1;i<=n;i++)#define Fork(i,k,n) for(int i=k;i<=n;i++)#define Rep(i,n) for(int i=0;i<n;i++)#define ForD(i,n) for(int i=n;i;i--)#define ForkD(i,k,n) for(int i=n;i>=k;i--)#define RepD(i,n) for(int i=n;i>=0;i--)#define Forp(x) for(int p=Pre[x];p;p=Next[p])#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])  #define Lson (o<<1)#define Rson ((o<<1)+1)#define MEM(a) memset(a,0,sizeof(a));#define MEMI(a) memset(a,127,sizeof(a));#define MEMi(a) memset(a,128,sizeof(a));#define INF (2139062143)#define F (1000000007)#define pb push_back#define mp make_pair #define fi first#define se second#define vi vector<int> #define pi pair<int,int>#define SI(a) ((a).size())#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;#define PRi2D(a,n,m) For(i,n) { \                        For(j,m-1) cout<<a[i][j]<<' ';\                        cout<<a[i][m]<<endl; \                        } #pragma comment(linker, "/STACK:102400000,102400000")typedef long long ll;typedef long double ld;typedef unsigned long long ull;ll mul(ll a,ll b){return (a*b)%F;}ll add(ll a,ll b){return (a+b)%F;}ll sub(ll a,ll b){return ((a-b)%F+F)%F;}void upd(ll &a,ll b){a=(a%F+b%F)%F;}int read(){    int x=0,f=1; char ch=getchar();    while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}    while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}    return x*f;} #define MAXN (100010+10)int n,d[MAXN],lef;vi edge[MAXN];int t[MAXN],ti=0;void dfs6(int x,int f) {    if (d[x]==1) t[ti++]=x;    Rep(j,SI(edge[x]) ) {        int v=edge[x][j];        if (v^f) {            dfs6(v,x);        }    }}int main(){//  freopen("K.in","r",stdin);//  freopen(".out","w",stdout);    while(cin>>n) {        if (n==2) {            int u=read(),v=read();            puts("1\n1 2"); continue;        }         MEM(d) lef=0;         For(i,n-1) {            int u=read(),v=read();            d[u]++,d[v]++;            edge[u].pb(v); edge[v].pb(u);        }        vi v;        For(i,n) if (d[i]==1) v.pb(i);        int sz=SI(v);        lef=sz;        printf("%d\n",(sz+1)/2);        ti=0;        dfs6(1,0);        if (lef%2==0) {            Rep(i,lef/2) printf("%d %d\n",t[i],t[i+lef/2]);        } else {            Rep(i,1+lef/2) printf("%d %d\n",t[i],t[i+lef/2]);        }        For(i,n) edge[i].clear();     }    return 0;}
0 0