200天1000题 (DAY 6)
目前总题数: 26
目前CF分数: 1325
T1 (Codeforces #821 DIV. 2) A - Consecutive Sum
/*
比较简单的一题。
*/
const int N = 1e6 + 10;
inline void sensei()
{
int n,k;
cin >> n >> k;
vector<int> a(n+1);
vector<int> ans(n+1,-inf_ll);
for(int i=0;i<n;i++){
cin >> a[i];
}
for(int i=0;i<n;i++){
ans[i%k] = max(ans[i%k],a[i]);
}
int ret = 0;
for(int i=0;i<k;i++){
ret += ans[i];
}
cout << ret << endl;
}
signed main()
{
fuckios
int t;
cin >> t;
while(t --)
{
sensei();
}
return 0;
}
T2 (Codeforces #821 DIV. 2) B - Rule of League
/*
题目大意:给你三个数字 n,x,y
表示一共有n个人要来打羽毛球比赛
比赛规则如下, 第一个人先和第二个人打一轮
胜者和第三人打一轮,以此类推直到和第n人进行了比赛,现在,x,y表示每个人要么赢了x场要么赢了y场,请问每一轮的胜者的编号?(如果x,y对于这样的比赛不合理,输出-1)
结论题
*/
const int N = 1e6 + 10;
inline void sensei()
{
int n,x,y;
cin >> n >> x >> y;
if(x > y) swap(x,y);
if(x!=0) {
puts("-1");
return ;
}
if(y == 0 or (n-1)%y!=0){
cout << -1 << endl;
return ;
}
int ans;
for(int i=0;i<n-1;i++){
ans = i-i%y+2 ;
cout << ans << ' ';
}
cout << endl;
}
signed main()
{
int t;
cin >>t;
while(t --){
sensei();
}
return 0;
}
T3 (Codeforces #821 DIV. 2) C - Parity Shuffle Sorting
/*
贪心,构造
*/
struct node {
int x;
int y;
};
const int N = 1e6 + 10;
inline void sensei()
{
int n;
cin >> n;
vector<node> ans; // 存答案
vector<int> a(n + 1);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
if (n == 1) {
// 特判 1
cout << 0 << endl;
return ;
}
if ((a[0] + a[n-1]) % 2 == 0) {
// 如果 第一个和最后一个同奇或同偶 那么直接令最后一个等于第一个
a[0] = a[n - 1];
ans.push_back({0, n - 1});
}
for (int i = 1; i < n; i++) {
// 从下标1开始遍历
// 如果有a[i] + a[0] == even 的数
// 直接赋值
if ((a[0] % 2) != (a[i] % 2)) {
ans.push_back({0, i});
a[i] = a[0];
}
}
for (int i = n - 2; i >= 0; i--) {
// 同理 倒着遍历一边
if (a[i] != a[n - 1]) {
ans.push_back({i, n - 1});
a[i] = a[n - 1];
}
}
// 输出答案
cout << ans.size() << endl;
for (int i = 0; i < ans.size(); i++) {
cout << ans[i].x + 1 << ' ' << ans[i].y + 1 << endl;
}
}
signed main()
{
fuckios
int t;
cin >> t;
while (t --) {
sensei();
}
return 0;
}
T4 (Codeforces #821 DIV. 2) D1. Zero-One (Easy Version)
/*
贪心,结论
*/
inline void sensei()
{
int n, x, y;
cin >> n >> x >> y;
vector<int> c(n + 1);
vector<int> a(n + 1);
vector<int> b(n + 1);
int cnt = 0;
for (int i = 1; i <= n; i++) {
char alls;
cin >> alls;
a[i] = alls - '0';
}
for (int i = 1; i <= n; i++) {
char alls;
cin >> alls;
b[i] = alls - '0';
}
for (int i = 1; i <= n; i++) {
if (a[i] != b[i] and (a[i] == 1 or b[i] == 1)) {
c[i] = 1;
cnt++;
}
}
if (cnt & 1) {
cout << -1 << endl;
return ;
}
int ans = 0;
if (cnt == 2) {
int l, r;
l = 1, r = n;
while (c[l] == 0) {
l ++;
}
while (c[r] == 0) {
r --;
}
debug(l);
debug(r);
if (l + 1 == r) {
ans = min(2 * y, x);
} else {
ans = min((r - l) * x, y);
}
} else {
ans = (cnt / 2) * y;
}
cout << ans << endl;
}
signed main()
{
#ifndef LOCAL
fuckios
#endif
int t;
cin >> t;
while (t--) {
sensei();
}
return 0;
}
标签:200,return,int,cin,--,vector,sensei,DAY,1000
From: https://www.cnblogs.com/BeB0p/p/16712859.html