文章目录

  • 一、A - Ian Visits Mary
  • 二、B - Grid Reconstruction
  • 三、C - Ian and Array Sorting
  • 四、D - Sum Graph

一、A - Ian Visits Mary

  • 思路:
    思维题,仔细观察发现.要想他们中间没有数字,那我们就第一步先走到(1,b - 1),然后再从(1,b - 1)走到(a,b)

  • 代码:

#include<bits/stdc++.h>
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define int long long
using namespace std;
const int N = 1e6 + 10,M = 1000007,INF = 1e18 + 1,mod = 1000000007;void solve()
{int a,b; cin >> a >> b;if(__gcd(a,b) == 1){cout << "1" << endl;cout << a << ' ' << b <<endl;}else{cout << "2" << endl;cout << 1 << ' ' << b - 1 << endl;cout << a << ' ' << b << endl;                                }}signed main()
{ios::sync_with_stdio(false);  cin.tie(0); cout.tie(0);int T; T = 1;cin >> T;while(T--) solve();
}

二、B - Grid Reconstruction

  • 思路:

    1: 你把图画出来会发现,加减是绝对的,也就是某个位置如果是 + ,不管从哪条路径到这个点来都是 + ,如果是 - ,不管哪条路径过来的都是 -

    2: 这时候就贪心来想,把[n + 1 ,2 * n]之内的数字赋值给 + ,[1,n]之内的数字赋值给 -

    3: 就是对于 + 就是第一行进行降序,也就是n * 2,n* 2 - 2,n * 2 - 4,对第二行进行升序,n + 1,n + 3,n + 5,这种,对于 ,就上下两行交错的赋值,也就是第一列为1,第二列2,第三列为3,…

  • 代码:

#include<bits/stdc++.h>
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define int long long
using namespace std;
const int N = 1e6 + 10,M = 1000007,INF = 1e18 + 1,mod = 1000000007;
int a[N][2];
void solve()
{int n; cin >> n;int p = n * 2;int q = n + 1;for(int i = 1;i <= n;i ++ ){if(i & 1){a[i][1] = i;a[i][0] = p;p -= 2;}else{a[i][0] = i;a[i][1] = q;q += 2;}}for(int i = 1;i <= n;i ++ ) cout << a[i][0] << ' ';    cout << endl;for(int i = 1;i <= n;i ++ )   cout << a[i][1] << ' '; cout << endl;}signed main()
{ios::sync_with_stdio(false);  cin.tie(0); cout.tie(0);int T; T = 1;cin >> T;while(T--) solve();
}

三、C - Ian and Array Sorting

  • 思路:
    1: 先遍历一遍对于a[i - 1] > a[i]的这种,就改变a[i]和a[i + 1],也就是操作a[i + 1] += a[i - 1] - a[i] ,a[i] = a[i - 1];

    2: 遍历完一遍以后,这个数组要么就变成非递减的,要么除了最后一个其他都是非递减的,

    3: 我们再从后往前遍历对于a[i] > a[i + 1],就改变a[i]和a[i - 1],也就是再操作一遍,最后再遍历一下看看是否有非递减的数字,有就是 NO

  • 代码:

#include<bits/stdc++.h>
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define int long long
using namespace std;
const int N = 1e6 + 10,M = 1000007,INF = 1e18 + 1,mod = 1000000007;
int a[N];
void solve()
{int n; cin >> n;for(int i = 1;i <= n;i ++ ) cin >> a[i];for(int i = 2;i <= n;i ++ ){if(a[i] < a[i - 1]){int t = a[i - 1] - a[i];if(i + 1 <= n){a[i] = a[i - 1];a[i + 1] = t + a[i + 1];}}}if(a[n] >= a[n - 1] || (n - 1) % 2 == 0) {cout << "YES" << endl;return;}for(int i = n - 1;i >= 1;i -- ){if(a[i] > a[i + 1] && i - 1 >= 1){int t = a[i] - a[i + 1];a[i] = a[i + 1];a[i - 1] -= t; }}for(int i = 2;i <= n;i ++ ){if(a[i] < a[i - 1]){cout << "NO" << endl;   return;}}cout << "YES" << endl;}signed main()
{ios::sync_with_stdio(false);  cin.tie(0); cout.tie(0);int T; T = 1;cin >> T;while(T--) solve();
}

四、D - Sum Graph

  • 思路:
    这个也是看别人的代码,我们首先可以进行操作1两次,就是add(n),add(n + 1),这样你的连接的每个点最终会变成一条链,然后你再随便找一个点 ,进行n次查找操作,找出距离该点最长的那个点,那么这个点就一定是这条链的其中一个端点,然后再从该端点出发,进行n次查找就可以知道这个排列(因为题目说排列两个所以,2 *n次操作就可以了)
  • 代码:
