题目链接
待更新

A. Stable Arrangement of Rooks

题目大意:给出一个n*n的棋盘,问能否放下k个棋子,使得任意一个棋子走到任意相邻的格子中不会和其他棋子在同一行或同一列。如果有这种方案,任意输出一种,否则输出-1。
规律、构造
思路:

  1. 一个棋子可以走到相邻的格子中,所以,他的上下行,左右列均不能放棋子。那如何放摆放的棋子最多?
  2. 从左上角沿对角线这样摆放的棋子是最多的。

    发现最多摆放的数量是(n+1)/2
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;int main(void)
{int T;cin >> T;while(T --){int n, m;cin >> n >> m;if(m > (n + 1) / 2){puts("-1");continue;}int x = 0, y = 0;int cnt = 1;for(int i = 0; i < n; i ++){for(int j = 0; j < n; j ++){if(i == x && j == y && cnt <= m) {printf("%c", 'R');x += 2;y += 2;cnt ++;}else printf("%c", '.');}printf("\n");}}return 0;
}

B. Integers Shop

题目大意: n段数字区间,想要得到该段要付出该段的价格。当买的区间内不含有x, 且所选的区间中,至少有一个数字大于x, 一个数字小于x时,x也将当成礼物。 尽可能买多的礼物情况下(区间内的数+x的数量最大时),最小花费是多少?
贪心

