【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

如果一行里面某位有>1个x
那么是invalid的。
没有x的话。
可以分析以下(设输入的标准Even为0,然后Odd为1)
(列出所有情况分析后会发现.)
那么必须满足标准^这一列该位的亦或和==0
x只有1个的情况的话。也应该满足这个,所以就能根据上面这个求出x是啥啦。
末尾添加0
是添加(4-len%4)个...不是len%4个。。
(如果len%4!=0的话)

【代码】

#include <bits/stdc++.h>
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
using namespace std; const int N = 1e2; int m,ss,n;
string a[N+10][N+10];
char ju[3];
int _ju; string check(){
vector<int> v;v.resize(m);
rep1(i,1,n)
rep1(p,0,ss-1){
int _xor = 0;
rep1(j,1,m){
if (a[i][j][p]=='x'){
v[j-1] = -1;
}else{
v[j-1]=a[i][j][p]-'0';
_xor ^= v[j-1];
}
}
int idx = -1,cnt = 0;
rep1(j,1,m)
if (v[j-1]==-1){
idx = j;
cnt++;
}
if (cnt>1) return " is invalid.";
if (cnt==0){
//假设其他东西的亦或值为x
//验证为的值为a
//如果ju[0]=='E' 当成0
//那么x为偶数的话,a的值要为0
//如果x为奇数的话,a的值要为1 //如果ju[0]=='O' 当成1
//那么x为偶数的话,a的值要为1
//如果x为奇数的话,a的值要为0
//所以只要看看所有东西的亦或值^ju[0]==0(Even为0,Odd为1)的话
//就是合法的
//所以那个Parity在这一行的哪里都没关系,不用知道在哪里.
if (_xor^_ju!=0) return " is invalid.";
//如果运行到这,说明这一行的第p位是ok的
}else{
//把对应的位置改成__xor^ju就ok了。
//这样xorall^ju就为0了
a[i][idx][p]=_xor^_ju+'0';
} }
string temp = "";
int idx = 1;
//cout<<endl;
rep1(i,1,n){
rep1(j,1,m){
if (j!=idx){
temp = temp + a[i][j];
}
//cout<<a[i][j]<<" ";
}
//cout<<endl;
idx++;
if (idx>m) idx = 1;
}
int len = temp.size();
if (len%4!=0){
rep1(i,1,4-len%4) temp+="0";
}
len = temp.size();
string ans = " is valid, contents are: ";
int hex=0;
//cout<<temp<<endl;
rep1(i,1,len){
hex=hex*2+temp[i-1]-'0';
if (i%4==0){
//cout<<hex<<" ";
if (hex<=9){
char key = hex+'0';
ans = ans+(char)(hex+'0');
}else{
char key = hex-10+'A';
ans = ans+key;
}
hex = 0;
}
}
return ans;
} int main(){
//freopen("/home/ccy/rush.txt","r",stdin);
//freopen("/home/ccy/rush_out.txt","w",stdout);
ios::sync_with_stdio(0),cin.tie(0);
int kase = 0;
while (cin >> m){
if (m==0) break;
cin >> ss >> n;
cin >> ju;
if (ju[0]=='E') _ju = 0;else _ju = 1;
rep1(i,1,m){
//第i个硬盘.
string s;cin >> s;
string temp="";
for (int j = 1,idx = 1;j <= n;idx++){
temp+=s[idx-1];
if (idx%ss==0){
a[j][i] = temp;
temp = "";
j++;
}
}
}
cout<<"Disk set "<<++kase<<check()<<endl;
}
return 0;
}

【习题 4-7 UVA - 509】RAID!的更多相关文章

  1. uva 509 RAID!(磁盘数据)

    来自 https://blog.csdn.net/su_cicada/article/details/80085318 习题4-7 RAID技术(RAID!, ACM/ICPC World Final ...

  2. UVA 509 RAID!

    思路来自:https://blog.csdn.net/wcr1996/article/details/43834545 先解释一下题意: ①输入:先输入d(disk的数量)  s(每块数据块有s个bi ...

  3. 位运算基础(Uva 1590,Uva 509题解)

    逻辑运算 规则 符号 与 只有1 and 1 = 1,其他均为0 & 或 只有0 or 0 = 0,其他均为1 | 非 也就是取反 ~ 异或 相异为1相同为0 ^ 同或 相同为1相异为0,c中 ...

  4. ACM训练计划建议(写给本校acmer,欢迎围观和指正)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  5. ACM训练计划建议(转)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  6. 动态规划 Dynamic Programming 学习笔记

    文章以 CC-BY-SA 方式共享,此说明高于本站内其他说明. 本文尚未完工,但内容足够丰富,故提前发布. 内容包含大量 \(\LaTeX\) 公式,渲染可能需要一些时间,请耐心等待渲染(约 5s). ...

  7. UVa第五章STL应用 习题((解题报告))具体!

    例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...

  8. UVa 1600 Patrol Robot (习题 6-5)

    传送门: https://uva.onlinejudge.org/external/16/1600.pdf 多状态广搜 网上题解: 给vis数组再加一维状态,表示当前还剩下的能够穿越的墙的次数,每次碰 ...

  9. UVa 536 Tree Recovery | GOJ 1077 Post-order (习题 6-3)

    传送门1: https://uva.onlinejudge.org/external/5/536.pdf 传送门2: http://acm.gdufe.edu.cn/Problem/read/id/1 ...

随机推荐

  1. E20170813-ts

    explicitly  adv. 明白地,明确地;

  2. Linux<小白>详细笔记

    目录   应放置的内容 /bin  系统有很多放置执行文件的目录,但是/bin目录比较特殊./bin放置的是在单用户维护模式下还能够被操作的命令.在/bin下面的命令可以被root与一般用户使用. / ...

  3. PowerDesigner常用技巧

    PowerDesigner是非常强大的数据库设计软件,熟练使用PowerDesigner可以使数据库设计高效而简洁.PowerDesign具体操作在帮助文档(按F1)里面有详细描述,这儿只是列出了常用 ...

  4. 多线程通信(wait/notify)

    线程通信概念:线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体的必用方式之一.当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同时就 ...

  5. xml转换成数组array

    直接上代码,成功转换 if($data){ //返回来的是xml格式需要转换成数组再提取值,用来做更新 $startnum = strpos($data,"<xml>" ...

  6. nginx编译安装新模块

    nginx的模块是需要重新编译nginx,而不是像apache一样配置文件引用.so 这里以安装第三方ngx_http_google_filter_module模块为例 下载第三方扩展模块ngx_ht ...

  7. jquery学习之$(document).ready()

    参考资料: 1.W3School在线教程:http://www.w3school.com.cn/jquery/event_ready.asp 2.某人博客园:http://www.cnblogs.co ...

  8. Android学习——动态注册监听网络变化

    新建一个BroadcastTest项目,然后修改MainActivity中的代码,如下: public class MainActivity extends AppCompatActivity { p ...

  9. wamp中的mysql服务与原来安装的mysql服务冲突的解决办法

    如果原来机器上已经安装了mysql,在安装wamp之后,打开wamp上的mysql时会打不开,或者会将原来安装的mysql服务关闭.原因是两个mysql共用了3306端口,解决办法是更改其中的一个端口 ...

  10. Android Studio连接夜神模拟器

    运行-cmd,进入夜神模拟器安装目录,进入目录下的bin 执行Nox_adb.exe connect 127.0.0.1:62001命令,connect左右都有空格. 执行命令后就可以连接到夜神模拟器 ...