2019省赛训练组队赛3.26周二---FJUT 2016
A.Minimum’s Revenge
Mr. Frog is wondering about the total weight of the minimum spanning tree. Can you help him?
InputThe first line contains only one integer T (T≤100T≤100), which indicates the number of test cases.
For each test case, the first line contains only one integer n (2≤n≤1092≤n≤109), indicating the number of vertices.
OutputFor each test case, output one line "Case #x:y",where x is the case number (starting from 1) and y is the total weight of the minimum spanning tree.
Sample Input
2
2
3
Sample Output
Case #1: 2
Case #2: 5
代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
int T,tot=;
cin>>T;
while(T--)
{
ll n;
scanf("%lld",&n);
ll ans=(n+)*n/;
ans--;
printf("Case #%d: %lld\n",++tot,ans);
} return ;
}
C.Mr. Frog’s Problem
He gives you two positive integers A and B, and your task is to find all pairs of integers (C, D), such that A≤C≤B,A≤D≤BA≤C≤B,A≤D≤B and AB+BA≤CD+DCAB+BA≤CD+DC
Inputfirst line contains only one integer T (T≤125T≤125), which indicates the number of test cases. Each test case contains two integers A and B (1≤A≤B≤10181≤A≤B≤1018).OutputFor each test case, first output one line "Case #x:", where x is the case number (starting from 1).
Then in a new line, print an integer s indicating the number of pairs you find.
In each of the following s lines, print a pair of integers C and D. pairs should be sorted by C, and then by D in ascending order.
Sample Input
2
10 10
9 27
Sample Output
Case #1:
1
10 10
Case #2:
2
9 27
27 9
代码:
#include <bits/stdc++.h>
using namespace std; int T;
long long A, B, C, D; int main() {
scanf("%d", &T);
for(int t = ; t <= T; t ++) {
scanf("%lld%lld", &A, &B);
printf("Case #%d:\n", t);
if(A == B) {
printf("1\n");
printf("%lld %lld\n", A, B);
} else {
printf("2\n");
printf("%lld %lld\n", A, B);
printf("%lld %lld\n", B ,A);
}
}//
return ;
}
E.Mr. Frog’s Game
In this game, if you can draw at most three horizontal or vertical head-and-tail-connected lines over the empty grids(the lines can be out of the whole board) to connect two non-empty grids with the same symbol or the two non-empty grids with the same symbol are adjacent, then you can change these two grids into empty and get several more seconds to continue the game.
Now, Mr. Frog starts a new game (that means there is no empty grid in the board). If there are no pair of grids that can be removed together,Mr. Frog will say ”I’m angry” and criticize you.
Mr. Frog is battle-scarred and has seen many things, so he can check the board in a very short time, maybe one second. As a Hong Kong Journalist, what you should do is to check the board more quickly than him, and then you can get out of the room before Mr. Frog being angry.
InputThe first line contains only one integer T (T≤500T≤500), which indicates the number of test cases.
For each test case, the first line contains two integers n and m (1≤n,m≤301≤n,m≤30).
In the next n lines, each line contains m integers, j-th number in the i-th line means the symbol on the grid(the same number means the same symbol on the grid).
OutputFor each test case, there should be one line in the output.
You should output “Case #x: y”,where x is the case number(starting from 1), and y is a string representing the answer of the question. If there are at least one pair of grids that can be removed together, the y is “Yes”(without quote), else y is “No”.Sample Input
2
3 3
1 2 1
2 1 2
1 2 1
3 3
1 2 3
2 1 2
3 2 1
Sample Output
Case #1: Yes
Case #2: No
代码:
#include <bits/stdc++.h>
using namespace std;
int a[][];
map <int,int> Map;
int main()
{
int T,tot=;
cin>>T;
while(T--)
{
Map.clear();
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
scanf("%d",&a[i][j]);
}
} int flag=;
for(int i=;i<=m;i++)
{
if(!Map[a[][i]]) Map[a[][i]]=;
else flag++;
}
if(flag)
{
printf("Case #%d: Yes\n",++tot);
continue;
}
Map.clear();
for(int i=;i<=m;i++)
{
if(!Map[a[n][i]]) Map[a[n][i]]=;
else flag++;
}
if(flag)
{
printf("Case #%d: Yes\n",++tot);
continue;
}
Map.clear();
for(int i=;i<=n;i++)
{
if(!Map[a[i][]]) Map[a[i][]]=;
else flag++;
}
if(flag)
{
printf("Case #%d: Yes\n",++tot);
continue;
}
Map.clear();
for(int i=;i<=n;i++)
{
if(!Map[a[i][m]]) Map[a[i][m]]=;
else flag++;
}
if(flag)
{
printf("Case #%d: Yes\n",++tot);
continue;
} for(int i=;i<=n;i++)
{
for(int j=;j<=m-;j++)
{
if(a[i][j]==a[i][j+])
{
flag++;
}
}
if(flag) break;
}
if(flag)
{
printf("Case #%d: Yes\n",++tot);
continue;
} for(int i=;i<=m;i++)
{
for(int j=;j<=n-;j++)
{
if(a[j][i]==a[j+][i])
{
flag++;
}
}
if(flag) break;
}
if(flag)
{
printf("Case #%d: Yes\n",++tot);
continue;
}
else
{
printf("Case #%d: No\n",++tot);
}
} return ;
}
F.Auxiliary Set
An auxiliary set is a set containing vertices satisfying at least one of the two conditions:
∙∙It is an important vertex
∙∙It is the least common ancestor of two different important vertices.
You are given a tree with n vertices (1 is the root) and q queries.
Each query is a set of nodes which indicates the unimportant vertices in the tree. Answer the size (i.e. number of vertices) of the auxiliary set for each query.
InputThe first line contains only one integer T (T≤1000T≤1000), which indicates the number of test cases.
For each test case, the first line contains two integers n (1≤n≤1000001≤n≤100000), q (0≤q≤1000000≤q≤100000).
In the following n -1 lines, the i-th line contains two integers ui,vi(1≤ui,vi≤n)ui,vi(1≤ui,vi≤n)indicating there is an edge between uiuii and vivi in the tree.
In the next q lines, the i-th line first comes with an integer mi(1≤mi≤100000)mi(1≤mi≤100000)indicating the number of vertices in the query set.Then comes with mi different integers, indicating the nodes in the query set.
It is guaranteed that ∑qi=1mi≤100000∑i=1qmi≤100000.
It is also guaranteed that the number of test cases in which n≥1000n≥1000 or ∑qi=1mi≥1000∑i=1qmi≥1000 is no more than 10.
OutputFor each test case, first output one line "Case #x:", where x is the case number (starting from 1).
Then q lines follow, i-th line contains an integer indicating the size of the auxiliary set for each query.
Sample Input
1
6 3
6 4
2 5
5 4
1 5
5 3
3 1 2 3
1 5
3 3 1 4
Sample Output
Case #1:
3
6
3
代码:
#include <bits/stdc++.h>
using namespace std; const int maxn = 1e5 + ;
int T;
int a[maxn];
int deep[maxn], fa[maxn], son[maxn], soon[maxn];
vector<int> v[maxn]; void dfs(int child, int parent) {
fa[child] = parent;
deep[child] = deep[parent] + ;
son[child] = ; for(int i = ; i < v[child].size(); i ++) {
if(v[child][i] != parent) {
dfs(v[child][i], child);
son[child] ++;
}
} } bool cmp(int a, int b) {
return deep[a] > deep[b];
} int main() {
scanf("%d", &T);
for(int t = ; t <= T; t ++) {
int N, M;
scanf("%d%d", &N, &M); for(int i = ; i <= N; i ++)
v[i].clear(); for(int i = ; i < N - ; i ++) {
int st, en;
scanf("%d%d", &st, &en);
v[st].push_back(en);
v[en].push_back(st);
} printf("Case #%d:\n", t);
dfs(, );
while(M --) {
int K;
scanf("%d", &K);
int ans = N - K;
for(int i = ; i < K; i ++) {
scanf("%d", &a[i]);
} sort(a, a + K, cmp); for(int i = ; i < K; i ++)
soon[a[i]] = son[a[i]]; for(int i = ; i < K; i ++) {
if(soon[a[i]] >= ) ans ++;
else if(soon[a[i]] == )
soon[fa[a[i]]] --;
} printf("%d\n", ans); } }
return ;
}
2019省赛训练组队赛3.26周二---FJUT 2016的更多相关文章
- 2019省赛训练组队赛3.31周四-17fj
https://vjudge.net/contest/289558#overview A - Frog Therearex frogs and y chicken in a garden. Kim f ...
- hdu6578 2019湖南省赛D题Modulo Nine 经典dp
目录 题目 解析 AC_Code @ 题目 第一题题意是一共有{0,1,2,3}四种数字供选择,问有多少个长度为n的序列满足所有m个条件,每个条件是说区间[L,R]内必须有恰好x个不同的数字. 第二题 ...
- QFNU-ACM 2019.5.23组队赛 2019山东省赛复现
A.Calandar 题意:一年12个月,一个月30天,5天一周,已知某天的年月日星期数,求所给年月日的星期数是多少 思路:直接进行计算,其实每个月每年都是等长度的就使得计算的时候忽略年月,可以直接进 ...
- 2019牛客训练赛第七场 C Governing sand 权值线段树+贪心
Governing sand 题意 森林里有m种树木,每种树木有一定高度,并且砍掉他要消耗一定的代价,问消耗最少多少代价可以使得森林中最高的树木大于所有树的一半 分析 复杂度分析:n 1e5种树木,并 ...
- X-NUCA 2017 web专题赛训练题 阳光总在风雨后和default wp
0X0.前言 X-NUCA 2017来了,想起2016 web专题赛,题目都打不开,希望这次主办方能够搞好点吧!还没开赛,依照惯例会有赛前指导,放一些训练题让CTFer们好感受一下题目. 题目有一大 ...
- acm省赛选拔组队赛经验谈
省赛组队赛已经进行5场了,过半了. 从曾经的不会组队到如今逐渐磨合,尽管每次都有遗憾,可是我认为我们一直在进步.有些失误是要记录下来下次不能再犯的! 经验: 1:上场開始一定要有人(英语能力和算法综合 ...
- 2019新生赛 %%%xxh
笔记.md ...
- PTA天梯赛训练题L1-064:估值一亿的AI核心代码(字符串模拟)
Update:smz说regex秒过Orz,yzd记在这里了. 听说今年天梯赛有个烦人的模拟,我便被队友逼着试做一下……一发15,二发20.记一记,要不然枉费我写这么久…… 自己还是代码能力太菜了,校 ...
- [CVPR 2019]NOCS代码训练、检测与评估
Normalized Object Coordinate Space for Category-Level 6D Object Pose and Size Estimation 训练.检测与评估 本文 ...
随机推荐
- JDK动态代理和cglib代理详解
JDK动态代理 先做一下简单的描述,通过代理之后返回的对象已并非原类所new出来的对象,而是代理对象.JDK的动态代理是基于接口的,也就是说,被代理类必须实现一个或多个接口.主要原因是JDK的代理原理 ...
- 【teradata】强制解锁
使用加锁用户释放锁,也可以用其它用户使用如下语句强制解锁 Release lock (pdm_data ),Override
- 【C编程基础】C编译链接命令gccc
1.gcc安装 rpm -qa|grep gcc ==>检查gcc是否安装 gcc -v ==>检查gcc版本 yum -y install gcc ==>安装gcc 2.基本语法 ...
- D. Diverse Garland Codeforces Round #535 (Div. 3) 暴力枚举+贪心
D. Diverse Garland time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- E. Magic Stones CF 思维题
E. Magic Stones time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- Java基础知识点(一)
前言:本篇随笔,主要记录Java的基础知识点,不管是用于项目或者面试中,笔者认为都非常有用,所以将持续更新...... 1.Java的访问权限 Java中有四种访问权限:默认访问权限.public.p ...
- CF917D Stranger Trees
CF917D Stranger Trees 题目描述 给定一个树,对于每个\(k=0,1\cdots n-1\),问有多少个生成树与给定树有\(k\)条边重合. 矩阵树定理+高斯消元 我们答案为\(f ...
- ubuntu18.04 下 使用conda安装requirement.txt指定的依赖包
首先创建特定的虚拟环境 conda create -n temp_test python=3.5 conda install anaconda 切换到该环境 conda activate temp_t ...
- 【vue】vue +element 搭建及开发中项目中,遇到的错误提示
1. import Layout from '@/views/layout/Layout'; export default [ { // 配置路由,当路径为'/activePublic',使用组件ac ...
- Linux systemctl命令笔记
指令格式 systemctl [command] [unit] 常用指令 1.启动 $ systemctl start 2.停止 $ systemctl stop 3.重启 $ systemctl r ...