A.Minimum’s Revenge

There is a graph of n vertices which are indexed from 1 to n. For any pair of different vertices, the weight of the edge between them is the least common multiple of their indexes.

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

One day, you, a clever boy, feel bored in your math class, and then fall asleep without your control. In your dream, you meet Mr. Frog, an elder man. He has a problem for you.

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

One day, Mr. Frog is playing Link Game (Lian Lian Kan in Chinese).

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

Given a rooted tree with n vertices, some of the vertices are important.

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的更多相关文章

  1. 2019省赛训练组队赛3.31周四-17fj

    https://vjudge.net/contest/289558#overview A - Frog Therearex frogs and y chicken in a garden. Kim f ...

  2. hdu6578 2019湖南省赛D题Modulo Nine 经典dp

    目录 题目 解析 AC_Code @ 题目 第一题题意是一共有{0,1,2,3}四种数字供选择,问有多少个长度为n的序列满足所有m个条件,每个条件是说区间[L,R]内必须有恰好x个不同的数字. 第二题 ...

  3. QFNU-ACM 2019.5.23组队赛 2019山东省赛复现

    A.Calandar 题意:一年12个月,一个月30天,5天一周,已知某天的年月日星期数,求所给年月日的星期数是多少 思路:直接进行计算,其实每个月每年都是等长度的就使得计算的时候忽略年月,可以直接进 ...

  4. 2019牛客训练赛第七场 C Governing sand 权值线段树+贪心

    Governing sand 题意 森林里有m种树木,每种树木有一定高度,并且砍掉他要消耗一定的代价,问消耗最少多少代价可以使得森林中最高的树木大于所有树的一半 分析 复杂度分析:n 1e5种树木,并 ...

  5. X-NUCA 2017 web专题赛训练题 阳光总在风雨后和default wp

     0X0.前言 X-NUCA 2017来了,想起2016 web专题赛,题目都打不开,希望这次主办方能够搞好点吧!还没开赛,依照惯例会有赛前指导,放一些训练题让CTFer们好感受一下题目. 题目有一大 ...

  6. acm省赛选拔组队赛经验谈

    省赛组队赛已经进行5场了,过半了. 从曾经的不会组队到如今逐渐磨合,尽管每次都有遗憾,可是我认为我们一直在进步.有些失误是要记录下来下次不能再犯的! 经验: 1:上场開始一定要有人(英语能力和算法综合 ...

  7. 2019新生赛 %%%xxh

    笔记.md                                                                                                ...

  8. PTA天梯赛训练题L1-064:估值一亿的AI核心代码(字符串模拟)

    Update:smz说regex秒过Orz,yzd记在这里了. 听说今年天梯赛有个烦人的模拟,我便被队友逼着试做一下……一发15,二发20.记一记,要不然枉费我写这么久…… 自己还是代码能力太菜了,校 ...

  9. [CVPR 2019]NOCS代码训练、检测与评估

    Normalized Object Coordinate Space for Category-Level 6D Object Pose and Size Estimation 训练.检测与评估 本文 ...

随机推荐

  1. 解决 win10 由于磁盘缓慢造成机器迟钝

    关闭 windows 的superfetch服务 建议禁止 superfetch服务: http://www.360quan.com/safe/6946.html 操作: http://jingyan ...

  2. February 12th, 2018 Week 7th Monday

    One man's fault is another man's lesson. 前车之覆,后车之鉴. We make mistakes every day, large or small, fail ...

  3. Windows10反安装报错error code 2502 2503

    先找系统TEMP目录,一般为C:\windows\temp,打开这个目录的权限,为这个目录中的User用户添加权限为完全控制,现在再反安装就不会报错了. 注:原因就是因为系统运行时需要用到临时文件的目 ...

  4. 前端使用node.js+express+mockjs+mysql实现简单服务端,2种方式模拟数据返回

    今天,我教大家来搭建一个简单服务端 参考文章: https://www.jianshu.com/p/cb89d9ac635e https://www.cnblogs.com/jj-notes/p/66 ...

  5. PostgreSQL条件表达式 case when then end

    例: SELECT CASE WHEN (store_size <= (100)::NUMERIC) THEN '小店'::TEXT WHEN (store_size >= (200):: ...

  6. CentOS 7下安装Python3.6

    CentOS 7下安装Python3.6.4   CentOS 7下安装Python3.5 •安装python3.6可能使用的依赖 yum install openssl-devel bzip2-de ...

  7. Python实现矿池

    自建P2POOL矿池详细教程(高级篇)http://8btc.com/article-1804-1.html p2pool比特币矿池教程综合篇(包含linux矿池教程)https://www.cybt ...

  8. SQL Alias(别名)

    通过使用 SQL,可以为列名称和表名称指定别名(Alias). SQL Alias 表的 SQL Alias 语法 SELECT column_name(s) FROM table_name AS a ...

  9. CF369E Valera and Queries

    嘟嘟嘟 这题刚开始以为是一个简单题,后来越想越不对劲,然后就卡住了. 瞅了一眼网上的题解(真的只瞅了一眼),几个大字令人为之一振:正难则反! 没错,把点看成区间,比如2, 5, 6, 9就是[1, 1 ...

  10. 转://WITH AS and materialize hints

    WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能. 如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使 ...