codeforce Round 934 div2 个人题解(A~C)

A. Destroying Bridges

时间限制: 1秒
内存限制: 256兆
输入: 标准输入
输出: 标准输出

nnn 个岛屿,编号为 1,2,…,n1,2,…,n1,2,,n。最初,每对岛屿都由一座桥连接。因此,一共有 n(n−1)2\frac{n(n-1)}{2}2n(n1) 座桥。

Everule 住在岛屿 111 上,喜欢利用桥梁访问其他岛屿。Dominater 有能力摧毁最多 kkk 座桥梁,以尽量减少 Everule 可以使用(可能是多座)桥梁到达的岛屿数量。

如果 Dominater 以最佳方式摧毁桥梁,求 Everule 可以访问的岛屿(包括岛屿 111)的最少数量。


输入

每个测试包含多个测试用例。第一行包含一个整数 ttt (1≤t≤1031 \leq t \leq 10^31t103) - 测试用例的数量。测试用例说明如下。

每个测试用例的第一行也是唯一一行包含两个整数 nnnkkk (1≤n≤1001 \leq n \leq 1001n100, 0≤k≤n⋅(n−1)20 \leq k \leq \frac{n \cdot (n-1)}{2}0k2n(n1))。


输出

针对每个测试案例,输出如果 Dominater 以最佳方式摧毁桥梁,Everule 可以访问的最少岛屿数量。

示例

输入
6
2 0
2 1
4 1
5 10
5 3
4 4
输出
2
1
4
1
5
1

注意

在第一个测试案例中,由于无法摧毁桥梁,所以所有岛屿都可以到达。

在第二个测试案例中,您可以摧毁 111 岛和 222 岛之间的桥梁。Everule 将无法访问岛屿 222,但仍然可以访问岛屿 111。因此,Everule 可以访问的岛屿总数为 111

在第三个测试案例中,尽管 Dominater 做了什么,Everule 总是有办法到达所有的岛屿。例如,如果 "多米那 "摧毁了岛屿 111222 之间的桥梁,由于 111333 之间以及 333222 之间的桥梁没有被摧毁,埃弗鲁勒仍然可以通过 1→3→21→3→2132 到达岛屿 222

在第四个测试案例中,你可以摧毁 k=n⋅(n−1)2k = \frac{n \cdot (n-1)}{2}k=2n(n1) 之后的所有桥梁。Everule 将只能访问 111 岛(111 岛)。

解题思路

nnn个岛屿,每个岛屿之间相互连接,那么一座岛屿最多有n−1n-1n1座桥连接,如果k>=n−1k>=n-1k>=n1,直接把1岛上的所有桥全拆了,只能经过一座岛。如果k<n−1k<n-1k<n1,那么无论怎么拆所有岛都是联通的。

题解

#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <unordered_map>
#include <cstring>
#include <string>
#include <queue>
#include <stack>
#include <map>
#include <list>
#include <bitset>
#include <cmath>

#define endl '\n'

#define ft first
#define sd second

#define yes std::cout<<"Yes\n"
#define no std::cout<<"No\n"


using namespace std;

typedef long long ll;
typedef unsigned long long ull;

typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<string, string> pss;
typedef pair<string, int> psi;
typedef pair<string, ll> psl;

typedef vector<bool> vb;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<string> vs;
typedef vector<pii> vpii;
typedef vector<pll> vpll;
typedef vector<pss> vpss;

typedef vector<vi> vvi;
typedef vector<vl> vvl;

typedef queue <int> qi;
typedef queue <ll> ql;
typedef queue <pii> qpii;
typedef queue <pll> qpll;
typedef queue <psi> qpsi;
typedef queue <psl> qpsl;

typedef priority_queue<int> pqi;
typedef priority_queue<ll> pql;
typedef priority_queue<string> pqs;
typedef priority_queue<pii> pqpii;
typedef priority_queue<psi> pqpsi;
typedef priority_queue<pll> pqpl;
typedef priority_queue<psi> pqpsl;

typedef map<int, int> mii;
typedef map<ll, ll> mll;
typedef map<char, int> mci;
typedef map<char, ll> mcl;
typedef map<string, int> msi;
typedef map<string, ll> msl;

typedef unordered_map<int, int> umii;
typedef unordered_map<ll, ll> uml;
typedef unordered_map<char, int> umci;
typedef unordered_map<char, ll> umcl;
typedef unordered_map<string, int> umsi;
typedef unordered_map<string, ll> umsl;


void cinv(vi vec, int n)
{
   
   
    for (int i = 1; i <= (n); i++)
        cin >> (vec)[i];
}
void rcinv(vi vec, int n)
{
   
   
    for 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值