BZOJ1508 : [NOI2003]Game
a[i][j]:i移动一根变成j是否可能
b[i][j]:i增加一根变成j是否可能
枚举在一个数字中移动的情况以及在两个数字中移动的情况
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define N 1010
char s[N];int n,m,i,j,I,J,k,t,a[10][10],b[10][10],pow[8],v[N],w[N],e[N][8],l[N],pos;long long sum,tmp;
void ok(){
for(i=1;i<=pos;i++){
if(i>1)putchar(w[i]==1?'+':'-');else if(w[i]!=1)putchar('-');
for(j=l[i]-1;~j;j--)printf("%d",e[i][j]);
}
for(putchar('=');i<=n;i++){
if(i>pos+1)putchar(w[i]==1?'-':'+');else if(w[i]==1)putchar('-');
for(j=l[i]-1;~j;j--)printf("%d",e[i][j]);
}
putchar('#');
std::exit(0);
}
int main(){
for(pow[0]=i=1;i<8;i++)pow[i]=pow[i-1]*10;
a[0][6]=a[0][9]=a[2][3]=a[3][2]=a[3][5]=a[5][3]=a[6][0]=a[6][9]=a[9][0]=a[9][6]=b[0][8]=b[1][7]=b[3][9]=b[5][6]=b[5][9]=b[6][8]=b[9][8]=1;
scanf("%s",s+1),n=strlen(s+1);
if(s[1]=='-')for(w[n=1]=-1,i=2;s[i]>='0'&&s[i]<='9';i++)(v[n]*=10)+=s[i]-'0',e[n][l[n]++]=s[i]-'0';
else for(w[n=1]=i=1;s[i]>='0'&&s[i]<='9';i++)(v[n]*=10)+=s[i]-'0',e[n][l[n]++]=s[i]-'0';
while(s[i]!='=')for(w[++n]=s[i++]=='+'?1:-1;s[i]>='0'&&s[i]<='9';i++)(v[n]*=10)+=s[i]-'0',e[n][l[n]++]=s[i]-'0';
pos=n;
if(s[++i]=='-')for(w[++n]=1,i++;s[i]>='0'&&s[i]<='9';i++)(v[n]*=10)+=s[i]-'0',e[n][l[n]++]=s[i]-'0';
else for(w[++n]=-1;s[i]>='0'&&s[i]<='9';i++)(v[n]*=10)+=s[i]-'0',e[n][l[n]++]=s[i]-'0';
while(s[i]!='#')for(w[++n]=s[i++]=='-'?1:-1;s[i]>='0'&&s[i]<='9';i++)(v[n]*=10)+=s[i]-'0',e[n][l[n]++]=s[i]-'0';
for(i=1;i<=n;i++)for(sum+=v[i]*w[i],j=0,k=l[i]-1;j<k;j++,k--)t=e[i][j],e[i][j]=e[i][k],e[i][k]=t;
for(i=1;i<=n;i++)for(j=0;j<l[i];j++)for(t=0;t<=9;t++)if(a[e[i][j]][t]){
tmp=sum+w[i]*(t-e[i][j])*pow[j];
if(!tmp)e[i][j]=t,ok();
}
for(i=1;i<=n;i++)for(j=0;j<l[i];j++)for(I=1;I<=n;I++)for(J=0;J<l[I];J++)if(!(i==I&&j==J))for(k=0;k<=9;k++)for(t=0;t<=9;t++)if(b[e[i][j]][k]&&b[t][e[I][J]]){
tmp=sum+w[i]*(k-e[i][j])*pow[j]+w[I]*(t-e[I][J])*pow[J];
if(!tmp)e[i][j]=k,e[I][J]=t,ok();
}
return puts("No"),0;
}
BZOJ1508 : [NOI2003]Game的更多相关文章
- BZOJ_1507_Editor_[NOI2003]_(Splay)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1507 简单区间操作的模板题 1507: [NOI2003]Editor Time Limit: ...
- NOI2003 文本编辑器editor
1507: [NOI2003]Editor Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 1908 Solved: 738[Submit][Statu ...
- BZOJ 1509: [NOI2003]逃学的小孩( 树形dp )
树形dp求出某个点的最长3条链a,b,c(a>=b>=c), 然后以这个点为交点的最优解一定是a+2b+c.好像还有一种做法是求出树的直径然后乱搞... ----------------- ...
- BZOJ_1269&&1507_[AHOI2006]文本编辑器editor&&[NOI2003]Editor
BZOJ_1269&&1507_[AHOI2006]文本编辑器editor&&[NOI2003]Editor 题意: 分析: splay模拟即可 注意1507的读入格式 ...
- [NOI2003],[AHOI2006]文本编辑器
嘟嘟嘟 [NOI2003]的其实就是一个板子--所以我就不说啥了. 唯一需要注意的是读入字符(哎--):题中说"中间可能有空格,请忽略"的意思是要在程序里特判掉,不是不管他-- 输 ...
- 【bzoj1507】[NOI2003]Editor /【bzoj1269】[AHOI2006]文本编辑器editor Splay
[bzoj1507][NOI2003]Editor 题目描述 输入 输入文件editor.in的第一行是指令条数t,以下是需要执行的t个操作.其中: 为了使输入文件便于阅读,Insert操作的字符串中 ...
- BZOJ1507 [NOI2003]Editor 【splay】
1507: [NOI2003]Editor Time Limit: 5 Sec Memory Limit: 162 MB Submit: 4129 Solved: 1660 [Submit][St ...
- 【BZOJ1509】[NOI2003]逃学的小孩 直径
[BZOJ1509][NOI2003]逃学的小孩 Description Input 第一行是两个整数N(3 N 200000)和M,分别表示居住点总数和街道总数.以下M行,每行给出一条街道的 ...
- [NOI2003] 文本编辑器 (splay)
复制炸格式了,就不贴题面了 [NOI2003] 文本编辑器 Solution 对于光标的移动,我们只要记录一下现在在哪里就可以了 Insert操作:手动维护中序遍历结果,即每次取中点像线段树一样一样递 ...
随机推荐
- weblogic <BEA-000438>
现在创建域并启动服务器, 或许会发现如下提示的错误信息:<Error> <Socket> <BEA-000438> <Unable to load perfo ...
- Nmap备忘单:从探索到漏洞利用(Part 4)
这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...
- HDOJ 1233
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- Smarty s01
复习面向过程中,如何输出显示变量的内容 01.php 第一个版本,使用三个文件来输出html 1.访问文件 2.类MyTpl.class.php 3.一个html模板文件 课堂练习第一个版本 第二个版 ...
- 右移>> 和 左移<<
一个int占四个字节,也就是32位,这样的话1不论左移还是右移32位仍旧移到原来的位置,就仍旧是1了. 右移是除,左移是乘.1除1除32次和1乘1乘32次当然都还是1了. 移位操作的简单计算方法 &g ...
- 【Python】Django 时间字段 最佳实践
. python datetime from datetime import datetime datetime.now() datetime.utcnow() from datetime impor ...
- iOS 用protocol 和 用继承小体会
最近写程序时,2个类都有相同的函数,又因为在用oc,所以就用了protocol来实现.后来发现其实这2个类除了相同的函数,还需要一些相同的变量,当初用继承的话会更简单.
- stm32——Flash读写
stm32——Flash读写 一.Flash简介 通过对stm32内部的flash的读写可以实现对stm32的编程操作. stm32的内置可编程Flash在许多场合具有十分重要的意义.如其支持ICP( ...
- AsyncHttpClient
package com.jingle.httpstudy; import org.apache.http.Header; import android.app.Activity; import ...
- SQL 总汇
/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ mysq ...