虽然打的时候是深夜但是状态比较好 但还是犯了好多错误..加分场愣是打成了降分场

ABC都比较水 一会敲完去看D 很快的就想出了求0和1个数的办法 然后一直wa在第四组..快结束的时候B因为低级错误被hack了...做完B想出了D的正解企图绝杀..然而还是失败了..

想了想还是由于自己不够认真吧..手速做完前三题 看着能涨分的名次就不太努力的做D了..中间还水了一下群..浪费了很多时间 导致最后没有能够完成D

A n个数 大于b被抛弃 不然就加入容器 如果容器中的和大于d 清理容器 直接模拟就好

B n个x轴点和初始坐标a 问走完至少n-1个点需要多少时间 可以想到走n-1个点一定是最优的 那么排序之后分别尝试抛弃x[1]和x[n] 输出最小值 当n==1时 直接输出0 因为这个被hack..

C 给出一个字符串 在其中选择一个连续非空子串 使其中的所有字母都-1 求这样操作一下这个字符串能达到的最小字典序 可以想到从前往后每个点的重要程度是依次下降的 寻找到第一个不是a的位置 使其作为子串的起点 再向右寻找直到尾点是a 如果找不到起点 说明全是a 那就把最后一个变为z

D 给出 a00 a01 a10 a11 分别代表 在一个由0 1组成的字符串中 00 01 10 11对的个数 问是否存在这样的字符串 有就输出 否则输出im

可以由a00 和 a11求出0 1 的个数x y 需要注意的是a00为0的时候 x有两个可能值 0 1 所以x与y的组合情况有四种

当我们确定了x和y存在的时候 可以想出 x*y == a01 + a10 在四种情况中如果都不满足 就输出im

当有一个满足的时候 就是说 x个0和y个1一定可以组成满足题意的式子 这时候进行简单的特判 即一个为0的时候 直接输出另外一个

当都不为0的时候 可以将其摆为0..01..101..10..0的形式 先在1的尾部尝试放0 如果a10可以整除 就不用在1中间插0

当把尾部和可能存在的中间的部位插完之后 我们的策略一定是满足a10的 因为式子成立 所以剩下的0全部放在最前 一定是可以成立的

每次进行字符串的输出之后直接return 0 到最后再搞一个输出im出来

虽然比较长 .. 但是大部分都是复制粘贴的..

一个trick即test4 是0 0 0 0 这时候 可能的字符串是存在的 即0或者1 .. 利用上面提到的四种情况是可以得到的..但是自己居然认为这个是错点..写了特判输出im..真傻..

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<map>
#include<queue>
#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<stack>
using namespace std;
long long a10,a01,a11,a00;
int main()
{cin>>a00>>a01>>a10>>a11;if(a00==0&&a01==0&&a10==0&&a11==0){printf("0\n");return 0;}long long x; /// 0long long y; /// 1long long a000=a00*2;long long a111=a11*2;long long q= sqrt(a000);bool ok = true;bool fin = false;if((q*(q+1))==a000){x=q+1;}else ok=false;if(ok){long long w= sqrt(a111);if((w*(w+1))==a111){y=w+1;}else ok=false;if(ok){/// 1 -if(a000==0)x=1;if(a111==0)y=1;if((x*y)==(a01+a10)){if((x+y)>1000000){printf("Impossible\n");return 0;}if(x==0&&y==0){printf("Impossible\n");return 0;}else if(x==0){for(int i=0; i<y; i++){printf("1");}printf("\n");return 0;}else if(y==0){for(int i=0; i<x; i++){printf("0");}printf("\n");return 0;}///  x yint aa01=a01;int aa10=a10;int cnt =0;int  ss=-1;while(true){y--;if(aa01>x){cnt ++;aa01-=x;}else{ss=aa01;aa01=0;}if(aa01==0)break;}if(y>=0){if(ss==-1){for(int i=1; i<=y; i++)printf("1");for(int i=1; i<=x; i++)printf("0");for(int i=1; i<=cnt; i++)printf("1");printf("\n");}else{for(int i=1; i<=y; i++)printf("1");for(int i=1; i<=ss; i++)printf("0");printf("1");for(int i=ss; i<x; i++)printf("0");for(int i=1; i<=cnt; i++)printf("1");printf("\n");}return 0;}}/// 2if(a000==0)x=0;if(a111==0)y=1;if((x*y)==(a01+a10)){if((x+y)>1000000){printf("Impossible\n");return 0;}if(x==0&&y==0){printf("Impossible\n");return 0;}else if(x==0){for(int i=0; i<y; i++){printf("1");}printf("\n");return 0;}else if(y==0){for(int i=0; i<x; i++){printf("0");}printf("\n");return 0;}int aa01=a01;int aa10=a10;int cnt =0;int  ss=-1;while(true){y--;if(aa01>x){cnt ++;aa01-=x;}else{ss=aa01;aa01=0;}if(aa01==0)break;}if(y>=0){if(ss==-1){for(int i=1; i<=y; i++)printf("1");for(int i=1; i<=x; i++)printf("0");for(int i=1; i<=cnt; i++)printf("1");printf("\n");}else{for(int i=1; i<=y; i++)printf("1");for(int i=1; i<=ss; i++)printf("0");printf("1");for(int i=ss; i<x; i++)printf("0");for(int i=1; i<=cnt; i++)printf("1");printf("\n");}return 0;}}/// 3if(a000==0)x=1;if(a111==0)y=0;if((x*y)==(a01+a10)){if((x+y)>1000000){printf("Impossible\n");return 0;}if(x==0&&y==0){printf("Impossible\n");return 0;}else if(x==0){for(int i=0; i<y; i++){printf("1");}printf("\n");return 0;}else if(y==0){for(int i=0; i<x; i++){printf("0");}printf("\n");return 0;}int aa01=a01;int aa10=a10;int cnt =0;int  ss=-1;while(true){y--;if(aa01>x){cnt ++;aa01-=x;}else{ss=aa01;aa01=0;}if(aa01==0)break;}if(y>=0){if(ss==-1){for(int i=1; i<=y; i++)printf("1");for(int i=1; i<=x; i++)printf("0");for(int i=1; i<=cnt; i++)printf("1");printf("\n");}else{for(int i=1; i<=y; i++)printf("1");for(int i=1; i<=ss; i++)printf("0");printf("1");for(int i=ss; i<x; i++)printf("0");for(int i=1; i<=cnt; i++)printf("1");printf("\n");}return 0;}}/// 4if(a000==0)x=0;if(a111==0)y=0;if((x*y)==(a01+a10)){if((x+y)>1000000){printf("Impossible\n");return 0;}if(x==0&&y==0){printf("Impossible\n");return 0;}else if(x==0){for(int i=0; i<y; i++){printf("1");}printf("\n");return 0;}else if(y==0){for(int i=0; i<x; i++){printf("0");}printf("\n");return 0;}int aa01=a01;int aa10=a10;int cnt =0;int  ss=-1;while(true){y--;if(aa01>x){cnt ++;aa01-=x;}else{ss=aa01;aa01=0;}if(aa01==0)break;}if(y>=0){if(ss==-1){for(int i=1; i<=y; i++)printf("1");for(int i=1; i<x; i++)printf("0");for(int i=1; i<=cnt; i++)printf("1");printf("\n");}else{for(int i=1; i<=y; i++)printf("1");for(int i=1; i<=ss; i++)printf("0");printf("1");for(int i=ss; i<=x; i++)printf("0");for(int i=1; i<=cnt; i++)printf("1");printf("\n");}return 0;}}printf("Impossible\n");return 0;}else{printf("Impossible\n");}}else{printf("Impossible\n");}
}

  

