1.小c的倍数问题

http://acm.hdu.edu.cn/showproblem.php?pid=6108

分析:

比赛的时候真的是各种想,结果发现自己是想多了。。。数论基础差得一批

求有多少个因子的时候,不能直接1到q-1暴力去求,要sqrt(q-1),所以每次有%=0的时候,都是加2,因为我们算的是sqrt(q-1),注意如果i*i==q-1的时候,只加1

这个自己一开始都没想通,对为什么要加2还感到奇怪。。。

看来以后得多写数论了。。。

code:

#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
int sum=;
n--;
for(int i=;i<=sqrt(n);i++)
{
if(n%i==&&i*i!=n)
sum+=;
if(n%i==&&i*i==n)
sum++;
}
printf("%d\n",sum);
}
return ;
}

2.24点问题

http://10.10.10.170/vjudge/contest/view.action?cid=6#problem/A

A - 24

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Submit Status Practice FZU 2284

Description

有一天dark sil在玩24点,被杰哥看见了,杰哥就想到了这样一个问题:假设有N张卡片,上面写着1,2,3....N,是否可以用这些卡片组成24点呢?要求是只能使用加减乘除(整除),所有的卡片都必须用上,并且只能使用一次。如果可以组成24点,则输出"Yes",否则输出“No”.

假设N等于5,那么存在1*2*(3+4+5)=24.

Input

包含多组测试数据,每组测试数据的第一行输入一个数字T,表示接下去输入T组数据。

接下去T行,每一行输入一个N,意思如题目中所描述。

T≤30,n≤100000

Output

对于每组数据,输出一行"Yes"或者“No”

Sample Input

2 3 4

Sample Output

No

Yes

分析:

code:

#include<stdio.h>
int main()
{
int n,t;
while(~scanf("%d",&t))
{
while(t--)
{
scanf("%d",&n);
if(n>=)
{
printf("Yes\n");
}
else
{
printf("No\n");
}
}
} return ;
}

3.迷宫寻宝(BFS)

http://acm.hnucm.edu.cn/vjudge/contest/view.action?cid=6#problem/B

第一次写bfs题。。。菜

直接套bfs模板

我们可以用一个队列来记录一些点,每一次都取出队首元素,然后对其进行4个方向的探索,如果当vis[fx][fy]!=0的时候,代表已经找到终点,此时就退出程序,输出次数就行。(vis[fx][fy]代表的是从起始点到终点一共移动的步数)

#include<iostream>
#include<queue>
#include<string.h>
#include<stdio.h>
using namespace std;
#define max_n 1005
char a[max_n][max_n];//记录图形
int vis[max_n][max_n];//记录点的使用情况
int dir[4][2]={
-1,0,//方向引导数组
1,0,
0,1,
0,-1};
struct point
{
    int x,y;
};
struct point temp1,temp2;
queue<point> Q;
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        int sx,sy,fx,fy;//起点和终点的坐标
       // memset(vis,0,sizeof(vis));
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                vis[i][j]=0;
            }
        }
        for(int i=0;i<n;i++)
        {
            scanf("%s",a[i]);
        }
        for(int i=0;i<n;i++)//找到起点和终点
        {
            for(int j=0;j<n;j++)
            {
                if(a[i][j]=='S')
                {
                    sx=i;
                    sy=j;
                }else if(a[i][j]=='E')
                {
                    fx=i;
                    fy=j;
                }
            }
        }
        while(!Q.empty())//队列清空
        {
            Q.pop();
        }
        vis[sx][sy]=1;
        temp1.x=sx;
        temp1.y=sy;
        Q.push(temp1);
        int flag=0;
        while(!Q.empty())
        {
            temp1=Q.front();
            Q.pop();
            for(int i=0;i<4;i++)
            {
                temp2.x=temp1.x+dir[i][0];
                temp2.y=temp1.y+dir[i][1];
                if(temp2.x>=0&&temp2.y>=0&&temp2.x<n&&temp2.y<n&&!vis[temp2.x][temp2.y]&&a[temp2.x][temp2.y]!='#')
                {
                    vis[temp2.x][temp2.y]=vis[temp1.x][temp1.y]+1;
                    Q.push(temp2);
                }
            }
            if(vis[fx][fy]!=0)
            {
                flag=1;
                break;
            }
        }
        if(flag==1)
        {
            printf("%d\n",vis[fx][fy]-1);
        }else
        {
            printf("-1\n");
        }
    }
    return 0;
}

