标签:cout int 菜鸟 Day4 ACMer 帮派 连向 pair 成员
【Day4】一名菜鸟ACMer的暑假训练
CF构造题1200-1400
D. Districts Connection
https://codeforces.com/problemset/problem/1433/D
1200
pair<帮派,编号>排序
第一个帮派的第一个成员连向不同帮派的所有成员,
第一个帮派的其他成员连向任意一个不同帮派的成员
#include <bits/stdc++.h>
using namespace std;
const int N = 5005;
typedef pair<int, int> pii;
pii a[N];
void solve () {
int n;
cin >> n;
for (int i = 1; i <= n; i ++) {
int x;
cin >> x;
a[i] = {x, i};
}
sort (a + 1, a + n + 1);
if (a[n].first == a[1].first) {
cout << "NO\n";
return ;
}
int i;
set <pii> s;
for (i = 2; i <= n; i ++)
if (a[i].first != a[1].first)
break;
//cout << "i=" << i << endl;
for (int j = i; j <= n; j ++)
s.insert ({a[1].second, a[j].second});
for (int j = i - 1; j > 1; j --)
s.insert ({a[j].second, a[i].second});
//for (auto j : s) cout << j.first << ' ' << j.second << endl;
if (s.size () != n - 1) cout << "NO\n";
else {
cout << "YES\n";
for (auto j : s) cout << j.first << ' ' << j.second << endl;
}
}
int main () {
int t;
cin >> t;
while (t --) {
solve ();
}
}
//pair<帮派,编号>排序
//第一个帮派的第一个成员连向不同帮派的所有成员,
//第一个帮派的其他成员连向任意一个不同帮派的成员
B. Random Teams
1300
https://codeforces.com/problemset/problem/478/B
阶梯型增长(故局部最大值即全局最大值)
minn:均摊 + 多出来的再均摊
maxn:1 1 1 ... n-m+1
#include <bits/stdc++.h>
#define int long long
using namespace std;
int count (int x) {
return (x - 1) * x / 2;
}
signed main () {
int n, m;
cin >> n >> m;
int x = n - m + 1;
int maxn = count (x);
int dx = n/m, cnt = n%m;
//cout << dx << ' ' << cnt << endl;
int minn = (m - cnt) * count (dx) + cnt * count (dx + 1);
cout << minn << ' ' << maxn << endl;
}
//抽屉原理的裸题
//阶梯型增长(故局部最大值即全局最大值)
//minn:均摊 + 多出来的再均摊
//maxn:1 1 1 ... n-m+1
标签:cout,int,菜鸟,Day4,ACMer,帮派,连向,pair,成员 来源: https://www.cnblogs.com/CTing/p/16450308.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。