`
暴风雪
  • 浏览: 390582 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[USACO] Chapter1-Getting started(入门)

阅读更多

Greedy Gift Givers (gift1) 

 

/*
	ID:123ldss2
	PROG: gift1
	LANG: C++
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<fstream>
#include<cmath>
#include <algorithm>
using namespace std;
const int inf=1<<28;
const int nMax=1005;
const int mMax=40000;

class nodea{
public:
    int id;
    nodea *p[130];
    nodea(){
        int i;
        id=-1;
        for(i=0;i<130;i++)p[i]=NULL;
    }
};
nodea *root;
int cnt;

int getnum(char *s){
    int i;
    nodea *r=root;
    int l=strlen(s);
    for(i=0;i<l;i++){
        if(r->p[s[i]]==NULL){
            r->p[s[i]]=new nodea();
        }
        r=r->p[s[i]];
    }
    if(r->id==-1){
        r->id=cnt;
        cnt++;
    }
    return r->id;
}
int sum[100];
char name[200][200];
int main(){
    freopen ( "gift1.in", "r", stdin );
    freopen ( "gift1.out", "w", stdout );
    char str[100];
    int n,i,j,a,b,c,d;
    while(scanf("%d",&n)!=EOF){
        root=new nodea();
        memset(sum,0,sizeof(sum));
        cnt=1;
        for(i=1;i<=n;i++){
            scanf("%s",name[i]);
            getnum(name[i]);
        }
        for(i=1;i<=n;i++){
            scanf("%s",str);
            a=getnum(str);
            scanf("%d%d",&b,&c);

            //sum[a]-=b;
            int money;
            if(c!=0){
                money=b/c;
            }
            for(j=1;j<=c;j++){
                scanf("%s",str);
                d=getnum(str);
                sum[d]+=money;
            }

            sum[a]-=money*c;
        }
        for(i=1;i<=n;i++){
            printf("%s %d\n",name[i],sum[i]);
        }
    }
    return 0;
}
/*
    ID:123ldss2
    PROG: friday
    LANG: C++
*/
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int play(int i){
	if(i%4!=0||(i%100==0&&i%400!=0)){
	return 0;
	}
	else return 1;
}
int common[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int nocommon[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int days(int year,int month,int day){
	int a=0,i,aaa=0;
	for(i=0;i<year;i++){
		if(play(i)==1){
			a++;
		}
	}
	aaa=year*365+a;
    if(play(i)==0){
		for(i=0;i<month-1;i++){
		aaa+=common[i];
		}
		aaa+=day;
	}
	else{
		for(i=0;i<month-1;i++){
			aaa+=nocommon[i];
		}
		aaa+=day;
	}
	return aaa;
}
int num[8];
int main(){
    freopen("friday.in","r",stdin );
    freopen("friday.out","w",stdout );
    int year,n,month,day,i,aaa;
	while(scanf("%d",&n)!=EOF){
	    memset(num,0,sizeof(num));
	    for(year=1900;year<=1900+n-1;year++){
	        for(month=1;month<=12;month++){
                aaa=days(year,month,13);
                aaa=(aaa+5)%7;
                num[aaa]++;
	        }
	    }
	    cout<<num[6]<<" ";
	    for(i=0;i<5;i++){
	        cout<<num[i]<<" ";
	    }
	    cout<<num[5]<<endl;
	}
    return 0;
}
 
/*
    ID:123ldss2
    PROG: barn1
    LANG: C++
*/
#include<iostream>
#include<cstring>
#include<fstream>
#include<cstdio>
#include <algorithm>
using namespace std;
const int nMax=1000;
int dis[nMax],pos[nMax];
int main(){
    int m,s,c,i,j,a,b,n,ans;
    freopen ( "barn1.in", "r", stdin );
    freopen ( "barn1.out", "w", stdout );
    while(scanf("%d%d%d",&m,&s,&c)!=EOF){
        for(i=0;i<c;i++){
            scanf("%d",&pos[i]);
        }
        if(m>=c){
            cout<<c<<endl;
            continue;
        }
        sort(pos,pos+c);
        ans=pos[c-1]-pos[0];
        for(i=0;i<c-1;i++){
            dis[i]=pos[i+1]-pos[i];
        }
        sort(dis,dis+c-1);
        b=m;
        m--;
        a=c-2;
        while(m--&&a>=0){
            ans-=dis[a];
//            cout<<"dis"<<dis[a];
//            cout<<" ans"<<ans<<endl;
            a--;
        }
        cout<<ans+b<<endl;
    }
    return 0;
}
/*
    ID:123ldss2
    PROG: calfflac
    LANG: C++
*/
#include<iostream>
#include<cstring>
#include<fstream>
#include<cstdio>
using namespace std;
const int nMax=200000;
int p[nMax];
char str1[nMax];
void build(char *str,int len) {  //abc-->@#a#b#c#
    int i=0,j;
    str1[0]='@';//开始加入另特殊字符
    str1[1]='#';
    j=2;
    for(i=0;i<len;i++ ){//在每个字符两边都插入一个特殊字符
        str1[j++]=str[i];
        str1[j++]='#';
    }
    str1[j]='\0';
}

int ps;
int manacher(){
    int idd,mxx=0,maxx=0,record;
    memset(p,0,sizeof(p));
    for(int i=strlen(str1);i>=0;i--){
        if( mxx>i )
            p[i]=min(mxx-i, p[2*idd-i]);
        else p[i]=1;
        while(str1[i+p[i]]==str1[i-p[i]])
            p[i]++;

        if( i+p[i]>mxx ){
            mxx=i+p[i];
            idd=i;
        }

        if( p[i]>maxx){
            maxx=p[i]-1;//P[id]-1就是该回文子串在原串中的长度
            record=i;
            ps=record;
        }
    }
    return maxx;
}
int main(){
    char c;
    int len,a,b,n,i;
    int pos[nMax];
    char str[nMax],abc[nMax];
    len=n=0;
    freopen ( "calfflac.in", "r", stdin );
    freopen ( "calfflac.out", "w", stdout );
//    cin>>str;
//    cout<<str<<endl;
    while(scanf("%c",&c)!=EOF){
        str[len]=c;
        if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
            if(c>='a'&&c<='z'){
                abc[n]=c;
            }
            else{
                abc[n]=c+'a'-'A';
            }
            pos[n]=len;
            n++;
        }
        len++;
    }
    abc[n]='\0';
    //cout<<endl<<abc<<endl;
    build(abc,n);
    a=manacher();   //回文串长度
    cout<<a<<endl;
  //  cout<<ps<<"ps"<<endl;
    if(ps%2==1){
        ps=ps/2-1;
      //  cout<<ps<<endl;
        for(i=pos[ps-a/2+1];i<=pos[ps+a/2];i++){
            cout<<str[i];
        }cout<<endl;
    }
    else{
        ps=ps/2-1;
     //   cout<<ps<<endl;
        for(i=pos[ps-a/2];i<=pos[ps+a/2];i++){
            cout<<str[i];
        }cout<<endl;
    }

    return 0;
}
  /*
    ID:bbezxcy1
    PROG: beads
    LANG: C++
*/
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char str[500],str1[1500];
bool vis[3000];
int n;
int getnum(int loc)
{
    memset(vis,0,sizeof(vis));
    int a=0,b=0,i;
    for(i=loc;i>loc-n;i--)
    {
        if(str1[i]==str1[loc]||str1[i]=='w')
        {
            a++;
            vis[i]=vis[i+n]=vis[i+n*2]=1;
        }
        else
        {
            break;
        }
    }
    for(i=loc+1;i<=loc+n;i++)
    {
        if((str1[i]==str1[loc+1]||str1[i]=='w')&&!vis[i])
        {
            b++;
        }
        else
        {
            break;
        }

    }
    return a+b;
}
int main()
{
    int i,j,ans,b,c;
    freopen("beads.in","r",stdin);
    freopen("beads.out","w",stdout);
    while(scanf("%d",&n)!=EOF)
    {
        ans=0;
        scanf("%s",str);
        for(i=0;i<n;i++){
            str1[i]=str[i];
            str1[i+n]=str[i];
            str1[i+n*2]=str[i];
        }str1[n*3]='\0';
       // cout<<getnum(23)<<endl;;
        for(i=0;i<n;i++)
        {
            if(str1[i+n]=='w')
            {
                str1[i+n]='b';
                ans=max(ans,getnum(i+n));
                str1[i+n]='r';
                ans=max(ans,getnum(i+n));
                str1[i+n]='w';
            }
            else
            {
                ans=max(ans,getnum(i+n));
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}
 
0
0
分享到:
评论

相关推荐

    usaco chapter3-6

    usaco 3到6章讲解

    usaco历年数据---2001

    1. **USACO和ACM/ICPC编程竞赛**:了解这两种竞赛的性质、目标和参赛流程,有助于提升编程和算法技能。 2. **算法设计**:USACO和ACM比赛强调高效的算法设计,通过解题可以学习到排序、搜索、图论、动态规划等多种...

    usaco历年试题---2002

    《USACO历年试题——2002》 USACO,全称为USA Computing Olympiad,是美国计算机奥林匹克竞赛,旨在提升中学生的算法设计和编程能力。2002年的USACO试题集,是这一赛事历史上的一个重要部分,对于学习算法、准备ACM...

    USACO-Bessie-Come-Home.zip_Home Home

    【标题】USACO-Bessie-Come-Home.zip_Home Home 【正文】 这个压缩包文件中的内容是关于USACO(美国计算机奥林匹克)竞赛中一个名为"Bessie Come Home"的问题的C++解决方案。USACO是一个针对高中生的在线编程竞赛...

    USACO section1-5测试数据

    这个压缩包文件包含的是USACO比赛section1到section5的测试数据和标准程序,这对于准备参加USACO竞赛或者想要提升自己编程技能的学生来说,是非常宝贵的资源。 section1至section5代表了USACO比赛的不同难度级别,...

    USACO2001-2007历年月赛测试数据+题目+题解打包全

    资源包包括USACO 2001-2007年月赛的测试数据;usaco月赛十年题典(2000-2009),usaco月赛2002-2008题解。单独下载需资源分30分以上。为了方便编程爱好者,我这边统一下载打包。欢迎下载。

    USACO-Magic-Squares.zip_magic

    《USACO魔法方阵:C++编程解析》 USACO(美国计算机奥林匹克)是一项旨在培养高中生计算机科学技能的竞赛。在这个问题中,我们关注的是“Magic Squares”,这是一个经典的数学概念,与C++编程相结合,构成了一个...

    USACO1-5单元AC代码

    USACO1-5单元AC的代码~ 1 Chapter1 1.1 Section 1.1 1.2 Section 1.2 1.3 Section 1.3 1.4 Section 1.4 1.5 Section 1.5 2 Chapter2 2.1 Section 2.1 2.2 Section 2.2 2.3 Section 2.3 2.4 Section 2.4 3 Chapter3 ...

    USACO-Greedy-Gift-Givers.rar_greedy gift givers

    USACO(USA Computing Olympiad)是一项面向美国高中生的在线编程竞赛,旨在培养参赛者的算法设计和编程技能。在"Greedy Gift Givers"这个题目中,我们面对的是一个贪心算法的应用问题。贪心算法是一种解决问题的...

    usaco 2010-2011

    6. **USACO 一月竞赛** - 2011 年 1 月 7 日至 10 日 7. **USACO 二月竞赛** - 2011 年 2 月 4 日至 7 日 8. **USACO 三月竞赛** - 2011 年 3 月 11 日至 14 日 9. **USACO 美国公开赛** - 2011 年 4 月 28 日至 5 ...

    USACO2001-2007月赛全集

    这是USACO2001-2007月赛全集。 usaco是美国中学生的官方竞赛网站。是美国著名在线题库,专门为信息学竞赛选手准备。推荐直接阅读英语原文,既准确可靠又可提高英语水平。做题方式模拟正式比赛,采用标准测评机、文件...

    USACO-Training-Website:我的USACO培训网站解决方案

    这个名为"USACO-Training-Website:我的USACO培训网站解决方案"的压缩包文件,显然包含了作者对USACO训练网站上部分或所有章节的练习题目的解答。这些解答可能以源代码的形式存在,每个文件顶部可能带有详细的USACO...

    USACO-Chapter1.rar_it_usaco

    《USACO入门指南——第一章解析》 USACO,全称USA Computing Olympiad,是美国计算机奥林匹克竞赛,旨在培养中学生在算法和编程方面的技能。对于初学者来说,USACO提供了很好的学习路径和挑战。本文将针对USACO的第...

    USACO-Training-Pages:美国计算机奥林匹克训练页

    在这个“USACO-Training-Pages”压缩包中,我们可以期待找到与USACO竞赛相关的各种资料,尤其是针对Java语言的学习材料。Java作为一种广泛应用于计算机科学领域的面向对象的编程语言,因其强大的跨平台能力和简洁的...

    usaco-java-gold

    在这个“usaco-java-gold”主题中,我们将深入探讨Java在USACO黄金级别比赛中的应用,以及如何解决相关问题。 一、Java语言基础 1. 类与对象:Java是一种面向对象的语言,理解和熟练运用类和对象是解决USACO问题的...

    USACO题解+程序

    我的USACO题解和程序

    Notes-USACO-2021-弹簧

    本压缩包“Notes-USACO-2021-Spring”中的笔记主要聚焦于2021年春季训练营和比赛的知识点,对于想要深入学习算法和提升编程能力的爱好者来说,具有极高的学习价值。 笔记内容可能包括但不限于以下几个方面: 1. **...

    USACO-Chapter2.rar_beginners

    "USACO-Chapter2.rar_beginners" 是针对USACO第二章内容的压缩包,特别适合编程新手入门。 在USACO的第二章,主要涉及基础的算法和数据结构,这对于构建扎实的编程基础至关重要。让我们逐一解析这个压缩包中的四个...

    USACO Results Analytics-crx插件

    分析USACO比赛结果。 根据数据绘制一些图表。 此扩展程序从USACO竞赛结果页面收集数据,并构建漂亮的图形以更好地了解参与者,国家和分数。 使用d3.js和nvd3.js库进行绘制。 使用方法:只需进入USACO竞赛结果页面,...

    USACO 历年全部测试数据

    含2001~2017全部比赛赛题测试数据 2001~2007 数据√ 题面× 标程题解× 2008~2010 数据√ 题面√ 标程题解× 2011~2017 数据√ 题面√ 标程题解√ 其中除2008~2010外其他年份均按照年度、月度、金银铜白金组别整理...

Global site tag (gtag.js) - Google Analytics