4.RPG

http://acm.hnucm.edu.cn/vjudge/contest/view.action?cid=6#problem/C

C - RPG

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Submit Status Practice FZU 2286

Description

Simon最近迷上了一款RPG游戏,现在他要从坐标(0,0)沿着y轴跑到坐标(0,100),他每秒能跑1个单位长度。

可是沿途的怪物可不会让他这么容易的就跑到,怪物会选择最优路径进行拦截,而且每个怪物跑的都比Simon快。

当怪物和Simon在同一坐标的时候,就会爆发战斗。但是Simon强,无敌,战斗一开始就可以把怪物秒了(也就是说,战斗是不消耗时间的)。

现在Simon想知道跑到目的地前他要和几只怪物战斗。(在目的地爆发的战斗也要计算在内)

Input

题目包含多组测试数据,每组测试数据第一行包含一个正整数n,表示怪物个数。

接下来n行,每行三个整数x,y,v,表示怪物当前的坐标和移动速度(单位长度/秒)。

n≤10^5,-1000<=x<=1000,-1000<=y<=1000,1<=v<=1000

Output

输出一个整数,表示战斗场数

Sample Input

3 0 0 5 0 200 1 0 201 1

Sample Output

2

分析:

脑洞题,只要所有怪兽能在100s内到达终点的话,就一定会遇到

#include <iostream>
#include <cstdio>
#include <list>
#include <stack>
#include <queue>
#include <cstdlib>
#include <set>
#include <map>
#include <vector>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        double x,y,v;
        int sum=0;
        while(n--)
        {
            scanf("%lf %lf %lf",&x,&y,&v);
            if(sqrt(x*x+fabs(y-100)*fabs(y-100))*1.0/v<=100)
                sum++;
        }
        printf("%d\n",sum);
    }
    return 0;
}

5.给力的移动

http://acm.hnucm.edu.cn/vjudge/contest/view.action?cid=6#problem/D

D - 给力的移动

Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Submit Status Practice FZU 2287

Description

你的弟弟给你安排了一个任务,他给了你1到N个数字的乱序排列,现在你想给你的弟弟秀一波操作,操作最少的次数把序列变成1到N的顺序排列,每次操作你可以选择序列中的一个数字并把它移动到序列的头部或尾部。

Input

包含多组测试数据。

每组测试数据的第一行为正整数N,表示排列的长度。

第二行为N个数字的乱序排列。

n≤100000

Output

输出最少的操作次数

Sample Input

6 6 3 2 4 5 1

Sample Output

3

分析:

带限定条件的最长递增子序列问题(LIS问题)

就问你间隔为1的最长递增子序列的长度是多少

然后n减去LIS序列的长度,就是需要操作的次数

ps:写过几道LIS的题目,比赛却没有想到,被自己蠢哭。。

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<stdio.h>
#define max_n 100005
int max_f(int x,int y)
{
    if(x>y)
        return x;
    else
        return y;
}
int dp[max_n];
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        memset(dp,0,sizeof(dp));
        int result=0;
        for(int i=0;i<n;i++)
        {
            int x;
            scanf("%d",&x);
            dp[x]=dp[x-1]+1;
            result=max_f(dp[x],result);
        }
        printf("%d\n",n-result);
    }
    return 0;
}

