浙江省赛真题2018

只做了签到题,菜就是菜,找啥理由;

但失败了总要得到一些教训;

A - Peak

ZOJ - 4024

题意:就是给你一个序列让你判断是不是先增加后减少的,签到;

#include<bits/stdc++.h>
using namespace std;
#define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
#define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
#define pb push_back
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
ll  a[100005];
int main(){
    int t,n;
    scanf("%d",&t);
    while(t--){
    scanf("%d",&n);
    int flag=1;
    int max=-1,maxi;
    for(int i=1;i<=n;i++){
    scanf("%lld",&a[i]);
    if(a[i]>max){
    max=a[i];
    maxi=i;
    }
    }
    if(maxi==n||maxi==1)flag=0;
    for(int i=1;i<maxi;i++){
    if(a[i]>=a[i+1]){
    flag=0;
    break;
    }
    }
    for(int i=maxi+1;i<=n;i++){
    if(a[i-1]<=a[i]){
    flag=0;
    break;
    }
    }
    if(flag)printf("Yes\n");
    else printf("No\n");
    }

    return 0;
}

B - King of Karaoke

ZOJ - 4025

题意:就是两个数列做个差,取个众数;我用map做的取众数;

#include<bits/stdc++.h>
using namespace std;
#define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
#define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
#define pb push_back
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
const int N=1e5+5;
int d[N],s[N],ans[N];
int main(){
    int t,n;
    scanf("%d",&t);
    while(t--){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",&d[i]);
    map<int,int>mp;
    for(int i=1;i<=n;i++){
    scanf("%d",&s[i]);
    ans[i]=s[i]-d[i];
    mp[ans[i]]++;
    }
    map<int,int>::iterator it;
    int cnt=-1;
    for(it=mp.begin();it!=mp.end();it++){
    if(it->se>cnt)cnt=it->se;
    }
    printf("%d\n",cnt);
    }

    return 0;
}

J - CONTINUE...?

ZOJ - 4033

题意:就是给你让你构造一个数列,感觉瞎出的题目,怎么构造都可以,这个最开始没有想到,

解法:先判断sum%2是否为1,然后从后往前分配即可;

#include<bits/stdc++.h>
using namespace std;
#define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
#define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
#define pb push_back
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
int ans[500000];
int main(){
    int n,t;
    scanf("%d",&t);
    while(t--){
    scanf("%d",&n);
    string s;
    cin>>s;
    ll sum=n*1ll*(n+1)/2;
    if(sum%2)printf("-1\n");
    else {
    sum/=2;
    for(int i=n-1;i>=0;i--){
    if(sum>i)sum-=i+1,ans[i]=(s[i]==‘1‘)?4:2;
    else ans[i]=(s[i]==‘1‘)?3:1;
    }
    for(int i=0;i<n;i++)printf("%d",ans[i]);
    printf("\n");
    }
    }
    return 0;
}

L - Doki Doki Literature Club

ZOJ - 4035

题意:就是排序,我是傻逼,不看数据范围,相乘会爆int,然后就可以过了;

#include<bits/stdc++.h>
using namespace std;
#define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
#define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
#define pb push_back
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
struct word{string s;ll w;}a[500];
bool cmp(word a,word b){if(a.w!=b.w)return a.w>b.w;else return a.s<b.s;}
int main(){
    int t,n,m;
    scanf("%d",&t);
    while(t--){
    cin>>n>>m;
    for(int i=1;i<=n;i++)cin>>a[i].s>>a[i].w;
    sort(a+1,a+1+n,cmp);
    ll ans=0;
    for(int i=1;i<=m;i++)ans+=(m-i+1)*a[i].w*1ll;
    printf("%lld ",ans);
    for(int i=1;i<=m;i++){
    cout<<a[i].s;
    if(i==m)printf("\n");
    else printf(" ");
    }
    }

    return 0;    

}

M - Lucky 7

ZOJ - 4036

签到;

#include<bits/stdc++.h>
using namespace std;
#define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
#define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
#define pb push_back
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
int a[1000];
int main(){
    int t,n,b;
    scanf("%d",&t);
    while(t--){
    scanf("%d%d",&n,&b);
    int flag=0;
    for(int i=1;i<=n;i++){
    scanf("%d",&a[i]);
    if((a[i]+b)%7==0)flag=1;
    }
    if(flag)printf("Yes\n");
    else printf("No\n");
    }

    return 0;
}

未完待续;

原文地址:https://www.cnblogs.com/littlerita/p/12309141.html

时间: 2024-07-31 06:41:06

浙江省赛真题2018的相关文章

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

2017年ICPC中国大陆区域赛真题(下)