分析:

  1. 如果我们选择两个区间,两区间之间的数也会被选上。所以我们只需要在选择左端点最小、右端点最大的那个区间即可情况下,花费尽可能少。
  2. 当当前区间左端点小于前边的左端点、右端点大于前边的右端点时,我们需要选择该区间。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long LL;int main(void)
{int T;scanf("%d", &T);while(T --){int n;scanf("%d", &n);LL ed = -1, st = 1e9;LL minst = 1e17, mined = 1e17;LL ans = 1e17;for(int i = 0; i < n; i ++){LL l, r, mon;scanf("%lld%lld%lld", &l, &r, &mon);if(l < st) //这个区间得用{st = l;minst = mon;ans = 1e17;}if(r > ed){ed = r;mined = mon;ans = 1e17;}if(l == st) minst = min(minst, mon);if(r == ed) mined = min(mined, mon);if(l == st && r == ed){ans = min(ans, mon);}ans = min(ans, minst + mined);printf("%lld\n", ans);}}return 0;
}

C. Hidden Permutations

题目大意:
p是1到n的一个排列, 请你猜出来。对于它,构造了一个排列q, 一开始q: q[i] = i.
你可以询问q[i] 对于任何i,每个询问后,将会改变q:(1)先构造一个长度为n的排列q’, 满足q’[i] = q[p[i]]; (2)将q’ 赋予q
你可以询问不多于2*n个询问。

规律、代码实现

分析:
我们已知的条件是:q’[i] = q[p[i]], 我们很自然的应该寻找i和p[i]的关系。

对于样例一:
p = [4 2 1 3] q = [1 2 3 4]

(q’[1] = q[p[1]] = 4;; q’[2] = q[p[2]] = 2;; q’[3] = q[p[3]] = 1;; q’[4] = q[p[4]] = 3)
第一次询问后:q = [4 2 1 3]
第二次询问后:q = [3 2 4 1]
第三次询问后:q = [1 2 3 4]
进一步分析:发现4 1 3是一组(可以当成一个循环节,因为他们的下标i和p[i]是有关系的), 2是一组。
再举一个例子:

发现4 3 1是一组, 2 、5是一组。

对于q[i] = x, 询问一次后,q[i] = p[x]。

代码实现也是一个不简单的问题。

#include <bits/stdc++.h>using namespace std;const int MAXN = 1e4+1;int p[MAXN], c=0;int ask(int j) {int res;cout<<"? "<<j<<endl;cin>>res;// ++c;return res;
}void solve() {int n;cin>>n;fill(p, p+n+1, 0);for (int i=1; i<=n; ++i) {if (p[i] == 0) {int x=ask(i);while (!p[x]) p[x]=ask(i), x=p[x];}}// cerr<<"cnt "<<c<<endl;cout<<"! ";for (int i=1; i<=n; ++i) cout<<p[i]<<" ";cout<<endl;
}int main() {ios_base::sync_with_stdio(0);cin.tie(NULL);int t;cin>>t;while (t--) solve();
}

codeforces Hello 2022相关推荐

  1. codeforces Good Bye 2022

    codeforces Good Bye 2022 A. Koxia and Whiteboards 题解 根据提意,每次对a数组最小元素的操作就好了,因为n,m的范围比较小,所以没必要用优先对列. # ...

  2. 2022/10/24(cf·div2#829)https://codeforces.com/contest/1754

    https://codeforces.com/contest/1754/problem/A //用一个变量x记录遇到问题时需要解决的数量 //当需要解决问题的数量小于等于0时,全部解决 //遇到新问题 ...

  3. 2022/9/12(cf·div4#817)https://codeforces.com/contest/1722

    A题:https://codeforces.com/contest/1722/problem/A //我的方法是对标准和参照物分别排序,再比较 #include<bits/stdc++.h> ...

  4. 2022/9/14(cf·div3#820)https://codeforces.com/contest/1729

    https://codeforces.com/contest/1729/problem/A //暴力算,稍微注意一下b和c的位置关系 #include<bits/stdc++.h> usi ...

  5. Codeforces Round #759 (Div. 2, based on Technocup 2022 Elimination Round 3)

    感觉E思路明确只用了stl+树状数组,F线段树复合修改,为什么都是2400. A. Life of a Flower B. Array Eversion C. Minimize Distance E. ...

  6. Codeforces Round #840 (Div. 2) and Enigma 2022 - Cybros LNMIIT题解

    这场好难我是废物,掉大分了 A. Absolute Maximization 利用|找最大值和&找最小值即可 #include <bits/stdc++.h> using name ...

  7. Codeforces Round #749 (Div. 1 + Div. 2, based on Technocup 2022 Elimination Round 1)

    A. Windblume Ode 题意是给你一个数组.然后要你求得一个子序列,这个子序列每个数的和是一个合数,并且是该数组能得到的最大的合数.输出这个子序列中每个元素的下标. 一开始看到这个题目的n的 ...

  8. codeforces 2022.11.22-11.29

    1300-1600 Set Construction 令第i个集合有一个专属元素i,如果i集合为j的子集,将i集合的专属元素加入到j中 Jatayu's Balanced Bracket Sequen ...

  9. Codeforces Beta Round #16 (Div. 2 Only)【未完结】

    2022.3.9 题目地址:https://codeforces.com/contest/16 目录 A. Flag[模拟] B. Burglar and Matches[贪心] C. Monitor ...

最新文章

  1. 4.html 头部随笔
  2. openssh for windows
  3. idea中git打tag(亲测)
  4. DOS窗口的编码页从UTF-8调回GBK
  5. c语言网页版在线编译器_C语言编译器IDEapp下载-C语言编译器IDE官方版下载v1.5.1 安卓版...
  6. RabbitMQ工作笔记-新建用户及创建虚拟主机
  7. AS3.0 XMLSocket简介
  8. HashMap hash 原理分析
  9. c语言程序设计辅导资料pdf,C语言程序设计辅导资料(修订版).pdf
  10. 软件的工程化管理(二)(转)
  11. 以下可以作为C语言标识符的是( ),天津市计算机二级C语言选择题
  12. Java8新特性之双冒号(::)
  13. 实战动态PDF在线预览及带签名的PDF文件转换
  14. 无法修改计算机时间权限,Win10无法修改时间怎么办?Win10修改系统时间没有权限的解决方法...
  15. 有用的函数-系统采集
  16. memmove函数c语言实现,【C语言】实现memcopy、memmove函数
  17. asp毕业设计——基于Delphi+udp+UDP的基于局域网的信息收发系统设计与实现(毕业论文+程序源码)——教务信息管理系统
  18. 童年游戏 世嘉MD 美少女战士 最高难度 一命通关视频
  19. 虚拟机VHD格式解析到NTFS文件系统解析
  20. V-REP:虚拟机器人实验平台

热门文章

  1. 数据分析与可视化学习心得
  2. 统计多个wav文件的总音频时长
  3. 面试常问的sql语句
  4. uni-app底部安全区高度(padding-bottom、bottom)
  5. 【第39天】实现一个冒泡排序
  6. Linux Namespace 入门系列:Namespace API
  7. 你知道 iOS 开发者的六种不同角色吗?这些迷人领域的深入指南
  8. Android和服务端通过Socket收发文字图片的实现
  9. GUI之place布局
  10. 金蝶EAS WEB端多选F7赋值、保存与展示