【习题 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 ...
随机推荐
- HDU3183 RMQ/贪心
A Magic Lamp Problem Description Kiki likes traveling. One day she finds a magic lamp, unfortunately ...
- wox 快速搜索程序
windows启动栏的搜索,会经常找不到exe. 使用wox可以非常快速的找到启动程序 https://github.com/Wox-launcher/Wox/ 安装完成后,默认alt+space出现 ...
- C# Path 有关于文件路径获取的问题 的方法
string Current = Directory.GetCurrentDirectory();//获取当前根目录 //private string strFilePath = Applicatio ...
- leetcode链表相关
目录 2/445两数相加 综合题(328奇偶链表, 206反转链表, 21合并两个有序链表 ) 92反转链表 II 链表排序(148排序链表, 876链表的中间结点) 142环形链表 II 160相交 ...
- [Swift]LeetCode1073. 负二进制数相加 | Adding Two Negabinary Numbers
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- JVM命令参数指南
1.调整最大堆内存 -Xmx 8192m 2.调整最小堆内存-Xmx 8192m3.设置虚拟机垃圾回收机制-XX:+UseG1GC4.收集垃圾日志信息-Xloggc:/D:gc.log5.OOM异常之 ...
- POJ 3253 STL优先队列
题目大意:FJ需要修补牧场的围栏,他需要 N 块长度为 Li 的木头(N planks of woods).开始时,FJ只有一块无限长的木板,因此他需要把无限长的木板锯成 N 块长度 为 Li 的木板 ...
- ACM_一道耗时间的水题
一道耗时间的水题 Time Limit: 2000/1000ms (Java/Others) Problem Description: Do you know how to read the phon ...
- xhtml1-transitional.dtd
<!-- Extensible HTML version 1.0 Transitional DTD This is the same as HTML 4 Transitional except ...
- JSP页面中path和basepath的含义
今天在看代码时,发现程序使用了 request.getScheme() .不明白是什么意思,查了一下.结果整理如下: 1.request.getScheme() 返回当前链接使用的协议:一般应用返回h ...