【习题 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 ...
随机推荐
- sublime text3编译C/C++系统提示丢失zlib1.dll解决的方法
用g++ 编译C/C++程序时 出现例如以下系统提示: 解决的方法例如以下: 1.下载zlib1.dll: http://www.pc6.com/softview/SoftView_81060.htm ...
- Android休眠唤醒机制简介(二)
本文转载自:http://blog.csdn.net/zhaoxiaoqiang10_/article/details/24408911 Android休眠唤醒机制简介(二)************* ...
- Android:制作Update.zip升级包 【转】
本文转载自:http://zwkufo.blog.163.com/blog/static/2588251201382293049118/ 很多时候厂商或者三方提供的ROM并不能满足需求,比如系统自带软 ...
- css 继承性和层叠性
css有两大特性:继承性和层叠性 继承性 面向对象语言都会存在继承的概念,在面向对象语言中,继承的特点:继承了父类的属性和方法.那么我们现在主要研究css,css就是在设置属性的.不会牵扯到方法的层面 ...
- C - Anton and Danik
Problem description Anton likes to play chess, and so does his friend Danik. Once they have played n ...
- B - Lucky Division
Problem description Petya loves lucky numbers. Everybody knows that lucky numbers are positive integ ...
- 消除svn选定(checkout)桌面上文件显示一大堆问号。
图片: 解决方法一: 桌面右键选择TortoiseSVN——>点击Settings,如下图,选中Icon Overlays(图标覆盖),去勾选Fixed drives(本地磁盘),点击确定,按F ...
- Android5.1关机充电界面尺寸修改
Android5.1关机充电界面尺寸修改 因为项目的屏幕尺寸和一般的手机屏幕不一样,因此关机充电界面在设备上运行后严重变形,就需要自己修改这个界面了,废话不多说了,开打开打! 首先要说明这里是以And ...
- 关于基础的Set 和Get
先附上一篇文章,讲的很清楚 在Core中,我们要是先这样设置了.在我们对这个上下文做查询工作的时候,例如: var head = _OMSECDatabase.OmsEcorderHead.Where ...
- 九九乘法表(for循环)
九九乘法表:<br /><script>for(var i=0;i<10;i++){ for(var j=1;j<=i;j++) { var a=j*i docum ...