【CQ18阶梯赛第二场】题解
【A-H国的身份证号码I】
用N个for语句可以搞定,但是写起来不方便,所以搜索。
dfs(w,num,p)表示搜索完前w位,前面x组成的数位num,最后以为为p。
如果搜索到第N位,则表示num满足条件。
最后把所有满足条件的a[]排序后输出。
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<memory>
using namespace std;
long long a[],n,k,cnt;
void dfs(int w,long long num,int p)
{
if(w==n) {
a[++cnt]=num;return ;
}
for(int i=;i<=k;i++){
if(p*i<=k)
dfs(w+,num*+i,i);
}
}int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=k;i++){
dfs(,i,i);
}
sort(a+,a+cnt+);
for(int i=;i<=cnt;i++)
printf("%d\n",a[i]);
return ;
}
【B-偶像的条件】
三个班级,肯定是每个班级选的要接近才行,所以先排序,然后枚举最矮的,然后找第二,接着找第三。
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=;
int a[][maxn];
int ans=,t1,t2,t3,tmp;
void _do(int x,int y){//x最小,y第二
for(int i=;i<=a[x][];i++) {
t1=a[x][i];
int pos=lower_bound(a[y]+,a[y]++a[y][],t1)-a[y];
t2=a[y][pos];
pos=lower_bound(a[-x-y]+,a[-x-y]++a[-x-y][],t2)-a[-x-y];
t3=a[-x-y][pos];
if(t1!=&&t2!=&&t3!=) {
tmp=*(t3-t1);
if(tmp<ans) ans=tmp;
}
}
}
int main()
{
int n,m,q,i,j,L;
scanf("%d%d%d",&n,&m,&L);
a[][]=n;a[][]=m;a[][]=L;
for(i=;i<=n;i++) scanf("%d",&a[][i]);
for(i=;i<=m;i++) scanf("%d",&a[][i]);
for(i=;i<=L;i++) scanf("%d",&a[][i]);
sort(a[]+,a[]++n);
sort(a[]+,a[]++m);
sort(a[]+,a[]++L);
_do(,);
_do(,);
_do(,);
_do(,);
_do(,);
_do(,);
printf("%d\n",ans);
}
【C-数组去重】
从前往后,如果一个数不和前面的一样,则输出。
#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
int main()
{
int n,pre,t,num;
while(scanf("%d",&n)){
if(n==-) return ;
num=;
pre=-;
while(n--){
scanf("%d",&t);
if(t!=pre) {
if(num) printf(" ");
printf("%d",t);
num++;
}
pre=t;
}
printf("\n");
}
return ;
}
【D-分数调查】
并查集,我们先设所有人的成绩未知,如果两个人的相对成绩知道,则把二人分到同一个集合。
所以如果两个人在同一个集合,那么就可以他们的相对成绩。
相反,如果两个人不在同一个集合,那么他们的相对成绩是错误的。
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
#include<memory>
using namespace std;
const int maxn=;
int Laxt[maxn],Next[maxn],To[maxn],V[maxn],cnt=;
int fa[maxn],scr[maxn];//fa是分组,score代表相对分数。
void _add(int u,int v,int s){
Next[++cnt]=Laxt[u];
Laxt[u]=cnt;
To[cnt]=v;
V[cnt]=s;
}
void _dfs(int u){
for(int i=Laxt[u];i;i=Next[i]){
if(!fa[To[i]]){
fa[To[i]]=fa[u];
scr[To[i]]=scr[u]-V[i];
_dfs(To[i]);
}
}
}
int main()
{
int n,m,q,i,x,y,s;
scanf("%d%d%d",&n,&m,&q);
for(i=;i<=m;i++){
scanf("%d%d%d",&x,&y,&s);
_add(x,y,s);
_add(y,x,-s);
}
for(i=;i<=n;i++)
if(!fa[i]){
fa[i]=i;
_dfs(i);
}
for(i=;i<=q;i++){
scanf("%d%d",&x,&y);
if(fa[x]!=fa[y]) printf("-1\n");
else printf("%d\n",scr[x]-scr[y]);
}
return ;
}
【CQ18阶梯赛第二场】题解的更多相关文章
- CQ18阶梯赛第二场
H国的身份证号码I HihoCoder - 1558 只要单纯的判断一下前后的乘积就好了, 因为不是很想处理倍数的关系, 所以我这里是用 string去处理. 代码: #include<bits ...
- 【CQ18阶梯赛第一场】题解
[A-风格不统一如何写程序] 输入字符串,得到长度,对于每个字符:如果是大写,则改为:‘_’+小写:如果是‘_’则忽略‘_’,并且把后面的小写改为大写. #include<cstdio> ...
- Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)
Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...
- NOI.AC NOIP模拟赛 第二场 补记
NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...
- 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)
以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...
- 【CQ18阶梯赛第8场】题解
[A:HDU2032 杨辉三角]: 简单的递推,或者是基础的DP: 但是只有杨润东一个人1A,整体准确率只有8/37,具体原因不详. 经验:提交前一定要试一下比较特殊的数据或者最大的数据.其次,为了保 ...
- SCNU省选校赛第二场B题题解
今晚的校赛又告一段落啦,终于"开斋"了! AC了两题,还算是满意的,英语还是硬伤. 来看题目吧! B. Array time limit per test 2 seconds me ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- 2019牛客暑期多校第二场题解FH
F.Partition problem 传送门 题意:有2n个人,分两组,每组n个,要求sum(vij)最大值. 题解:n并不大我们可以枚举每个人是在1组还是2组爆搜. 代码: #include &l ...
随机推荐
- hdu4888 多校B 最大流以及最大流唯一判断+输出方案
题意,给一个矩阵,告诉你每行和.每列和,并且限制所填数不大于k,问矩阵是否唯一. 经典建图不说了,第一次遇到判断最大流唯一性的,学习了:用dfs来判断残网中是否还存在环,若存在,则表明绕这个环走一圈, ...
- codevs——1036 商务旅行
1036 商务旅行 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 某首都城市的商人要经常 ...
- 使用fastJson把对象转字符串首字母大小写问题的解决
例如:文档中要求传输的字段为 但是转成json字符串后却变成了: 解决方式: 在实体类的get方法上添加@JSONField(name = " ") 注解后问题解决: 输出:
- BS版代码生成器 简介
自用的代码生成器 核心:JdbcTemplate+freemarker 目前支持sqlserver和mysql 演示: 1.首界面 2.读数据库中的所有表 3.打开某数据库下的所有表.视图.存储过程 ...
- 基于R-Tree的最近邻查询
转自基于R-Tree的最近邻查询 BAB(Branch.and.Band)算法是由Nick Roussopoulousnl等人于1995年提出的,是最早的基于R.树的静态最近邻查询算法.该算法使用MI ...
- JAVA获取前一个月的第一天和最后一天
package com.date; import java.text.SimpleDateFormat; import java.util.Calendar; /** * 默认显示前一个月的第一天和最 ...
- 【Windows7】win7启动 报错 AutoIt错误,不能打开脚本文件
解决方法: 1.开始-->运行-->regedit 2.按照下图 3.
- SSH login without password
SSH login without password Your aim You want to use Linux and OpenSSH to automize your tasks. Theref ...
- 基于源码学习-fighting
今天逛着逛着,看到个培训网站,点进去和客服人员聊了一下.接着,看了看他们的培训课程,想了解一下 嵌入式开发的. (人就是要放空自己,把自己当做什么都不会,当着个婴儿[小学生]一般认真,要学什么知识就是 ...
- [CSS3] Identify Interactive HTML Elements with CSS Link Pseudo Classes
The interactive pseudo-classes for links (and buttons) allow us to make sure the user knows what ele ...