2018 HNUCM ACM集训队选拔第一场的更多相关文章

  1. 2018牛客多校第一场 B.Symmetric Matrix

    题意: 构造一个n*n的矩阵,使得Ai,i = 0,Ai,j = Aj,i,Ai,1+Ai,2+...+Ai,n = 2.求种类数. 题解: 把构造的矩阵当成邻接矩阵考虑. 那么所有点的度数都为2,且 ...

  2. 2018牛客多校第一场 A.Monotonic Matrix

    题意: 给一个n*m的矩阵赋值(0,1,2).使得每个数都不小于它左面和上面的数. 题解: 构建0和1的轮廓线.对于单独的轮廓线,共需要往上走n步,往右走m步.有C(n+m,n)种方式. 两个轮廓线的 ...

  3. 2018牛客多校第一场 D.Two Graphs

    题意: n个点,m1条边的图E1,n个点,m2条边的图E2.求图E2有多少子图跟图E1同构. 题解: 用STL的全排列函数next_permutation()枚举映射.对于每一种映射枚举每一条边判断合 ...

  4. 2018牛客多校第一场 E-Removal【dp】

    题目链接:戳这里 转自:戳这里 题意:长度为n的序列,删掉m个数字后有多少种不同的序列.n<=10^5,m<=10. 题解:dp[i][j]表示加入第i个数字后,总共删掉j个数字时,有多少 ...

  5. 2018牛客暑期ACM多校训练营第一场(有坑未填)

    (重新组队后的第一场组队赛 也是和自己队友的一次磨合吧 这场比赛真的算是一个下马威吧……队友上手一看 啊这不是莫队嘛 然后开敲 敲完提交发现t了 在改完了若干个坑点后还是依然t(真是一个悲伤的故事)然 ...

  6. 2018.10.26 浪在ACM 集训队第四次测试赛

    2018.10.26 浪在ACM 集训队第四次测试赛 题目一览表 来源 考察知识点 完成时间 A 生活大爆炸版 石头剪刀布  NOIP 提高组 2014   模拟???  2018.11.9 B 联合 ...

  7. 2018.10.2浪在ACM 集训队第三次测试赛

    2018.10.26 浪在ACM 集训队第三次测试赛 今天是暴力场吗???????可怕 题目一览表 来源 考察知识点 完成时间 A 1275 珠心算测试 NOIP 普及组 2014 暴力??? 201 ...

  8. 2018.10.2浪在ACM 集训队第二次测试赛

    2018.10.26 浪在ACM 集训队第二次测试赛 题目一览表 来源 考察知识点 A 1273 海港 NOIP 普及组 2016 差分数组+二分 B 1274 魔法阵     C 1267 金币   ...

  9. 2018.10.19浪在ACM 集训队第一次测试赛

    2018.10.19浪在ACM 集训队第一次测试赛 待参考资料: [1]:https://blog.csdn.net/XLno_name/article/details/78559973?utm_so ...

随机推荐

  1. 停课+2week

    可真是,累啊. 本以为停课之后会轻松一点,结果天天好累的说... 今天开始得去锻炼锻炼了... 已经好几次突然一阵晕眩了qwq... 希望我还能挺得住吧,至少要挺到WC结束啊... 这次,可是关系到我 ...

  2. BZOJ4513: [Sdoi2016]储能表(数位dp)

    题意 题目链接 Sol 一点思路都没有,只会暴力,没想到标算是数位dp??Orz 首先答案可以分成两部分来统计 设 \[ f_{i,j}= \begin{aligned} i\oplus j & ...

  3. 原型链继承中的prototype、__proto__和constructor的关系

    前不久写了有关原型链中prototype.__proto__和constructor的关系的理解,这篇文章说说在原型链继承中的prototype.__proto__和constructor的关系. 通 ...

  4. Qt Quick程序的发布

    要将程序发布出去,首先需要使用release方式编译程序,然后将生成的.exe可执行文件和需要的库文件发在一起打包进行发布. 要确定需要哪些动态库文件,可以直接双击.exe文件,提示缺少那个dll文件 ...

  5. Linux Notes

    Do what we want based on what others already did with additional abstraction and organization to ser ...

  6. Excel 2016 for Mac

    1. Excel for Mac 的 Developer tab下没有XML组,因此无法从xml导入或者导出到xml: 2. Excel for Mac 中没有Mark as Finnal的功能: 3 ...

  7. c# 设计模式 之:工厂模式之---工厂模式

    1.uml类图: 实现和依赖关系: 实现: SportFactory.JeepFactory.HatchbackFactory 实现 IFactory 接口 SportCar.JeepCar.Hatc ...

  8. python基础——操作系统简介

    不同应用领域的主流操作系统 l  桌面操作系统 l  服务器操作系统 l  嵌入式操作系统 l  移动设备操作系统 桌面操作系统 Windows系列 用户群体很大 MacOS 适合于开发人员 Linu ...

  9. Sql server字段排序,如果字段是字符型的数字

    SELECT id , rownum FROM test ))),) ASC 1.如果想要根据字符型的数字排序,不建议转换成数字类型在order by,因为数据存在字符时,可能转换失败. 2.使用RI ...

  10. CAShapeLayer的使用[1]

    CAShapeLayer的使用[1] 使用CoreAnimation绘制动画带来的系统开销非常的小,CoreAnimation通常都是使用GPU的. CAShapeLayer属于CoreAnimati ...