【习题 4-7 UVA - 509】RAID!
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
如果一行里面某位有>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!的更多相关文章
- uva 509 RAID!(磁盘数据)
来自 https://blog.csdn.net/su_cicada/article/details/80085318 习题4-7 RAID技术(RAID!, ACM/ICPC World Final ...
- UVA 509 RAID!
思路来自:https://blog.csdn.net/wcr1996/article/details/43834545 先解释一下题意: ①输入:先输入d(disk的数量) s(每块数据块有s个bi ...
- 位运算基础(Uva 1590,Uva 509题解)
逻辑运算 规则 符号 与 只有1 and 1 = 1,其他均为0 & 或 只有0 or 0 = 0,其他均为1 | 非 也就是取反 ~ 异或 相异为1相同为0 ^ 同或 相同为1相异为0,c中 ...
- ACM训练计划建议(写给本校acmer,欢迎围观和指正)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- ACM训练计划建议(转)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- 动态规划 Dynamic Programming 学习笔记
文章以 CC-BY-SA 方式共享,此说明高于本站内其他说明. 本文尚未完工,但内容足够丰富,故提前发布. 内容包含大量 \(\LaTeX\) 公式,渲染可能需要一些时间,请耐心等待渲染(约 5s). ...
- UVa第五章STL应用 习题((解题报告))具体!
例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h&g ...
- UVa 1600 Patrol Robot (习题 6-5)
传送门: https://uva.onlinejudge.org/external/16/1600.pdf 多状态广搜 网上题解: 给vis数组再加一维状态,表示当前还剩下的能够穿越的墙的次数,每次碰 ...
- 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 ...
随机推荐
- 【Linux】Ubuntu 开机默认亮度改动方法
换了ubuntu 之后.发现开机屏幕都是"最大亮度",每次都要到设置中手动调节,非常麻烦.于是想到去改动这个设置.Google一通,别人可行的办法到我这就没用了.郁闷.最后是在st ...
- ASP.NET MVC脚本及样式压缩
现在我用ASP.NET MVC4.0,发现它自带有脚本和样式压缩功能.不知道以前的版本有木有,没有深究.太棒了!以前我们还辛辛苦苦自己搞了一个压缩的东西.这再次说明,平庸程序员如我辈,应该把时间和精力 ...
- u-boot的内存分布和全局数据结构
U-boot,除非在RAM中调试,一般情况下都是从flash中执行一段代码,然后将flash中储存的代码和数据搬移到ram中,然后跳转到ram中执行.当然这应该也是一般的bootloader的执行方式 ...
- PCB MS SQL 排序应用---SQL相邻数据区间值求解
其中一篇 博文中有写<PCB MS SQL 排序应用---相邻数据且相同合并处理>此篇有也应相用也同的技巧,实现相邻数据区间值求解 示例: 原数据:处理前 求出区间值:处理后 SQL 代码 ...
- sublime如何汉化
1.将sublime安装文件夹里面的defavlut.sublime-package这个文件zip解压. 2.然后查找到sublime-menu文件. 3.打开文件将json里面的caption里面的 ...
- java.util.concurrent常用类(CountDownLatch,Semaphore,CyclicBarrier,Future)
CyclicBarrier CyclicBarrier是用来一个关卡来阻挡住所有线程,等所有线程全部执行到关卡处时,再统一执行下一步操作.假设一个场景:每个线程代表一个跑步运动员,当运动员都准备好后, ...
- 笔记《javascript高级程序设计》 第12章 DOM2和DOM3
DOM2 级核心:在 1 级基础上构建,为节点添加更多方法和属性 DOM2 级视图:为文档定义了基于样式信息的不同视图 DOM2 级事件:说明了如何使用事件和DOM文档交互 DOM2 级样式:如何以编 ...
- C99新增内容之复合文字(compound literal)
前言: 最近在复习C,发现了一些新东西,例如:变长数组,复合文字,指针的兼容性等.今天先简单谈一下复合文字. 正文: 假如需要向带有一个int参量的函数传递一个值,您可以传递一个int变量,也可以传递 ...
- RecastNavigation(3D场景建模、网格导航)
一.RecastNavigation详解 RecastNavigation定义: RecastNavigation是一个导航寻路工具集,使用邻接的凸多边形集合描述一个3D场景,A*寻路算法使3D场景的 ...
- PHP CURL抓取网页 simple_html_dom类
抓取网页数据后 数据录入到discuz中 <?php include('simple_html_dom.php'); function urlText(){ $url = 'http://www ...