UOJ#454. 【UER #8】打雪仗

http://uoj.ac/problem/454

分析:

  • 好玩的通信题~
  • 把序列分成三块,\(bob\)先发出这三块中询问点最多的一块给\(alice\)。
  • 对于这一块,显然点数大于等于\(\frac{n}{3}\),全部由\(alice\)输出。
  • 对于剩下的两块,先由\(bob\)告诉是否应该输出,\(alice\)再决定是否输出。
  • 这样,\(alice\)的次数是\(667+\frac{2n}{3}\),\(bob\)的次数是\(2+\frac{4n}{3}\),均小于\(1350\),可以通过此题。

代码:

#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
using namespace std;
char w[2050];
void pr(char s) {putchar(s);fflush(stdout);
}
int L[4],R[4];
int main() {FILE *fp=fopen("alice.in","r");int n,m;fscanf(fp,"%d%d%s",&n,&m,w+1);fclose(fp);int i;int block=667;L[1]=1; R[1]=block; L[2]=block+1; R[2]=block*2; L[3]=R[2]+1; R[3]=2*n; int x=getchar()-'0',y=getchar()-'0';x=x*2+y;for(i=L[x];i<=R[x];i++) pr(w[i]);for(i=1;i<L[x];i++) {y=getchar();if(y=='1') pr(w[i]);}for(i=R[x]+1;i<=2*n;i++) {y=getchar();if(y=='1') pr(w[i]);}
}
#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
using namespace std;
char w[2050];
void pr(char s) {putchar(s);fflush(stdout);
}
void print(int x) {pr(x/2+'0'); pr((x&1)+'0');
}
int n,m,p[2050],is[2050],L[4],R[4];
int main() {FILE *fp=fopen("bob.in","r");int n,m,i;fscanf(fp,"%d%d",&n,&m);for(i=1;i<=n;i++) fscanf(fp,"%d",&p[i]),is[p[i]]=1;fclose(fp);int block=667,c1=0,c2=0,c3=0;for(i=1;i<=block;i++) c1+=is[i];for(i=block+1;i<=2*block;i++) c2+=is[i];for(i=block*2+1;i<=2*n;i++) c3+=is[i];L[1]=1; R[1]=block; L[2]=block+1; R[2]=block*2; L[3]=R[2]+1; R[3]=2*n; int x=0;if(c1>=333) x=1;if(c2>=333) x=2;if(c3>=333) x=3;print(x);for(i=L[x];i<=R[x];i++) w[i]=getchar();for(i=1;i<L[x];i++) {pr(is[i]+'0');if(is[i]) w[i]=getchar();}for(i=R[x]+1;i<=2*n;i++) {pr(is[i]+'0');if(is[i]) w[i]=getchar();}fp=fopen("bob.out","w");for(i=1;i<=n;i++) fprintf(fp,"%c",w[p[i]]);
}

转载于:https://www.cnblogs.com/suika/p/10205947.html

UOJ#454. 【UER #8】打雪仗相关推荐

  1. [UOJ#454][UER#8]打雪仗

    xx 转载于:https://www.cnblogs.com/lxzl/p/10324980.html

  2. 【UOJ 454】打雪仗(通信题)(分块)

    打雪仗 题目链接:UOJ 454 题目大意 通信题. 两个人 A 有一个 2n 的 01 的字符串,B 有 n 个要知道的位置. 两个人可以传 01 给对方,然后最多的人不能传超过 4/3n(会多一点 ...

  3. UOJ #454.【UER #8】打雪仗 通信题

    题意 有两个人Alice和Bob,现在Alice有一个长度为2n的01串,Bob有n个位于[1,2n]之间的下标,现在要求Alice和Bob之间传递信息,每次只能发送0或1,要求每人发送次数不超过m, ...

  4. UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)

    题目链接 http://uoj.ac/contest/47/problem/455 题解 模拟费用流,一个非常神奇的东西. 本题即为WC2019 laofu的讲课中的Problem 8,经典的老鼠进洞 ...

  5. [UOJ#245][UER#7B]天路

    Description 给出n个数,对于每个k(2<=k<=n),求出最大的一个ans,使得存在一个连续的长度为k的区间中最大值和最小值的差为ans. 答案与标准答案的误差不超过5%即为正 ...

  6. 【UOJ】UER#3.B 开学前的日历

    将条件转化为i,j⩾0,i+j⩾k|Av+i,u+j+=(i+ji)i,j⩾0,i+j⩾k|Av+i,u+j+=(i+ji)i,j\geqslant 0,i+j\geqslant k|A_{v+i,u ...

  7. 2018十二月刷题列表

    Preface \(2018\)年的尾巴,不禁感慨自己这一年的蜕变只能用蜕变来形容了. 而且老叶说我们今年没的参加清北冬令营可以参加CCF在广州二中举办的冬令营,只要联赛\(390+\)就应该可以报. ...

  8. 【UER #8】打雪仗

    题目:http://uoj.ac/contest/47/problem/454 第一次做通信题,看了半天才搞懂是什么意思. 考虑把字符串拆成三段,每段长度为$\frac{2}{3}n$ 对于B: 统计 ...

  9. UOJ#454-[UER #8]打雪仗【通信题】

    正题 题目链接:https://uoj.ac/problem/454 题目大意 AliceAliceAlice有一个长度为2n2n2n的010101串,BobBobBob有nnn个在[1,2n][1, ...

最新文章

  1. 2022-2028年中国文化旅游业投资分析及前景预测报告(上中下卷)
  2. java 做登录跳转404_springboot 访问路径错误跳转到404(实现方法一)
  3. php数字转英文,PHP金额数字转换成英文
  4. 144.⑨要写信(错排公式与高精度练习)
  5. mysql三大范式 答案_数据库三大范式的个人理解~!
  6. .NET 6新特性试用 | 总结:我最喜欢的5个特性
  7. html插入图片和文字,HTML第三课文字图片插入
  8. SharePoint 2016文档库所在数据库表的说明(文档库数据库)
  9. 网站开发中很有用的几个 jQuery 地图插件
  10. cmake使用教程(五)调用opencv外部库和自己生成的库
  11. 前端实现3D魔方旋转特效
  12. 人脸识别图片base64编码,Java实现
  13. QT 设置label内字体,字体颜色,背景色 ; 字体的中英对照
  14. 技术人员应该具备的几项基本技能
  15. 什么是预言机(oracle)
  16. form窗口上放一个label,如何能找到这个label在哪个文件中使用
  17. Learning Representations For Images With Hierarchical Labels(一、二)
  18. Random随机生成几位数字和UUID随机生成几位字母加数字组合
  19. 56,选择怪call,普通攻击,释放技能call,自己数据
  20. 计算机网络中常见的交换机和路由器的品牌

热门文章

  1. python迭代器是什么_python中什么是迭代器
  2. 深度模型框架(持续更新)
  3. Hash函数及其重要性
  4. 哈希函数(hash函数)
  5. 高三学生早恋怎么处理?家长该怎么做?
  6. 参赛必备 | “互联网+”大赛参赛攻略
  7. java中Excel导出echart图片
  8. JAVA教材(推荐新手学习)
  9. 快递100一面(Java)
  10. 关键词提取——有监督方法