2017年ICPC中国大陆区域赛真题(下) A - Lovers #include <bits/stdc++.h> using namespace std; const int maxn=2e5+10; int n,k,a[maxn],b[maxn],ans; int main() { int _; scanf("%d", &_); while (_--) { scanf("%d%d", &n, &k); for (int i =

2018湖南省赛B题“2018”

题面懒得敲了,反正看这篇博客的肯定知道题面. 比赛时想按约数的一些性质分情况讨论出公式然后在合并,结果单考虑矩阵里出现2018和1009(与2互质,1009出现次数等于2)出现的情况就写了一长串公式,还推了很久.在考虑1出现的综合情况就直接GG了.. 然后想到打表,奈何队友卡H题很久,最终因时间原因放弃来做B的时候已经冷静不下来了,没能打表成功,于是今天决定补一手打表. 我首先敲了dfs暴搜二维数组的,然后类比的(找了半天BUG)终于成功打出来了..还是要好好练练打表,比赛卡这样的题真难受. 1

ZOJ 3879 Capture the Flag 15年浙江省赛K题

每年省赛必有的一道模拟题,描述都是非常的长,题目都是蛮好写的... sigh... 比赛的时候没有写出这道题目 :( 题意:首先输入4个数,n,q,p,c代表有n个队伍,q个服务器,每支队伍的初始分数p, 还有c次操作对于每次操作,首先输入一个k,代表k次攻击每次攻击有三个数,a,b,c, 代表a通过c服务器成功的攻击了b对于每次成功的攻击,b会失去n-1分, 这n-1分会平分给通过同一服务器攻击b的几支队伍然后是q行,每行n个数, 分别代表1~n是否成功维护了,1为成功,0为不成功不成功的队伍

PAT 天梯赛真题集(L2、L3)

题意:求点权最大的最短路,输出最短路径条数.点权值.以及最大点权的路径. 做法:Dijstra求最短路,两步:1.找最小点:2.更新路径.这题的1不变,变的是2.在更新新路径的时候,如果找到更短的路径,那么更新点权.方案数:如果路径和最短路径一样,那么比较谁的点权大,更新为点权大的结果. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38

算法笔记_111:第五届蓝桥杯软件类省赛真题(Java本科A组)试题解答

 目录 1 猜年龄 2 李白打酒 3 神奇算式 4 写日志 5 锦标赛 6 六角填数 7 绳圈 8 兰顿蚂蚁 9 斐波那契 10 波动数列   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 猜年龄 标题:猜年龄 小明带两个妹妹参加元宵灯会.别人问她们多大了,她们调皮地说:"我们俩的年龄之积是年龄之和的6倍".小明又补充说:"她们可不是双胞胎,年龄差肯定也不超过8岁啊." 请你写出:小明的较小的妹妹的年龄. 注意: 只写一个人的年龄数

2015年第六届蓝桥杯省赛真题(自己已懂的题目)

1.问题描述:奖券数目 有些人很迷信数字,比如带"4"的数字,认为和"死"谐音,就觉得不吉利. 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求.某抽奖活动的奖券号码是5位数(10000-99999), 要求其中不要出现带"4"的号码,主办单位请你计算一下,如果任何两张奖券不重号,最多可发出奖券多少张. 请提交该数字(一个整数),不要写任何多余的内容或说明性文字. 思路:5重循环,第一重为1-9,其余为0-9(这样就可以遍历10000到9999

2016河南省第九届ACM程序设计竞赛【正式赛真题】

A题:表达式求值 时间限制:1000 ms  |  内存限制:65535 KB 描述 假设表达式定义为:1. 一个十进制的正整数 X 是一个表达式.2. 如果 X 和 Y 是 表达式,则 X+Y, X*Y 也是表达式; *优先级高于+.3. 如果 X 和 Y 是 表达式,则 函数 Smax(X,Y)也是表达式,其值为:先分别求出 X ,Y值的各位数字之和,再从中选最大数.4.如果 X 是 表达式,则 (X)也是表达式.例如:表达式 12*(2+3)+Smax(333,220+280) 的值为 6

2019暑假——区域赛真题讲解

第一场[cx]2019.7.19 第一题 (2019 ICPC 徐州 H.Rikka with A Long Colour Palette) Q:n条线段(每条线段给出左右边界位置[ l, r ]),k种颜色.你要为每条线段染一种颜色,问至少能被k种颜色所覆盖的区间的最大总长度.∑n <= 2e6,1 <= k <= 2e5,0 <= l < r <= 1e9. A: 第二题 (2018ICPC南京 M - Mediocre String Problem ) Q:给一个