#include<bits/stdc++.h>
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
#define int long long
using namespace std;
const int N = 1e6 + 10,M = 1000007,INF = 1e18 + 1,mod = 1000000007;
int a1[N],a2[N],b[N],c[N];
int p[N];void add(int x)
{cout << "+ " << x << endl;    int k; cin >> k;
}
int ask(int x,int y)
{cout << "? " << x << ' ' << y << endl;int k; cin >> k;return k;
}void print(int n)
{cout << "! ";for(int i = 1;i <= 2 * n;i ++ ) cout << p[i] << ' ';cout << endl; int w; cin >> w;
}void solve()
{int n; cin >> n;add(n);add(n + 1);int k = 1,t = 0;int cnt = 0;for(int i = 1;i <= n / 2;i ++){b[++cnt] = n - i + 1;b[++cnt] = i; // 把这条链放到数组中}if(n & 1) b[++cnt] = n / 2 + 1;// 如果是奇数,特判一下for(int i = 1;i <= n;i ++ ){c[b[i]] = b[n - i + 1]; // c数组这个没啥用,a1[i - 1] = b[i]; // 距离左端点距离为i - 1的点的值a2[i - 1] = b[n - i + 1]; //距离右端点距离为i - 1的点的值}int id = -1,mx = -1;for(int i = 2;i <= n;i ++ ) // 找出端点在id位置{int dis = ask(1,i);if(dis > mx){mx = dis;id = i;}}p[id] = n; // 这个位置要么是np[n + id] = c[n]; // n + i就是另一个端点for(int i = 1;i <= n;i ++ ){if(i == id) continue;int dis = ask(id,i); // id = 2int val = a1[dis];p[i] = val;p[i + n] = a2[dis];}print(n);
}signed main()
{ios::sync_with_stdio(false);  cin.tie(0); cout.tie(0);int T; T = 1;cin >> T;while(T--) solve();
}

Codeforces Round 865 (Div. 2)相关推荐

  1. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  2. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  3. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  4. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  5. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  6. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  7. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 整场比赛的A ~ E 6题全,全部题目超高质量题解链接: Codeforces Round #700 ...

  8. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

  9. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...

最新文章

  1. python 类 实例id递增_Python Django 模板类中 系统默认的主键ID自增,不会随着模板实例的删除而重置问题...
  2. [数据结构专训][GXOI/GZOI2019]旧词,[hdu5118]GRE Words Once More!,[hdu6333]Problem B. Harvest of Apples
  3. ssl提高组周六模拟赛【2018.9.22】
  4. java property类_Java之Property类使用
  5. 【NLP】综述 | 跨语言自然语言处理笔记
  6. 经典:浅谈以太坊智能合约的设计模式与升级方法
  7. google地图静态api使用助手(html源码)
  8. ArcGIS 10.7安装包及手把手安装教程
  9. (从源码解答)Failed to instantiate [org.elasticsearch.client.transport.TransportClient]
  10. 渗透测试实战分享—从app到网站沦陷
  11. 网络地址与直接广播地址有关计算
  12. PostgreSQL文本搜索(七)——自定义配置
  13. linux 配置局域网内部www服务器,局域网内部邮件服务器搭建方法
  14. oracle subquery是什么,Oracle11gR2RSF(RecuriveSubqueryfactoring)-Oracle
  15. unsigned char,char ,uchar ,UCHAR的区别
  16. io包下 文件类 字节流 字符流 缓冲流 转换流 序列化流 打印流
  17. 从最新的技术趋势看前端的未来
  18. 深入理解模拟退火算法(Simulated Annealing)
  19. 华为上半年手机销量_霸气侧漏,如何看待小米和华为的上半年手机销量
  20. 将Ops成员嵌入开发团队

热门文章

  1. 网钛CMS PHP版源码(内置小刀模板)
  2. 四元数——为何使用四元数
  3. 2018年江苏大学885编程题
  4. 环信大学:基于韧性服务的航司退改签智能化变革
  5. 记录一次微信小程序实现预览pdf
  6. 未来科技的发展趋势,对人类生活有哪些影响?
  7. 排除计算机网络故障原则,计算机网络故障排除理论与实践研究
  8. 分布式事务都有哪些,到底有什么用,在项目当中该用哪个?
  9. cmd命令大全,cmd打开计算器,cmd打开记事本...
  10. laravel配置使用Redis队列