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

Codeforces Round #107 (Div. 2)-吐血记~~

阅读更多

地址 http://codeforces.com/contest/151

A:弱水题,分别求出三种食品分别用来提供几次toast,取最小值再除以人数即可,一点弯都不要转。

 

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
    int n,k,l,c,d,p,nl,np,a,b,cc;
    while(scanf("%d%d%d%d%d%d%d%d",&n,&k,&l,&c,&d,&p,&nl,&np)!=EOF){
        a=k*l;
        b=c*d;
        cc=p;
        a/=nl;
        cc/=np;
        cout<<min(a,min(b,cc))/n<<endl;
    }
    return 0;
}

 

B,字符串处理有点麻烦,不过不是太大的问题。最后标点符号的处理很蛋疼,需要先统计答案的个数。另外一个,比如当所有人都没有texi的电话号码时,居然是需要输出所有人的名字,因为他们这一项的最大值都等于0!!很多人都栽在这个上面了,我也犹豫了许久。最后侥幸1A。

 

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include <algorithm>
using namespace std;
const int inf=1<<28;
const int nMax=1005;
const int mMax=40000;

char name[101][101];
int has[101][3];
char phone[20];

int check(){
    if(phone[0]==phone[1]&&phone[1]==phone[3]&&phone[1]==phone[4]&&phone[1]==phone[6]&&phone[1]==phone[7]){   //texi
        return 0;
    }
    if(phone[0]>phone[1]&&phone[1]>phone[3]&&phone[3]>phone[4]&&phone[4]>phone[6]&&phone[6]>phone[7]){   //texi
        return 1;
    }
    return 2;
}

int maxx[3];
char ans[101][101];
int main(){
    int n,i,j,m,a,b,c;
    while(scanf("%d",&n)!=EOF){
        memset(maxx,0,sizeof(maxx));
        memset(has,0,sizeof(has));
        for(i=1;i<=n;i++){
            scanf("%d",&m);
            scanf("%s",name[i]);
            while(m--){
                scanf("%s",phone);
                a=check();
                has[i][a]++;
                maxx[a]=max(has[i][a],maxx[a]);
            }
        }
        int num=0;
        printf("If you want to call a taxi, you should call: ");
        for(i=1;i<=n;i++){
            if(has[i][0]==maxx[0]){
                strcpy(ans[num],name[i]);
                num++;
            }
        }
        for(i=0;i<num-1;i++){
            printf("%s, ",ans[i]);
        }printf("%s.\n",ans[num-1]);

        num=0;
        printf("If you want to order a pizza, you should call: ");
        for(i=1;i<=n;i++){
            if(has[i][1]==maxx[1]){
                strcpy(ans[num],name[i]);
                num++;
            }
        }
        for(i=0;i<num-1;i++){
            printf("%s, ",ans[i]);
        }printf("%s.\n",ans[num-1]);

        num=0;
        printf("If you want to go to a cafe with a wonderful girl, you should call: ");
        for(i=1;i<=n;i++){
            if(has[i][2]==maxx[2]){
                strcpy(ans[num],name[i]);
                num++;
            }
        }
        for(i=0;i<num-1;i++){
            printf("%s, ",ans[i]);
        }printf("%s.\n",ans[num-1]);

    }
    return 0;
}

 

一个小时完成上面两题,没想到的是接下来的一个小时居然爆零了,c题博弈完全没想法。D组合数学感觉能想出来,最后也想出来了,但是是TM的最后十分钟恍然大悟!!然后第二天早上马上交了上去ac。接下来说说D吧

 

给出三个数字n,m,k。求出存在多少中字符串,它的长度是n,字典大小是m(比如全部小写字母的单词的字典大小就是26).且他的每个长度为k的子串都是回文串。

其实这道题关键就在,无论字典的大小有多大,当k小于n时,一个字符串最多只能包含两种字符,否则不可能每个长度为k的子串都回文。其他的,再按照k和n的关系太讨论即可。很不明白为什么k会大于n。那道字符串的子串能大于这个字符串??wa在这个上面好几次……囧

 

 

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main(){
    int n,m,k,i;
    long long ans;
    while(scanf("%d%d%d",&n,&m,&k)!=EOF){
        if(k==n){
            ans=1;
            for(i=0;i<(n+1)/2;i++){
                ans*=m;
                ans%=1000000007;
            }
            cout<<ans<<endl;
            continue;
        }
        if(k==1||k>n){
            ans=1;
            for(i=0;i<n;i++){
                ans*=m;
                ans%=1000000007;
            }
            cout<<ans<<endl;
            continue;
        }
        if(k&1){
            ans=m*(m-1)+m;
            ans%=1000000007;
            cout<<ans<<endl;
            continue;
        }
        cout<<m<<endl;
    }
    return 0;
}
0
1
分享到:
评论
2 楼 暴风雪 2012-02-19  
euyuil 写道
B 题我没有考虑某种电话没有的情况,也 AC 了。C 题其实是数论……欢迎交流:http://euyuil.com/3254/codeforces-round-107-div-2/

那道题,不是需要考虑,而是完全不需要考虑,考虑了就错了~
1 楼 euyuil 2012-02-19  
B 题我没有考虑某种电话没有的情况,也 AC 了。C 题其实是数论……欢迎交流:http://euyuil.com/3254/codeforces-round-107-div-2/

