2021年度训练联盟热身训练赛第一场

2021年度训练联盟热身训练赛第一场

文章目录

  • D.Some Sum
    • 题意:
    • 题解:
    • 代码:
  • F.Pulling Their Weight
    • 题意:
    • 题解:
    • 代码:
  • H On Average They're Purple
    • 题意:
    • 题解:
    • 代码:
  • J This Ain't Your Grandpa's Checkerboard
    • 题意:
    • 题解:
    • 代码:

题号题目通过率知识点
AWeird Flecks, But OK667/1259最小圆覆盖
BCode Names450/1433
CNew Maths348/856
DSome Sum1522/3277
EEarly Orders688/2891
FPulling Their Weight1124/2532
G (未解决)Birthday Paradox162/386
HOn Average They’re Purple948/2167
I (未解决)Full Depth Morning Show212/341
JThis Ain’t Your Grandpa’s Checkerboard1352/1867
K(未解决)Solar Energy102/812

D.Some Sum

题意:

你的朋友偷偷地选了N个介于1和100之间的连续的整数,并希望您猜测它们的和是否为偶数或奇数。
如果总和必须是偶数,则输出 even ;
如果总和必须是奇数,则输出 odd ;
如果和可以是偶数也可以是奇数,输出 Either 。

题解:

枚举出规律
当N=1时,可能为偶数也可能为奇数
当N=2时,两个连续的数的和,那么一定是奇数+偶数,奇数+偶数一定等于奇数
当N=3时,可能为偶数也可能为奇数
当N=4时,一定是偶数
当N=5时,可能为偶数也可能为奇数
当N=6时,一定是奇数
当N=7时,可能为偶数也可能为奇数
当N=8时,一定是奇数
当N=9时,可能为偶数也可能为奇数
当N=10时,一定是偶数
总结:
N是奇数,什么都有可能
N是偶数,如果n/2还是偶数,结果就是偶数
N是偶数,如果n/2还是奇数,结果就是奇数

代码:

