计蒜客普及组模拟赛

今天没事闲的看到计蒜客有个普及组模拟赛,就当练了练手去打了,成绩低的可怜。。。400分崩成280分AK梦想化作泡影

第一题 同学的爱好 链接:https://nanti.jisuanke.com/t/17291

小学应用题难度?大概画个图就能懂,把每个部分都标上号,算出a,b,c,d,e,f的部分,进行运算就行了。

不多解释了,直接上代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int a,b,c,d,e,f,n;
int main(){
    cin>>n;
    cin>>a>>b>>c>>d>>e>>f;
    int x=0,y=0;
    y=d+e+f;
    x=a+b+c-n;
    int ans=0;
    ans=y-x;
    cout<<ans;
    return 0;
}

第二题 选秀 链接:https://nanti.jisuanke.com/t/17292

直接从0到1001进行模拟,但是注意魅力值可以是实数,所以有小数可以得到票的情况,开两个数组进行比较(感觉有点多余啊)。最后扫一遍比较最多的票数。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int a[1005],b[1005];
int n,ans,x;
char q[5];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%s%d",q,&x);
        if(q[0]==‘=‘){a[x]++;b[x]++;}
        if(q[0]==‘>‘&&q[1]!=‘=‘){
            for(int k=x+1;k<=1001;k++){a[k]++;b[k-1]++;}
        }
        if(q[0]==‘>‘&&q[1]==‘=‘){
            for(int k=x;k<=1001;k++){a[k]++;b[k]++;}
        }
        if(q[0]==‘<‘&&q[1]!=‘=‘){
            for(int k=x-1;k>=0;k--){a[k]++;b[k]++;}
        }
        if(q[0]==‘<‘&&q[1]==‘=‘){
            for(int k=x;k>=0;k--){a[k]++;b[k]++;}
        }
    }
    for(int i=0;i<=1001;i++){
        ans=max(ans,max(a[i],b[i]));
    }
    cout<<ans;
    return 0;
}

第三题 摘气球 链接:https://nanti.jisuanke.com/t/17293l

排序之后模拟,这题本来a掉的,死在排序气球高度以n长度去排序的。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
struct child{
    int x,y;
}c[100005];
int n,m;
int a[100005],b[100005];
bool cmp(child a,child b){
    return a.x<b.x;
}
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&c[i].x);
        c[i].y=i;
    }
    int x;
    int k=1;
    for(int i=1;i<=m;i++){
        scanf("%d",&b[i]);
    }
    sort(c+1,c+n+1,cmp);
    sort(b+1,b+m+1);
    for(int i=1;i<=m;i++){
        for(k;k<=n;){
            if(c[k].x>=b[i]){
                a[c[k].y]++;
                break;
                }
            else k++;
            }
        }
    for(int i=1;i<=n;i++){
        cout<<a[i]<<endl;
        }
    return 0;
}

第四题 蒜头君当大厨 链接 :https://nanti.jisuanke.com/t/17294

差分约束(为什么普及组模拟赛要有差分约束啊,话说我前几天才刚看的)

SPFA跑一遍最长路,死于边数开太小re三个点

#include<bits/stdc++.h>
#define MAXN 100002
using namespace std;
int read()
{
    int x=0,y=1;char c;c=getchar();
    while(c<‘0‘||c>‘9‘){if(c==‘-‘)y=-1;c=getchar();}
    while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘;c=getchar();}
    return x*y;
}
struct Edge{
    int other,pre,val;
}a[MAXN];
int N,M,cnt,last[MAXN],dis[MAXN],in[MAXN],ans;
bool vis[MAXN];
void connect(int x,int y,int z)
{
    a[++cnt]=(Edge){y,last[x],z};
    last[x]=cnt;
}
bool SPFA()
{
    queue <int> q;
    memset(dis,0xef,sizeof dis);
    vis[0]=1,dis[0]=0,in[0]++;
    q.push(0);
    while(!q.empty())
    {
        int x=q.front();
        q.pop();vis[x]=false;
        for(int i=last[x];i;i=a[i].pre)
        {
            int to=a[i].other;
            if(dis[to]<dis[x]+a[i].val)
            {
                dis[to]=dis[x]+a[i].val;
                if(!vis[to])
                {
                    vis[to]=true;
                    in[to]++;
                    q.push(to);
                    if(in[to]>N)return false;
                }
            }
        }
    }
    return true;
}
int main()
{
    N=read(),M=read();
    for(int i=1;i<=M;i++)
    {
        int op,x,y,z;
        op=read();
        x=read(),y=read();
        if(op<3)
        {
            z=read();
            if(op==2)swap(x,y);
            connect(x,y,z);
        }
        else if(op==3)
            connect(0,x,y);
        else if(op==4)
            connect(x,0,-y);
    }
    for(int i=1;i<=N;++i)
        connect(0,i,0);
    if(SPFA()){
        for(int i=1;i<=N;i++)ans=max(ans,dis[i]);
        cout<<ans<<endl;
    }
    else cout<<"I can‘t"<<endl;
    return 0;
}
时间: 2024-09-30 13:55:44

计蒜客普及组模拟赛的相关文章

ZROI 普及组模拟赛02总结