转载于:https://www.cnblogs.com/rayrayrainrain/p/5807902.html

AIM Tech Round 3 (Div. 2) A B C D相关推荐

  1. AIM Tech Round 4 (Div. 2)ABCD

    这一场真的是血崩,a,b都被hack,还好结束前重交都过了 A:题意:找出得到k个不同的字符,所要更改的最小字符数 题解:首先如果k>字符串长度,直接impossible,然后直接记录一下不重复 ...

  2. AIM Tech Round 4 (Div. 2)

    A题 分析:暴力 1 #include "iostream" 2 #include "cstdio" 3 #include "cstring" ...

  3. AIM Tech Round (Div. 1) C. Electric Charges 二分

    C. Electric Charges 题目连接: http://www.codeforces.com/contest/623/problem/C Description Programmer Sas ...

  4. CF AIM Tech Round 5 (rated, Div. 1 + Div. 2) B. Unnatural Conditions 思维 ʕ •ᴥ•ʔ

    Let s(x)s(x) be sum of digits in decimal representation of positive integer xx. Given two integers n ...

  5. AIM Tech Round 5C. Rectangles 思维

    C. Rectangles time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  6. Codeforces Round #433(Div. 2) D. Jury Meeting(贪心)

    题目链接:Codeforces Round #433(Div. 2) D. Jury Meeting 题意: 有n个城市,每个城市有一个人,现在要让这些人来0号城市在一起k天,然后回去. 现在有m个日 ...

  7. Codeforces Round #506 (Div. 3)

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

  8. 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 ...

  9. 构造 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 的例子可以 ...

最新文章

  1. 通过API文档查询Math类的方法,打印出近似圆,只要给定不同半径,圆的大小就会随之发生改变...
  2. Java序列化技术与Protobuff
  3. SpringMVC底层数据传输校验的方案(修改版)
  4. 每天一道LeetCode-----在有序的二维数组中查找某个元素
  5. openstack一键安装脚本(转载)
  6. 设计模式之行为模式(1)-状态、策略、责任链、访问者
  7. 小程序 request:fail ssl hand shake error 问题解决方法
  8. linux 实验七 初步理解shell程序设计
  9. java交通灯英文文献,194关于单片机智能交通灯控制系统设计有关的外文文献翻译成品:基于单片机的智能交通控制系统(中英文双语对照)7...
  10. resin 系统日志_resin学习随笔
  11. JDK正式免费、Log4j2爆核弹级漏洞、LayUI下线,2021的10 件大事
  12. 到底什么是前后端分离
  13. [C语言]二维数组传参的格式(详细+总结)
  14. coap php 发送,CoAP 客户端
  15. postgresql设置开机自启动
  16. 论文投稿指南——中文核心期刊推荐(新闻事业)
  17. 【neotic-moveit】CHOMP Planner
  18. openstack研究意义_OpenStack如何推动CERN的研究
  19. 在html中如何做个人微博,学习记录:爬取个人微博
  20. robotium有源码

热门文章

  1. C++ Rand()各种实现
  2. 徒手造了个轮子 — 实现epoll
  3. 『中级篇』Docker-Stack部署投票应用(50)
  4. 我都不敢信了 东芝芯片“又”将最后决定
  5. 智慧航空AI大赛-阿里云算法大赛总结 第一赛季总结
  6. FastClick使用之trigger触发click失效
  7. mongodb 入门 启动mongodb 无法启动 问题 非正常关闭
  8. [Bug]The maximum array length quota (16384) has been exceeded while reading XML data.
  9. NoClassDefFoundError: org/apache/flink/metrics/MetricGroup
  10. 0009:err:listview:LISTVIEW_WindowProc unknown msg 108c问题解决