【2016常州一中夏令营Day2】

小 W 学数学
【问题描述】
为了测试小 W 的数学水平,果果给了小 W N 个点,问他这 N 个点能构成的三角形个数。
【输入格式】
第一行一个整数 N,代表点数。
接下来 N 行,每行两个非负整数 X、Y,表示一个点的坐标。
【输出格式】
一个非负整数,即构成三角形个数。
【输入输出样例】
tri.in      
5          
0 0
1 0
2 0
0 1
1 1

tri.out      
9

【数据规模】
对于 20%的数据:N=3
对于另外 40%的数据:保证任意 3 点不在同一直线上
对于 100%的数据:N<=100,保证任意两点不重合,坐标<=10000

题解

暴力枚举用斜率或叉积判断是否共线,统计一下答案即可。

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

int n,ans;
int x[105],y[105];

int main()
{
    int i,j,k;
    freopen("tri.in","r",stdin);
    freopen("tri.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        scanf("%d%d",&x[i],&y[i]);
    for(i=1;i<=n;i++)
        for(j=i+1;j<=n;j++)
            for(k=j+1;k<=n;k++)
                if((y[k]-y[j])*(x[j]-x[i])!=(y[j]-y[i])*(x[k]-x[j])) ans++;
    printf("%d",ans);
    fclose(stdin);
    fclose(stdout);
    return 0;
}

小 W 学英语
【问题描述】

为了测试小 M 的英语水平,Mr.R 让小 M 写英语作文,小 M 则把作文交给了小 W 写。然而 Mr.R 总结出了那个小 W 写作文的习惯,也就是某些关键的字符串。如果一篇作文中这若干个关键字符串都出现,他就认为这是小 W 写的。注意,小 W 可能写多篇作文。
【输入格式】
第一行一个整数 N,表示关键字符串的个数,N<=100。
接下来 N 行,每行为一个长度不超过 100 的字符串。
最后是若干段文本,每段文本以 $ 结尾。
由于写作文的人太疯狂,每篇作文最长可以达到 1350000 个字符,但作文的个数不超过 10。
【输出格式】
对于每一段文本对应一行输出。‘Yes’表示是小 W 的作文,‘No’表示不是。
请注意大小写。
【输入输出样例】
letter.in

3 i
love
m
ilovem$
lovem$

letter.out
Yes
No
【数据规模】
对于 50%的数据:N<=7

题解

AC自动机即可

感谢我学习时TonyFang提供的关于AC自动机的教材  在此分享
关于Fail指针    http://www.acyume.com/archives/19
关于AC自动机   http://blog.csdn.net/jw72jw/article/details/6843700

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

int n,x,siz;
int len[110],fail[2000005],last[2000005],cnt[2000005],ch[2000005][27];
char ask[2000005],str[1005];
bool val[2000005];
queue<int> q; 

void ACinsert()
{
    int i,p,len,c;
    p=0;
    len=strlen(str);
    for(i=0;i<len;i++)
    {
        c=str[i]-‘a‘;
        if(!ch[p][c]) ch[p][c]=++siz;
        p=ch[p][c];
    }
    val[p]=true;
}

inline void ACgetfail()
{
    int i,j,c,p,v,now;
    fail[0]=0;
    for(c=0;c<26;c++)
    {
        p=ch[0][c];
        if(p)
        {
            fail[p]=last[p]=0;
            q.push(p);
        }
    }
    while(!q.empty())
    {
        now=q.front();
        q.pop();
        for(c=0; c<26; ++c)
        {
            p=ch[now][c];
            if(!p) continue;
            q.push(p);
            v=fail[now];
            while(v&&!ch[v][c]) v=fail[v];
            fail[p]=ch[v][c];
            last[p]=val[fail[p]]?fail[p]:last[fail[p]];
        }
    }
}

void ACadd(int x)
{
    for(;x;x=last[x])
        cnt[x]=1;
}

void ACfind()
{
    int i,j,p,len,c;
    p=0;
    len=strlen(ask);
    memset(cnt,0,sizeof(cnt));
    for(i=0;i<len-1;i++)
    {
        c=ask[i]-‘a‘;
        while(p&&!ch[p][c]) p=fail[p];
        p=ch[p][c];
        if(val[p]) ACadd(p);
        else if(last[p]) ACadd(last[p]);
    }
}

int main()
{
    int i,j;
    bool flag;
    freopen("letter.in","r",stdin);
    freopen("letter.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%s",str);
        ACinsert();
    }
    ACgetfail();
    while(~scanf("%s",ask))
    {
        ACfind();
        flag=false;
        for(i=1;i<=siz;i++)
            if(val[i]!=0)
                if(cnt[i]==0)
                {
                    flag=true;
                    break;
               }
        if(flag) puts("No");
        else puts("Yes");
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}

小 W 学物理
【问题描述】
为了测试小 W 的物理水平,Mr.X 在二维坐标系中放了 N 面镜子(镜子坐标绝对值不超过 M) ,镜子均与坐标轴成 45°角,所以一共有两种类型“/”和“\”。原点不会有镜子,任意一点最多只有一面镜子。镜子两个面都能反光,而中间不透光,例如,对于一个“/”型镜子,下方向射入的光线会被反射到右方向,左方向射入的光线会被反射到上方向。
现在有一条光线从原点沿 X 轴正方向射出,求走过 T 路程后所在位置。
【输入格式】
第一行三个整数 N,M,T。
第 2 到 N+1 行,每行两个整数 Xi,Yi,表示镜子坐标,一个字符 Si 表示镜子类型。
【输出格式】
一行两个整数,表示走过 T 路程后的坐标。
【输入输出样例】
mir.in

5 2 8
0 1 \
0 2 /
1 0 /
1 1 \
1 2 \

mir.out
3 1
【数据规模】
对于 20%的数据:N=1
对于 40%的数据:N<=1000
对于 40%的数据:M<=1000
对于 40%的数据:T<=1000000

题解

预处理出每面镜子向4个方向反射出光线会到达的镜子是的编号后模拟并判环即可。

时间: 2024-10-05 04:45:24

【2016常州一中夏令营Day2】的相关文章

【2016常州一中夏令营Day4】

小 W 走迷宫[问题描述]小 W 被小 M 困在了一个方格矩阵迷宫里,矩阵边界在无穷远处,我们做出如下的假设:a. 每走一步时,只能从当前方格移动一格,走到某个相邻的方格上:b. 走过的格子立即塌陷无法再走第二次:c. 只能向北.东.西三个方向走.小 W 走了没多久就累坏了,他很想知道如果允许在方格矩阵上走 N 步,共有多少种不同的方案.( 开始时小 W 就在方格矩阵上的任意位置, 2 种走法只要有一步不一样,即被认为是不同的方案)[输入格式]一行输入 N.[输出格式]一行输出方案个数.[输入输

【2016常州一中夏令营Day7】

序列(sequence)[题目描述]蛤布斯有一个序列,初始为空.它依次将 1-n 插入序列,其中 i插到当前第 ai 个数的右边 (ai=0 表示插到序列最左边).它希望你帮它求出最终序列.[输入数据]第一行一个整数 n.第二行 n 个正整数 a1~an.[输出数据]输出一行 n 个整数表示最终序列,数与数之间用一个空格隔开.[样例输入]50 1 1 0 3[样例输出]4 1 3 5 2[数据范围]对于 30%的数据,n<=1000.对于 70%的数据,n<=100000对于 100%的数据,

【2016常州一中夏令营Day3】

小 W 摆石子[问题描述]小 W 得到了一堆石子,要放在 N 条水平线与 M 条竖直线构成的网格的交点上.因为小 M 最喜欢矩形了,小 W 希望知道用 K 个石子最多能找到多少四边平行于坐标轴的长方形,它的四个角上都恰好放着一枚石子.[输入格式]第一行三个整数 N,M,K.[输出格式]一个非负整数,即最多的满足条件的长方形数量.[输入输出样例] rectangle.in3 3 8rectangle.out5 rectangle.in7 14 86rectangle.out1398 [数据规模]对

【2016常州一中夏令营Day5】

小 W 拼图[问题描述]小 W 和小 M 一起玩拼图游戏啦~小 M 给小 M 一张 N 个点的图,有 M 条可选无向边,每条边有一个甜蜜值,小 W 要选K 条边,使得任意两点间最多有一条路径,并且选择的 K 条边甜蜜值之和最大.[输入格式]第一行三个正整数 N,M,K.接下来 M 行,每行三个正整数 A,B,C,表示 A.B 两点间有一条甜蜜值为 C 的无向边.[输出格式]一行输出最大甜蜜值之和.[输入输出样例]carpet.in 5 4 31 2 101 3 92 3 74 5 3 carpe

【2016常州一中夏令营Day1】

Problem 1. suffix给定一个单词,如果该单词以 er. ly 或者 ing 后缀结尾,则删除该后缀(题目保证删除后缀后的单词长度不为 0),否则不进行任何操作.Input输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为 32)Output输出按照题目要求处理后的单词.Examplesuffix.in          suffix.outreferer          referScoring? 对于 40% 的数据,单词最大长度不超过 5. 题解 无可奉告 #inc

常州一中B.1

差不多有一个星期左右没有刷题啦>< 就随便抓了一套水了一遍 T1,T3,T4纯模拟,我就不吐槽啦 T2还有点意思,略带数学思想 这种题目以后不用慌呀,自己拿笔好好算算,总会找到规律的呀╮(╯▽╰)╭ 之后要开始刷题啦 暑假作业三天之内写完了= =好像有点快? 之后就是预习啦,五三刷起来~\(≧▽≦)/~ 当然还有oi呀..... 退役的最后一些日子里 常州一中B.1,布布扣,bubuko.com

百练8216-分段函数-2016正式A题

百练 / 2016计算机学科夏令营上机考试 已经结束 题目 排名 状态 统计 提问 A:分段函数 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 编写程序,计算下列分段函数y=f(x)的值. y=-x+2.5; 0 <= x < 5 y=2-1.5(x-3)(x-3); 5 <= x < 10 y=x/2-1.5; 10 <= x < 20 输入 一个浮点数N,0 <= N < 20 输出 输出N对应的分段函数值:f

百练6255-单词反转-2016正式B题

百练 / 2016计算机学科夏令营上机考试 已经结束 题目 排名 状态 统计 提问 B:单词翻转 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 输入一个句子(一行),将句子中的每一个单词翻转后输出. 输入 只有一行,为一个字符串,不超过500个字符.单词之间以空格隔开. 输出 翻转每一个单词后的字符串,单词之间的空格需与原文一致. 样例输入 hello world 样例输出 olleh dlrow 1 #include <iostream> 2 #i

JSOI2015 R3 退队滚粗了

JSTSC最终落下帷幕,最终还是没能翻盘成功——退队了,遗憾啊,中原得鹿不由人 day0 没啥好说的,我一开始把省常中和常州一中搞混了……,不过常州一中的伙食还是相当良心的,比省常中好 考前感觉状态不错,虽然前面考得不好,但一轮轮发挥得逐渐正常了,感觉自己有着进队的实力 day1 看题 T1 好像只会暴力 T2 这肯定是最小割 T3 ……没什么思路 想了想,感觉T2比较好写,于是码完T2过了样例,感觉样例挺强,查查了范围,随便造了一组数据就没管了 然后是T1,写了个暴力然后就不会了,似乎忘了怎么