ZROI 普及组模拟赛02总结 先放[网址][http://zhengruioi.com/contest/96] 可能是有一段时间没有打这种正式的比赛了,今天打的很奇怪... T1 模拟水题 既然是普及组模拟赛T1还是比较良心的 20分钟就过掉了 T2 <论不仔细观察题目导致的惨案> 没有发现莫尔斯电码非常的全 所以应该枚举哪些不行,而不是枚举26个字母 但是根据计算\(2*26*1e6\)也能跑过去啊 不知道为什么就是超时了... 最可笑的是还卡了20min的常数,还自己造了几组1e6的数据

计蒜客 2018南京网络赛 I Skr ( 回文树 )

题目链接 题意 : 给出一个由数字组成的字符串.然后要你找出其所有本质不同的回文子串.然后将这些回文子串转化为整数后相加.问你最后的结果是多少.答案模 1e9+7 分析 : 应该可以算是回文树挺裸的题目吧 可惜网络赛的时候不会啊.看着马拉车想半天.卒... 对于每一个节点.记录其转化为整数之后的值 然后在回文串插入字符的时候 不断维护这个信息就行了 其实很好理解.看一下代码就懂了 ( 如果你学过回文树的话... ) 就是多加了变量 val .维护语句 #include<bits/stdc++.h

三鑫普及组模拟赛

韬韬抢苹果: 题目: 又到了收获的季节,树上结了许多韬韬,错了,是许多苹果,有很多个小韬韬都来摘苹果.每个韬韬都想要最大的苹果,所以发生了争执,为了解决他们的矛盾,出题人定了一项特殊的规则,按体重的大小来定顺序,每一轮都是先由胖的先摘(照顾胖子),每个韬韬都是很聪明的,不会错过眼前最大的苹果.现在问题来了,一共有n个苹果,m个韬韬,要你按原顺序输出每个韬韬可以抢到的苹果的总大小. 思路:大水题!!!直接模拟. code: 1 #include<cstdio> 2 #include<alg

计蒜之道 測试赛

题目链接:http://www.jisuanke.com/minicourse/63 绿色能源 蒜头又要改变世界了. 这次他将为一些恶劣地形环境设计太阳能取电方案. 在最新的设计中,太阳能板被设置在一些太阳能塔上,与塔同高. 这一次,将有 n 座太阳能塔被设置.这些塔已经被提前制作完毕.当中 i 号塔高为 hi,如今project师须要确定将塔安置在哪些位置.以获得最大的总能量. 太阳能塔被安置的地形环境由 m 个点的多边形来表示.多边形的每一个点将会给出相应的坐标(xi, yi).xi < x

计蒜客 无脑博士和他的试管们

无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直到被灌试管装满或原试管空了.当然每一次灌注都是完全的.由于无脑博士天天这么折腾,早已熟练,溶液在倒的过程中不会有丢失. 写一个程序去帮助无脑博士找出当A是个是空的时候,C试管中硫酸铜溶液所剩量的所有可能性. 输入包括一行,为空格分隔开的三个数,分别为整数A,B和C. 输出包括一行,升序地列出当A试管是空的时

简单斐波那契——计蒜客(4)

题目来自“计蒜客”第4题. 解算法题之前,务必先写出与之对应的数学表达式,用于描述算法. 数学描述如图: 根据“数学描述“,写出代码如下: #include <stdio.h> int main() { int N =0 ; scanf("%d", &N); int i, fn1 = 1, fn2 = 0, fn; switch(N) { case 0: printf("0"); break; case 1: printf("1&quo

计蒜客 作弊揭发者(string的应用)

鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库确认车辆,进行扣费. 斗智斗勇的好戏一般从此处展开… 一些车主通过在停车时遮挡车牌上的一个或多个数字.字母序列,来阻碍识别系统的识别工作,以此逃避停车费用的缴纳. 车主这简直是用轻轻的一挡搞出来一个世界难题有木有?!管理是一方面,技术解决才是王道啊. 这么难的项目不得不交给计蒜客实验室了.D 神负责

计蒜客 删除字母&#39;c&#39;

删除字母'c' 右侧的程序实现的功能是从字符串s中删除所有的小写字母c,请改正程序错误的地方. 注意:main函数不可以改动,程序结构也不能修改. 很简单的哦,加油吧- 样例输入 abccabcn 样例输出 ababn 1 #include <stdio.h> 2 3 #define N 1024 4 5 void del(char *s) 6 { 7 int i, j; 8 for(i = j = 0; s[i] != '\0'; i++) 9 { 10 if(s[i] != 'c') 11

2018 蓝桥杯省赛 B 组模拟赛(一)

2018 蓝桥杯省赛 B 组模拟赛(一) A.今天蒜头君带着花椰妹和朋友们一起聚会,当朋友们问起年龄的时候,蒜头君打了一个哑谜(毕竟年龄是女孩子的隐私)说:“我的年龄是花椰妹年龄个位数和十位数之和的二倍”. 花椰妹看大家一脸懵逼,就知道大家也不知道蒜头君的年龄,便连忙补充道:“我的年龄是蒜头君个位数和十位数之和的三倍”. 请你计算:蒜头君和花椰妹年龄一共有多少种可能情况? 提醒:两位的年龄都是在 [10,100)[10,100) 这个区间内. 题解: 暴力枚举 answer: 1 代码如下: #