相关推荐

    Codeforces Round #723 (Div. 2).md

    Codeforces Round #723 (Div. 2).md

    codeforces round 962 (div. 3)tion-ma笔记

    codeforces round 962 (div. 3)tion-ma笔记

    Codeforces Round 961 (Div. 2) 编程竞赛的详细解析

    codeforces round 961 (div. 2)

    Codeforces Round 961 (Div. 2):深度解析与实战技巧.pdf

    ### Codeforces Round 961 (Div. 2):深度解析与实战技巧 #### 引言 Codeforces 是一个国际知名的在线编程竞赛平台,它汇聚了来自世界各地的编程爱好者和专业人士。每一轮比赛都旨在测试参赛者的算法思维、编程...

    codeforces round 961 (div. 2)

    ### Codeforces Round 961 (Div. 2) A题解析 #### 题目背景 Codeforces Round 961 (Div. 2) 是一场针对中级水平程序员的编程竞赛,通常会包含几个不同难度级别的题目。A题作为入门级题目,旨在测试参赛者的基础算法...

    codeforces round 962 (div. 3).docx

    Codeforces Round 962 (Div. 3) 是一场编程竞赛,其中包含了多个编程题目,每个题目都有其独特的挑战和解题思路。以下是对该竞赛中部分题目的简要介绍及解题思路概述: A题: Legs 题意: 一只鸡有2条腿,一头奶牛有...

    codeforces round 962 (div. 3) .zip

    Codeforces Round 962 (Div. 3) 是一场编程竞赛,旨在测试参赛者在算法和数据结构方面的能力。由于篇幅限制,我将对这场竞赛中的几个关键问题进行详细解析,但请注意,由于具体实现细节可能因题目而异,且无法在此...

    Codeforces Round 964 (Div. 4).pdf

    A~G

    Codeforces Round #627 (Div. 3) C. Frog Jumps(思维)

    传送门 题意: 开始位置在0,问能否跳到n+1位置 每步只能跳d 在1——n每个位置有方向,L,R,求d的最小值 思路: 只用找相邻两个R之间的最大值即可 代码: #include #include ...typedef long long l

    Codeforces Round #627 (Div. 3) B. Yet Another Palindrome Problem

    就是把所有相等的数放到一个vector里,如果他出现大于2次,看最远的间距是否大于2即可,找到一个就可以 代码: #include #include #include #include #include #include #include #include #include #include #...

    Codeforces Round #479 (Div. 3) E. Cyclic Components

    E. Cyclic Components 题目链接-E. Cyclic Components 题目大意 给你nnn个点和mmm条边,求所构成图中单圈环的个数 ...并查集并查集并查集 很明显单圈环每个点的度都为222,所以我们可以用数组cnt[]记录每个点的度,...

    Codeforces Round #628 (Div. 2) A~~D

    A #include using namespace std; typedef long long ll; int main(){ int t; cin&gt;&gt;t; while(t--){ ll x; cin&gt;&gt;x; cout&lt;&lt;1&gt;&gt;t; while(t--){ st.clear(); ll n; cin &gt;&gt;n;... ll re

    Codeforces Round #629 (Div. 3) B. K-th Beautiful String

    长度为n的字符串包含n−2n−2n−2个aaa和222个bbb,求按照字典序排列输出第kkk个字符串 解题思路 第一个bbb在倒数第二位有1个字符串,在倒数第三位有2个字符串…在倒数第nnn位时有n−1n-1n−1个字符串 可以根据第一...

    Codeforces Round 962

    Codeforces Round 962 (Div. 3) 编程竞赛 Codeforces Round 962 (Div. 3) 编程竞赛 Codeforces Round 962 (Div. 3) 编程竞赛 Codeforces Round 962 (Div. 3) 编程竞赛

    Codeforces Round #629 (Div. 3) E.Tree Queries (DFS)

    Codeforces Round #629 (Div. 3) E.Tree Queries (DFS) 思路:若ai 在路径上 ,则ai的父结点一定在路径上,若ai是路径上某个结点的子结点,则ai的父结点一定在路径上,综上只需考虑ai的父节点就行了。对每个ai判断...

    codeforces roun1-Artificial-Intelligence-P笔记

    codeforces round 962 (div. 3)

    Codeforces Round #627 (Div. 3) D. Pair of Topics(二分,思维)

    ### Codeforces Round #627 (Div. 3) D. Pair of Topics(二分,思维) #### 题目背景与概述 本题目来自Codeforces Round #627 (Div. 3),编号为D的题目“Pair of Topics”,这是一道结合了二分搜索与逻辑思维的...

    Codeforces D1/D2. Prefix-Suffix Palindrome (Manacher) /详解

    D1. Prefix-Suffix Palindrome (Easy version) D2. Prefix-Suffix Palindrome (Hard version) 题意: ...很显然,这是一个O(n^2)时间复杂度的算法,那么还有哪里可以优化呢?其实关于求回文串palindrom

    Codeforces题目泛做解题报告许昊然.pdf

    根据提供的文档信息,我们可以推断出这是一份由许昊然撰写的Codeforces题目的解题报告。许昊然是国际信息学奥林匹克(IOI)2012年和2013年的金牌获得者,因此他的解题报告极具参考价值。下面我们将详细解读这份报告...

Global site tag (gtag.js) - Google Analytics