#include <iostream>
using namespace std;
int main()
{int n;cin>>n;if(n%2!=0)  //如果输入的n是奇数,那么得到的和可能为奇数也可能为偶数cout<<"Either";else      //如果输入的n是偶数{if(n/2%2==0)    //如果 偶数/2 还是偶数,那么结果一定为偶数cout<<"Even";else             //如果 偶数/2 为奇数,那么结果一定为奇数cout<<"Odd";}return 0;}

F.Pulling Their Weight

题意:

n个数,让你选一个t,然后比t小的放一侧,比t大的放一侧,要求两侧一样大,问t最小是多少?
(如果和t一样大,奇数个就丢掉一个,剩下偶数个平分,偶数个就直接平分)

题解:

预处理前缀和
我想的二分,二分mid,然后用lower_bound(a+1,a+1+n,mid)来找第一个大于等于mid的数的位置,然后判断前后的和是否一样,和t一样大的数我们不需要考虑,因为他要么被抛弃,要么平分,没有影响
详细看代码吧

代码:

/*
7
3
6
4
4
4
1
2
*/#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}
const int maxn=1e5+9;
int a[maxn];
int ch[2*maxn];
int n;
int sum[maxn];
int check(int mid)
{int w=lower_bound(a+1,a+1+n,mid)-a;int pos1;pos1=w-1;int pos2=w+ch[mid]-1;if((sum[pos1])>=(sum[n]-sum[pos2]))return 1;return 0;
}
int main()
{cin>>n;int tot=0;for(int i=1;i<=n;i++){cin>>a[i];ch[a[i]]++;}bool f=1;for(int i=2;i<=n;i++){if(a[1]!=a[i]){f=0;} }if(f==1){cout<<a[1]<<endl;return 0;}sort(a+1,a+n+1);for(int i=1;i<=n;i++)sum[i]=sum[i-1]+a[i];int l=0,r=2e4+9;while(l<r){int mid=(l+r)>>1;if(check(mid))r=mid;else l=mid+1;}cout<<l;
}

H On Average They’re Purple

题意:

我们首先规定,如果两个边有公共点,且两边是不一样的颜色,如果从一个边走到另一个边,我们称之为“颜色变换”
给你一个图,n个点,m条边,A要从1走到n点,B要给m个边染色,B想要A尽可能走颜色变换,A会尽可能少走“颜色变化”,输出A最少走多少?
(一共就两个颜色)

题解:

因为一共就两个颜色,所以B想要A走更多的颜色变换就是两个颜色交替走,A要走最少其实就是走最短路,B给最短路染色,所以答案就是1到n的最短路减1
直接套最短路模板

代码:

#include<bits/stdc++.h>
using namespace std;
#define maxn 300005
#define maxm 500005
#define INF  1234567890
inline int read()
{int x=0,k=1; char c=getchar();while(c<'0'||c>'9'){if(c=='-')k=-1;c=getchar();}while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+(c^48),c=getchar();return x*k;
}
struct Edge
{int u,v,w,next;
}e[maxm];
int head[maxn],cnt,n,m,s,vis[maxn],dis[maxn],pre[maxn];
struct node
{int w,now;inline bool operator <(const node &x)const//重载运算符把最小的元素放在堆顶(大根堆){return w>x.w;//这里注意符号要为'>'}
};
priority_queue<node>q;
//优先队列,其实这里一般使用一个pair,但为了方便理解所以用的结构体
inline void add(int u,int v,int w)
{e[++cnt].u=u;//这句话对于此题不需要,但在缩点之类的问题还是有用的e[cnt].v=v;e[cnt].w=w;e[cnt].next=head[u];//存储该点的下一条边head[u]=cnt;//更新目前该点的最后一条边(就是这一条边)
}
//链式前向星加边void print(int x)
{if(pre[x]==0)return ;print(pre[x]);cout<<"-> "<<x;
}
void dijkstra()
{for(int i=1;i<=n;i++){dis[i]=INF;}dis[s]=0;//赋初值q.push((node){0,s});while(!q.empty())//堆为空即为所有点都更新{node x=q.top();q.pop();int u=x.now;//记录堆顶(堆内最小的边)并将其弹出if(vis[u]) continue; //没有遍历过才需要遍历vis[u]=1;for(int i=head[u];i;i=e[i].next)//搜索堆顶所有连边{int v=e[i].v;if(dis[v]>dis[u]+e[i].w){dis[v]=dis[u]+e[i].w;pre[v]=u;//松弛操作q.push((node){dis[v],v});//把新遍历到的点加入堆中}}}
}
int main()
{n=read(),m=read(),s=1;for(int i=1,x,y,z;i<=m;i++){x=read(),y=read(),z=1;add(x,y,z);add(y,x,z);}dijkstra();printf("%d ",dis[n]-1);//       print(i);//      cout<<endl;return 0;
}

J This Ain’t Your Grandpa’s Checkerboard

题意:

一个合法的图满足以下要求:
每行黑块一样多
每列黑块一样多
没有连续的三个黑块

题解:

模拟,照着题意模拟即可

代码:

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
inline int read(){int s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);return s*w;
}//
const int maxn=40;
char a[maxn][maxn];
int main()
{int n;cin>>n;char ch=getchar();for(int i=1;i<=n;i++){	for(int j=1;j<=n;j++){cin>>a[i][j];}ch=getchar();}bool f=1;int sum=0;int sum1=0;for(int i=1;i<=n;i++){sum1=0;for(int j=1;j<=n;j++){if(a[i][j]==a[i][j-1]&&a[i][j]==a[i][j-2]&&j>=3){f=0;break;}if(i==1){if(a[i][j]=='W')sum++;}else {if(a[i][j]=='W')sum1++;}}if(sum1!=sum&&i!=1){f=0;break;}}if(f==0){cout<<0<<endl;return 0;} sum=0;for(int i=1;i<=n;i++){sum1=0;for(int j=1;j<=n;j++){if(a[j][i]==a[j-1][i]&&a[j][i]==a[j-2][i]&&j>=3){f=0;break;}if(i==1){if(a[j][i]=='W')sum++;}else {if(a[j][i]=='W')sum1++;}}if(sum1!=sum&&i!=1){f=0;break;}}if(f==0){cout<<0<<endl;return 0;} cout<<1<<endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10.17模拟

小题大作&#xff0c;必死无疑 前言 220 6010060 很久没有在CSDN上写总结了 因为这次真的犯了巨大的策略性错误&#xff01; 一句话说就是&#xff1a;要写有得分与时间相比有性价比的东西 考场 先看题 T2无疑是水题 T134相比感觉T3更可作 T1一看直接当成了神仙网络流题 受到…

P5518-[MtOI2019]幽灵乐团【莫比乌斯反演,欧拉反演】

正题 题目链接:https://www.luogu.com.cn/problem/P5518 题目大意 TTT次给出A,B,CA,B,CA,B,C求以下三个式子 ∏i1A∏j1B∏k1Clcm(i,j)gcd(i,k)\prod_{i1}^A\prod_{j1}^B\prod_{k1}^{C}\frac{lcm(i,j)}{gcd(i,k)}i1∏A​j1∏B​k1∏C​gcd(i,k)lcm(i,j)​ ∏i1A∏j1B∏k1C(lcm(…

【2020牛客NOIP赛前集训营-提高组(第二场)】题解(GCD,包含,前缀,移动)

文章目录T1&#xff1a;GCDtitlesolutioncodeT2&#xff1a;包含titlesolutioncode(正解code补充在上面了)T3&#xff1a;前缀titlesolutioncodeT4&#xff1a;移动titlesolutioncodeT1&#xff1a;GCD title solution 非常水&#xff0c;看一眼就知道了 首先我们知道每一个…

.NET Core实战项目之CMS 第十五章 各层联动工作实现增删改查业务

连着两天更新叙述性的文章大家可别以为我转行了&#xff01;哈哈&#xff01;今天就继续讲讲我们的.NET Core实战项目之CMS系统的教程吧&#xff01;这个系列教程拖得太久了&#xff0c;所以今天我就以菜单部分的增删改查为例来讲述下我的项目分层之间的协同工作吧&#xff01;…

Early Orders

题意&#xff1a; 给你一个整数列表 x1&#xff0c;x2&#xff0c;&#xff0c;… &#xff0c;xn 和一个数字 k&#xff0c;它保证从1到 k 的每个 i 至少出现在列表中一次。 现在求一个字典序最小的子序列&#xff0c;子序列有1到k组成 题解&#xff1a; 单调栈求解 我们先…

NOIP2020洛谷P7115:移球游戏(分治)

解析 先考虑n2的情况 可以利用一个空队在不超过5m的操作次数下把两个满队还原 如何推广&#xff1f; 考虑分治 把[l,mid]的球看成同色&#xff0c;[mid1,r]的球看成同色 在左右两两匹配柱子进行n2的还原操作 最后在递归处理 操作次数&#xff1a;5mnlogn 代码 #include<b…

[2020-11-23 contest]图(dfs剪枝),劫富济贫(字典树),小A的树(树形DP),游戏(贪心/斜率优化)

文章目录T1&#xff1a;图solutioncodeT2&#xff1a;劫富济贫solutioncodeT3&#xff1a;小A的树solutioncodeT4&#xff1a;游戏solutioncodeT1&#xff1a;图 【问题描述】 给你一个n个点&#xff0c;m条边的无向图&#xff0c;每个点有一个非负的权值ci&#xff0c;现在你…

P7519-[省选联考 2021 A/B 卷]滚榜【状压dp】

正题 题目链接:https://www.luogu.com.cn/problem/P7519 题目大意 nnn个队伍&#xff0c;队伍之间按照得分从小到大排名&#xff0c;得分相同的按照编号从小到大排。开始时每个队伍有个初始得分aia_iai​&#xff0c;和一个额外分bib_ibi​&#xff0c;主持人会按照bib_ibi​不…

4383 [八省联考 2018] 林克卡特树(WQS 二分+DP)

P4383 [八省联考 2018] 林克卡特树 给定一颗 \(n\) 个点的树&#xff0c;每条边有边权 \(v(|v|\le 10^6)\)&#xff0c;要求删去其中任意 \(k\) 条边&#xff0c;使得剩余联通块的直径之和最大。求出这个最大值。 \(0\le k<n\le 3\times 10^5,10s,1GB\)。 问题是怎么求直径&…

P1742 最小圆覆盖

P1742 最小圆覆盖 题意&#xff1a; 给出N个点&#xff0c;让你画一个最小的包含所有点的圆。 题解&#xff1a; 先说结论&#xff1a; 最优解的圆一定是在以某两个点连线为直径的圆 或者 某三个点组成的三角形的外接圆 初始化将某个圆心定为第一个点&#xff0c;R0 枚举第…

Java实现非对称加密【详解】

Java实现非对称加密 1. 简介2. 非对称加密算法--DH&#xff08;密钥交换&#xff09;3. 非对称加密算法--RSA非对称加密算法--EIGamal5. 总结6 案例6.1 案例16.2 案例26.3 案例3 1. 简介 公开密钥密码学&#xff08;英语&#xff1a;Public-key cryptography&#xff09;也称非…

轻量级.Net Core服务注册工具CodeDi发布啦

为什么做这么一个工具因为我们的系统往往时面向接口编程的,所以在开发Asp .net core项目的时候,一定会有大量大接口及其对应的实现要在ConfigureService注册到ServiceCollection中,传统的做法是加了一个服务,我们就要注册一次(service.AddService()),又比如,当一个接口有多个实…

2020 CSP-S 游记

迟到的游记总述T1&#xff1a;儒略日T2&#xff1a;动物园T3&#xff1a;函数调用T4&#xff1a;贪吃蛇总结总述 可能是有了去年第一次的狂炸经历&#xff0c;很明显的就是在考试策略上的提升 头不铁了&#xff0c;手不残了&#xff0c;心态稳了&#xff0c;分也多了 T1&…

NOIP2018洛谷P5021:修建赛道

没有证明的贪心就是乱搞 解析 把标签写在题面上的一道题… 显然要二分答案然后看能不能分出来m个 关键策略是每个结点内部尽可能的多匹配的前提下&#xff0c;给父亲传一个最大的 这不纪念品分组&#xff1f; 然后我就无脑的敲了个双指针的贪心上去 然后就WA掉了qwq &#xf…

Weird Flecks, But OK

Weird Flecks, But OK 题意&#xff1a; 给出三维坐标中的 n 个点&#xff0c;求一个圆柱的最小直径&#xff0c;该圆柱垂直于坐标平面且能覆盖住所有点 题解&#xff1a; 本人最不擅长计算几何&#xff0c;比赛时没做出来。。。 其实就是将n个点投影到三个坐标平面&#x…

P7516-[省选联考2021A/B卷]图函数【bfs】

正题 题目链接:https://www.luogu.com.cn/problem/P7516 题目大意 懒了&#xff0c;直接抄题意了 对于一张 nnn 个点 mmm 条边的有向图 GGG&#xff08;顶点从 1∼n1 \sim n1∼n 编号&#xff09;&#xff0c;定义函数 f(u,G)f(u, G)f(u,G)&#xff1a; 初始化返回值 cnt0cn…

NOIP2022 游记

开个坑&#xff0c;希望能填上

【.NET Core项目实战-统一认证平台】第十三章 授权篇-如何强制有效令牌过期

上一篇我介绍了JWT的生成验证及流程内容&#xff0c;相信大家也对JWT非常熟悉了&#xff0c;今天将从一个小众的需求出发&#xff0c;介绍如何强制令牌过期的思路和实现过程。.netcore项目实战交流群&#xff08;637326624&#xff09;&#xff0c;有兴趣的朋友可以在群里交流讨…

[2020-11-24 contest]糖果机器(二维偏序),手套(状压dp),甲虫(区间dp),选举(线段树 最大子段和)

文章目录T1&#xff1a;糖果机器solutioncodeT2&#xff1a;手套solutioncodeT3&#xff1a;甲虫solutioncodeT4&#xff1a;选举solutioncodeT1&#xff1a;糖果机器 solution 考虑从第iii个糖果出发能到达第jjj个&#xff0c;则有Tj−Ti≥∣Sj−Si∣T_j-T_i≥|S_j-S_i|Tj​…

模板:树上启发式合并(dsu on tree)

文章目录解析step1&#xff1a;树剖step2&#xff1a;求出轻儿子的答案&#xff08;不继承&#xff09;step3&#xff1a;求出重儿子的答案&#xff08;继承&#xff09;step4&#xff1a;加入自己的答案、合并轻儿子的答案并记录答案step5&#xff1a;清空复杂度分析代码所谓树…