题目A:

给一个火柴等式,可以从左边移动一根到右边,也可以从右边移到左边,但是不能移动“+”,”=“的火柴,

而且加法里面的数都要大于0(很重要的条件),基本上注意到这点的都过了,没注意的都被HACK了。

#include<iostream>

#include<math.h>
#include<algorithm> #include<string>
#include<set>
#include<map>
using namespace std;
int n; int main()
{
   string s;
   cin>>s;
   int a,b;
   a=b=;
   int i=;
   for (;i<s.size();i++)
   {
    if (s[i]=='|') a++;
    if  (s[i]=='=') break;
   }
   for (;i<s.size();i++)
   if (s[i]=='|') b++;    if (abs(a-b)!=&&a!=b) cout<<"Impossible";
   else
   {
       if (a==b) cout<<s;
       else if (a<b)
       {
           cout<<'|';
           for (int i=;i<s.size()-;i++)
           cout<<s[i];
       }
       else
       {
            if (s[]!='+')
            {
            for (int i=;i<s.size();i++)
            cout<<s[i];
            cout<<'|';
            }
            else
            {
                cout<<s[]<<s[];
                s+='|';
                for (int i=;i<s.size();i++)
                cout<<s[i];
            }
       }
   }
   cout<<endl;
    return ;

}

B:

吐槽的小学奥数题:    A1A2A3A3...AN*X=ANA1A2A3....AN-1;

还有个限制就是让满足条件的A1A2A3A4..AN字典序最小

方法是:枚举AN,然后保存可行方案,判段一下。。。

丑丑的代码:

#include<iostream>

#include<math.h>
#include<algorithm>
#include<string>
#include<set>
#include<map>
using namespace std;
int a[];
int b[];
int p,x; void pan()
{
    int flag=;
    for (int i=p;i>=;i--)
    if (b[i]>a[i])
       {
        flag=;
        break;
    }     if (flag)
    for (int i=p;i>=;i--)
        b[i]=a[i];
} int main()
{     cin>>p>>x;
    /*if (x==1)
    {
         cout<<1;
          for (int i=1;i<p-1;i++)
            cout<<0;
        if (p>1) cout<<1<<endl;
        return 0;
    }*/     for (int i=;i<=p;i++)
    b[i]=;     int flag=;
    for (int i=;i>=;i--)
    {
        int next=i;
        int tem=;
        for (int j=;j<=p;j++)
        {
        a[j]=next;
        tem=next*x+tem/;
        next=tem%;
    }
    if (tem==i) {if (a[p]!=&&a[]!=) {flag=;pan();}
    }
}   if (flag)
  {    for (int j=p;j>=;j--)
    cout<<b[j];
  }   else cout<<"Impossible";
  cout<<endl;
  return ;

}

还是比赛快10分钟结束的时候出的,弱。。。。

代码风格不是很好,建议不要看代码了。。。。。。^^

C:

这几天一直在想C,D题,其实题目也很好理解

先初始所有的为“00”

先从左往右放"11",

然后放"01","10";后面的就不应管了,程序也相应比较简单,不过自己的编码能力。。。。不吐槽了

#include<iostream>
#include<string>
using namespace std;
string s[][];
int n,m,sum;
int k; int main()
{
    cin>>n>>m;
    for (int i=;i<=n;i++)
      for (int j=;j<=m;j++)
       {
       cin>>s[i][j];
       if (s[i][j]=="") k++;
       if (s[i][j][]=='') sum++;
       if (s[i][j][]=='') sum++;
      }     //cout<<endl;      for (int i=;i<=n;i++)
     for (int j=;j<=m;j++)
     s[i][j]="";      for (int t=;t<=n;t++)
     for (int i=;i<=m;i++)
     if (s[t][i]=="")
        {
         if (k) {s[t][i]="";k--;sum-=;}
         else   {
                int y=t;
              //  while (s[y][i]!="00") y++;
                if (sum&&(y<=n)) {s[y][i]="";sum--;y++;}
                if (sum&&(y<=n)) {s[y][i]="";sum--;}
              }
     }       for (int i=;i<=n;i++)
      {
        for (int j=;j<m;j++)
        cout<<s[i][j]<<" ";
        cout<<s[i][m]<<endl;
      }
return ;

}

D题:二分STEP;然后O(N*N) 判断可行性,这里我参考了某位大牛的方法,后来自己也小证明了一下

[ A[I]-STEP,A[I]+STEP],这是第I个可能达到的值,然后枚举公差,问题的关键是怎样判断是否可行

假如枚举到公差的D,第N个的数值能达到的是[A[N]-STEP,A[N]+STEP],第N-1个可能的是[A[N-1]-step,A[N-1]+STEP]与[A[N]-STEP-D,A[N]+STEP-D]的交集

于是[MAX(A[N-1]-STEP,A[N]-STEP-D),MIN(A[N-1]+STEP,A[N]+STEP-D)];

CODE:#include<iostream>

