Codeforces #449 Div2 D
#449 Div2 D
题意
交互式类题目。
起始有 n 张纸,会给出 m 次数字 p (\(1 \leq p \leq c\)),每次可选择一张纸,并在纸上写上这个数字,如果纸上已经存在数字,会覆盖掉原来的数字。问不超过 m 次能否使得所有纸上都有数字且不降序排列。
分析
这类想法题挺常见的了,观察数据范围 $ \left \lceil \frac{c}{2} \right \rceil \cdot n \leq m$,我们可以这么理解, \(n\) 张纸,每张最多变 $ \left \lceil \frac{c}{2} \right \rceil $ 次。
考虑对于小于 \(\left \lceil \frac{c}{2} \right \rceil\) 的数字我们从左往右放,否则从右往左放,且保持数字一直有序。考虑最坏的情况,若依次给出数字 \([\left \lceil \frac{c}{2} \right \rceil, c]\) ,我们都只能填到最右边的纸上,需要改变 \(\left \lceil \frac{c}{2} \right \rceil\) 次,其它纸类似。所以对于题目所给出的数据范围我们的贪心策略是有效的。
code
#include<bits/stdc++.h>
using namespace std;
int a[1111];
int main() {
    int n, m, c;
    cin >> n >> m >> c;
    int cnt = 0;
    c = c / 2;
    while(1) {
        int p, pos;
        cin >> p;
        if(p <= c) {
            for(int i = 1; i <= n; i++) {
                if(!a[i] || a[i] > p) {
                    if(!a[i]) cnt++;
                    a[i] = p;
                    pos = i;
                    break;
                }
            }
        } else {
            for(int i = n; i >= 1; i--) {
                if(!a[i] || a[i] < p) {
                    if(!a[i]) cnt++;
                    a[i] = p;
                    pos = i;
                    break;
                }
            }
        }
        cout << pos << endl;
        fflush(stdout);
        if(cnt == n) break;
    }
    return 0;
}
												
											Codeforces #449 Div2 D的更多相关文章
- Codeforces #180 div2 C Parity Game
		
// Codeforces #180 div2 C Parity Game // // 这个问题的意思被摄物体没有解释 // // 这个主题是如此的狠一点(对我来说,),不多说了这 // // 解决问 ...
 - Codeforces #541 (Div2) - E. String Multiplication(动态规划)
		
Problem Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...
 - Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)
		
Problem Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...
 - Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)
		
Problem Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...
 - Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)
		
Problem Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...
 - 【Codeforces #312 div2 A】Lala Land and Apple Trees
		
# [Codeforces #312 div2 A]Lala Land and Apple Trees 首先,此题的大意是在一条坐标轴上,有\(n\)个点,每个点的权值为\(a_{i}\),第一次从原 ...
 - Codeforces #263 div2 解题报告
		
比赛链接:http://codeforces.com/contest/462 这次比赛的时候,刚刚注冊的时候非常想好好的做一下,可是网上喝了个小酒之后.也就迷迷糊糊地看了题目,做了几题.一觉醒来发现r ...
 - codeforces #round363 div2.C-Vacations (DP)
		
题目链接:http://codeforces.com/contest/699/problem/C dp[i][j]表示第i天做事情j所得到最小的假期,j=0,1,2. #include<bits ...
 - codeforces round367 div2.C  (DP)
		
题目链接:http://codeforces.com/contest/706/problem/C #include<bits/stdc++.h> using namespace std; ...
 
随机推荐
- 有用的Java注解
			
好处: 能够读懂别人的代码,特别是框架相关的代码: 让编程更加简洁,代码更加清晰. 使用自定义注解解决问题!! Java1.5版本引入. Java中的常见注解 @Override:告诉使用者及编译器, ...
 - Mybatis缓存机制及mybatis的各个组成部分
			
Mybatis 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 ...
 - JSP AJAX之Form序列化登录体验
			
package web; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletExc ...
 - 模拟赛 yjqa
			
考场上怕是石乐志. 状态设计还是很自然的,求什么设什么. f[i]表示前i个人安排好,电梯最早回到0层的时间 转移的话,枚举上一次最后一个带走的是谁 f[i]=min(max(f[j],t[i])+2 ...
 - Clevo P950笔记本加装4G模块
			
要补全的电路部分如下(原理图见附件) 这里经过尝试,发现左上角R217,R218不用接,3G_POWER部分不接(包括MTS3572G6.UK3018及电阻电容,3G_PWR_EN实测是3.3V,驱动 ...
 - SICAU-OJ:要我唱几首歌才能够将你捕捉
			
要我唱几首歌才能够将你捕捉 题意: 有N种颜色的牛,现在可以执行以下两种操作: 1.抓捕一只牛,代价为ai: 2.花费x的代价使用魔法,让所有颜色加1,N会变为1. 求得到N种颜色的牛最少花费的代价. ...
 - rman异机恢复,全部恢复和增量恢复
			
1.首先准备工作:hostname 192.168.222.11 ol7.localdomain ol7建立相关目录:mkdir -p /u01/app/oracle/oradata/DB11G/mk ...
 - SQL性能分析
			
MySQL常见瓶颈: CPU:CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据的时候. IO:磁盘I/O瓶颈发生在装入数据远大于内存容量的时候. 服务器硬件的性能瓶颈:top.free.io ...
 - vue2.0基础知识,及webpack中vue的使用
			
## 基础指令 ## [v-cloak]{ Display:none; } <p v-cloak>xx{{msg}}xx</p> //解决闪烁问 ...
 - php模板引擎smarty
			
一. smarty的特点 速度:相对于其他模板引擎,速度较快 编译型:在下次访问模板时直接访问编译文件,不再进行模板重新编译 缓存技术:可以将用户最终看到的HTML文件缓存成一个静态HTML 插件技术 ...