Codeforces Round #231 (Div2) 迟到的解题报告
题目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) 迟到的解题报告的更多相关文章
- Codeforces Round #232 (Div. 1) A 解题报告
A. On Number of Decompositions into Multipliers 题目连接:http://codeforces.com/contest/396/problem/A 大意: ...
- [Codeforces Round #194 (Div. 2)] Secret 解题报告 (数学)
题目链接:http://codeforces.com/problemset/problem/334/C 题目: 题目大意: 给定数字n,要求构建一个数列使得数列的每一个元素的值都是3的次方,数列之和S ...
- Codeforces Round 319 # div.1 & 2 解题报告
Div. 2 Multiplication Table (577A) 题意: 给定n行n列的方阵,第i行第j列的数就是i*j,问有多少个格子上的数恰为x. 1<=n<=10^5, 1< ...
- CodeForce---Educational Codeforces Round 3 The best Gift 解题报告
对于这题笔者认为可以用数学排列来算,但是由于笔者很懒所以抄了一段大神的代码来交个大家了, 这位大神的基本想法就是通过记录各类书的数量,再暴力破解: 下面贴出这位大神的代码吧: #include< ...
- Codeforces Round#320 Div2 解题报告
Codeforces Round#320 Div2 先做个标题党,骗骗访问量,结束后再来写咯. codeforces 579A Raising Bacteria codeforces 579B Fin ...
- Codeforces Round #539 div2
Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...
- 【前行】◇第3站◇ Codeforces Round #512 Div2
[第3站]Codeforces Round #512 Div2 第三题莫名卡半天……一堆细节没处理,改一个发现还有一个……然后就炸了,罚了一啪啦时间 Rating又掉了……但是没什么,比上一次好多了: ...
- Codeforces Round #564(div2)
Codeforces Round #564(div2) 本来以为是送分场,结果成了送命场. 菜是原罪 A SB题,上来读不懂题就交WA了一发,代码就不粘了 B 简单构造 很明显,\(n*n\)的矩阵可 ...
- Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告
Facebook Hacker Cup 2014 Qualification Round比赛Square Detector题的解题报告.单击这里打开题目链接(国内访问需要那个,你懂的). 原题如下: ...
随机推荐
- Oracle中查看无效的对象、约束、触发器和索引
.检查无效的数据库对象: SELECT owner, object_name, object_type,status FROM dba_objects WHERE status = 'INVALID' ...
- 十天学会单片机Day4串行口通信
并行与串行基本通信方式 1.并行通信方式 通常是将数据字节的各位用多条数据线同时进行传送. 并行通信控制简单.传输速度快:由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难. 2.串行通 ...
- 第一步 django的下载安装
django是python众多web框架中比较有名的一个,以大包大揽功能俱全而著名.但作为重量级的web框架,难免性能上回有所损失,不过由于其封装了各种API,在开发的时候会便利许多.所以也是深受欢迎 ...
- Node.js学习笔记 02 Implementing flow control
What is flow control? 和其它语言一样,Node.js 在代码编写时,如何组织代码,如何写出clean code都是不可避免的难点. 同时,由于Node.js的天然特性(异步,事件 ...
- View和监听器
View的基本概念 View就是Activity当中显示出来的控件,用对象来表示,如文本框的TextView类,按钮的Button类等等 每一种控件都对应一个类,都属于View的子类 在Activit ...
- 6月24日AppCan移动开发者大会礼品清单遭泄露
6月24日,第一届AppCan移动开发者大会将在北京国际会议中心举办,大会以”平台之上,应用无限”为主题,全景展现移动应用发展趋势.AppCan 移动技术蓝图及80万开发者的技术实践成果. 大会现场礼 ...
- Android--WebView的一些配置项
//打开页面时,自适应屏幕 wv_showWeb_webActivity.getSettings().setUseWideViewPort(true);//设置此属性可以任意比例缩放 wv_showW ...
- WIN服务器出现 php-cgi.exe - FastCGI 进程意外退出
既然是不能解析PHP,那就直接运行一下PHP,看会报什么错,再对症下药,于是,在命令提示符窗口进入php安装的根目录,然后运行php -v的命令,这时窗口弹出计算机丢失msvcr110.dll的错误, ...
- GNU make 总结 (三)
一.makefile 变量 makefile中的变量名是大小写敏感的,例如”foo”和”Foo”是两个不同的变量.通常情况下,对于一般变量,我们可以使用小写形式,而对于参数变量,采用全大写形式.当我们 ...
- 硬件相关-JTAG接口
JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,用于系统仿真.调试及芯片内部测试.它通过访问芯片内部封装好的测试电路TAP(Test Access ...