原题链接: https://codeforces.com/contest/1430/problem/C


测试样例

input
1
4
output
2
2 4
3 3
3 1

题意: 给定一个 1 1 1~ n n n的序列,你每次需要选择两个数 a , b a,b a,b删除,再将 ( a + b + 1 ) / 2 (a+b+1)/2 (a+b+1)/2这个数放回序列中。最后使得这个序列变成一个数,且这个数要尽可能小。输出这个最小数,以及你依次进行的操作选择数。

解题思路: 我们要使得最后剩余的数最小,那么我们一定要知道,让选择大数和小数最后中和得到的一定不是最小,因为这样两个都往中间靠了。所以我们想要让这往左靠,就必须选择两个最大的数进行操作,再将合成数放回序列中,再依次进行如上操作,直到剩余最后一个数。 那么我们很容易就会想到利用优先队列来实现,即每次取队头两个数,并记录(最后输出需要用到。),同时删除这两个数,并将合成数放入队列中模拟操作即可。直到队列中只剩一个元素即为答案。OK,具体看AC代码。

AC代码

/*
*邮箱:unique_powerhouse@qq.com
*blog:https://me.csdn.net/hzf0701
*注:文章若有任何问题请私信我或评论区留言,谢谢支持。
*
*/
#include<bits/stdc++.h> //POJ不支持#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增
#define per(i,a,n) for (int i=a;i>=n;i--)//i为循环变量, a为初始值,n为界限值,递减。
#define pb push_back
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define fi first
#define se second
#define mp make_pairusing namespace std;const int inf = 0x3f3f3f3f;//无穷大
const int maxn = 1e5;//最大值。
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll>  pll;
typedef pair<int, int> pii;
//*******************************分割线,以上为自定义代码模板***************************************//int t;
int n;
struct node{int x,y;
};
int main(){//freopen("in.txt", "r", stdin);//提交的时候要注释掉IOS;while(cin>>t){while(t--){cin>>n;priority_queue<int> q;rep(i,1,n){q.push(i);}vector<node> v;while(q.size()>1){int temp1=q.top();q.pop();int temp2=q.top();q.pop();v.push_back({temp1,temp2});q.push((temp1+temp2+1)/2);}cout<<q.top()<<endl;int len=v.size();rep(i,0,len-1){cout<<v[i].x<<" "<<v[i].y<<endl;}}}return 0;
}

C. Numbers on Whiteboard(模拟+贪心) Educational Codeforces Round 96 (Rated for Div. 2)相关推荐

  1. Educational Codeforces Round 96 (Rated for Div. 2) C. Numbers on Whiteboard(构造)

    C. Numbers on Whiteboard 题意: 给你一个排列1-n,每次可以选择两个数,( ⌈ a + b 2 ⌉ \lceil \frac{a+b}{2} \rceil ⌈2a+b​⌉)进 ...

  2. Educational Codeforces Round 96 (Rated for Div. 2)

    今天先补了上一场的Codeforces Global Round 11三道题,做的心神恍惚,然后17点报名没敢提交,先写了4个题剩下的改天补一补 我是真的服信号,卷积卷si我了 A - Number ...

  3. Educational Codeforces Round 96 (Rated for Div. 2)C. Numbers on Whiteboard(贪心算法(水题))

    题目链接: 传送门 题目贴上: 题意:,给你 1-n个数,你可以对两个不同位置的数进行合并,比如a和b,合成数变成(a+b)/2,结果四舍五入.放在数组末尾,删除原来的a和b,举例子吧 就这样子两两合 ...

  4. Educational Codeforces Round 96 (Rated for Div. 2) C. Numbers on Whiteboard///思维

    cf地址 题目大意:给一个数n,有1~n的数,每次现在两个数a,b,将这两个数去掉,然后添加一个(a+b)/2的数(向上取整),进行n-1次操作后,问你最后剩下的数最小是多少. 思路:最小的数必定为2 ...

  5. 贪心 ---- Educational Codeforces Round 90 (Rated for Div. 2)E. Sum of Digits[数位贡献+思维题+贪心]

    题目链接 题目大意:就是给你nnn和kkk然后再定义一个函数f(x)是十进制数x各个位数之和f(x)是十进制数x各个位数之和f(x)是十进制数x各个位数之和 叫你求出最小的x使得f(x)+f(x+1) ...

  6. 贪心 ---- Educational Codeforces Round 90 (Rated for Div. 2)D Maximum Sum on Even Positions[偶数子段最大和]

    题目链接 题目大意:给你一个序列你可以选择一个连续的子段将其反转,反转后使得偶数位置上的数字和最大 1.很明显我们可以看出反转的字符串的长度一定是偶数的,因为是奇数的话偶数位还是在偶数位不变所以没有用 ...

  7. Educational Codeforces Round 96 (Rated for Div. 2) ABCD

    很久不写题解了 因为最近一直在刷acwing和kuangbin的专题 acwing题解直接在acwing上传了 而kuangbin做了几个半个专题 完整了会写题解的 因为身体原因最近总是眼睛疼所以很少 ...

  8. Educational Codeforces Round 75 (Rated for Div. 2) E2. Voting (Hard Version) 贪心

    传送门 文章目录 题意: 思路: 题意: n≤2e5,m≤n,p≤1e9n\le2e5,m\le n,p\le 1e9n≤2e5,m≤n,p≤1e9 思路: 首先需要发现一些性质,假设preipre_ ...

  9. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

最新文章

  1. CentOS7安装Composer
  2. 在centos上使用openswan搭建IPSec***
  3. M4i—下一代高速数据采集、数字化仪平台
  4. 【转】 ubuntu adduser 命令学习
  5. JS经典面试题05-变量连续声明var a = b = 1
  6. Golang map 如何进行删除操作?
  7. opencv 平面法向量_在OpenCV中绘制平面的法向量
  8. 使用字符串切割,使手机号中间四位隐藏
  9. 【翻译】ANDROID KTX – 使用Kotlin进行Android开发
  10. 用html5点击消失,input点击后placeholder中的提示消息消失
  11. log4j配置文件配置及解读
  12. gsp计算机管理系的功能,医药系统的GSP管理
  13. Symbian手记【四】 —— Symbian的容器
  14. 基于netty实现gps jtt808协议接入
  15. 小学计算机教师应聘简历,应聘小学教师的个人简历模板
  16. MySQL学习笔记--常用存储引擎InnoDB与MyISAM总结
  17. DSP28377D开发笔记(一) 初步认识DSP28377D芯片
  18. [ACNOI2022]猜数
  19. uni-app使用ucharts图表 ##uni-app ##uCharts
  20. keil 的bug日记

热门文章

  1. stm32智能家居+微信小程序接收控制
  2. 拓嘉启远电商:拼多多开通月卡划算吗?
  3. 随机选择中午吃饭。。。
  4. 游戏测评:配RTX 3080 Ti打倒12代i9+3080Ti
  5. 数学小魔术——猜数字
  6. 篮球比赛计时记分电路Proteus仿真说明
  7. CSS 各种百分比是基于什么工作的?
  8. html+css知识总结
  9. 【裂缝识别】基于matlab计算机视觉断裂裂缝识别【含Matlab源码 2049期】
  10. CPU架构有多少种?X86与ARM有哪些不同之处?看完这篇你就懂了