#include<math.h>
#include<algorithm>
using namespace std;
int a[],n;
int ans,up,down,yy;
int pan(int Max)
{
   for (int d=;d<=;d++)
   {
        up=a[n]+Max;
        down=a[n]-Max;
       for (int i=n-;i>=;i--)
       {
          up=min(up-d,a[i]+Max);
          down=max(down-d,a[i]-Max);
       }
         if (down<=up) {
          ans=d;yy=down;
          return ;}
         }
   return ;
}
int main()
{
    cin>>n;
    for (int i=;i<=n;i++)
    cin>>a[i];
    sort(a+,a+n+);      int l=,r=;
     while (l<r)
        {
        int mid=(l+r)/;
        if (pan(mid)) r=mid;
        else l=mid+;
    }
    cout<<l<<endl<<yy<<" "<<ans<<endl;
    return ;

}

这里是那位大大的BLOG:http://blog.csdn.net/accelerator_/article/details/19670387

比我的详细的好多了

Codeforces Round #231 (Div2) 迟到的解题报告的更多相关文章

  1. Codeforces Round #232 (Div. 1) A 解题报告

    A. On Number of Decompositions into Multipliers 题目连接:http://codeforces.com/contest/396/problem/A 大意: ...

  2. [Codeforces Round #194 (Div. 2)] Secret 解题报告 (数学)

    题目链接:http://codeforces.com/problemset/problem/334/C 题目: 题目大意: 给定数字n,要求构建一个数列使得数列的每一个元素的值都是3的次方,数列之和S ...

  3. Codeforces Round 319 # div.1 & 2 解题报告

    Div. 2 Multiplication Table (577A) 题意: 给定n行n列的方阵,第i行第j列的数就是i*j,问有多少个格子上的数恰为x. 1<=n<=10^5, 1< ...

  4. CodeForce---Educational Codeforces Round 3 The best Gift 解题报告

    对于这题笔者认为可以用数学排列来算,但是由于笔者很懒所以抄了一段大神的代码来交个大家了, 这位大神的基本想法就是通过记录各类书的数量,再暴力破解: 下面贴出这位大神的代码吧: #include< ...

  5. Codeforces Round#320 Div2 解题报告

    Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...

  6. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  7. 【前行】◇第3站◇ Codeforces Round #512 Div2

    [第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...

  8. Codeforces Round #564(div2)

    Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...

  9. Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告

    Facebook Hacker Cup 2014 Qualification Round比赛Square Detector题的解题报告.单击这里打开题目链接(国内访问需要那个,你懂的). 原题如下: ...

随机推荐

  1. Dalvik opcodes

    原文地址: http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html Dalvik opcodes Author: Gabor Paller V ...

  2. C#和.NET版本

    1999年,就听说微软公司在研发一种名为“cool”的新开发语言,而具体内幕一直是个谜,直到2000年6月26日微软在奥兰多举行的“职业开发人员技术大会”(PDC 2000)上,这个谜底终于揭晓了,这 ...

  3. SHOW SLAVE STATUS几个常见参数

    --显示当前读取的Master节点二进制日志文件和文件位置,对应线程I/O thread Master_Log_File: mysql-bin.000011 Read_Master_Log_Pos: ...

  4. char型变量理解

    char  c = 128; printf("%d", c); 问输出是多少? 正确答案应该是-128. 如下几种情况: char c=128;printf("%u\n& ...

  5. Ruby使用gets的错误:gets得到的有'\n',需要使用chomp去掉

    gets方法得到的字符串包含一个“\n”回车符,所以我们需要继续使用chomp方法把"\n"回车符去掉

  6. Shell 内置操作符-字符串处理(汇总)

    一.判断读取字符串值 表达式 含义 ${var} 变量var的值, 与$var相同     ${var-DEFAULT} 如果var没有被声明, 那么就以$DEFAULT作为其值 * ${var:-D ...

  7. .NET开源工作流RoadFlow-流程设计-流程步骤设置-策略设置

    策略设置包括当前步骤的流转方式,处理人员,退回策略等设置. 流转类型:当前步骤后面有多个步骤时,此类型选择可以决定后续步骤的发送方式. 1.系统控制:由系统根据您在线上设置的流转条件来判断该发送到哪一 ...

  8. spring aop 使用注解方式总结

    spring aop的注解方式:和xml的配置方式略有区别,详细如下: 1.首先还是建立需要的切面类:切面类里面定义好切点配置,以及所有的需要实现的通知方法. /** * */ package com ...

  9. 详谈 oracle 索引 (笔记)

    1.oracle索引空值问题 当在有空值得列上建立单列索引时,如果搜索条件为 is null 在解释计划中可以看到,对于此列oracle并没有使用索引查询: 但是当建立的是多列索引是,就会按照索引来进 ...

  10. Android 设计模式

    简介 项目开发中发现问题.解决问题这个过程中会出现很多问题,比如重复出现.某个问题的遗留,这些问题的本质就是设计模式.今天记录设计模式的知识点. 内容 在java以及其他的面向对象设计模式中,类与类之 ...