热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

bzoj1923[Sdoi2010]外星千足虫压位+高斯消元

这个题手动压位非常麻烦,因为对于同一块,后加的数比先加的数小,所以判断最后一位的时候需要定位到最后一块最小的数,而且在找元的时候还不能找到这个位置注意块的总数每个是30个不要存错,

这个题手动压位非常麻烦,因为对于同一块,后加的数比先加的数小,所以判断最后一位的时候需要定位到最后一块最小的数,而且在找元的时候还不能找到这个位置

注意块的总数每个是30个不要存错,


码:

#include 
#include
#include
using namespace std;
int n,m,i,j,k,l,cnt,ans[2005],a[2005][2005],p,er[55];
char ch;
bool y[4005];
int gauss()
{
    int o=0;
    for(i=1;i<=m;i++)
   {
   	for(j=1;j<=cnt;j++)
   	{
   		bool ky=0;
   		for(p=0;p<=30;p++)
   	if((a[i][j]&er[p])){if(j==cnt&&p==0)continue;ky=1;break; }
if(ky)break;
    }
   	if(j==cnt+1)
       {
       	o++;
       	continue;
       }
   	for(k=1;k<=m;k++)
       {
       if(k==i||(a[k][j]&er[p])==0)continue;
       for(l=1;l<=cnt;l++)
       {
       	a[k][l]^=a[i][l];       	
       }	   	
       } 
       if(i-o==n)	break;
   }
    for(k=1;k<=i;k++)
    {
    for(j=1;j<=cnt;j++)
    for(l=30;l>=0;l--)
    if(a[k][j]&er[l]){ if(j==cnt&&l==0)continue;   ans[(j-1)*31+(30-l)]=(a[k][cnt]&1);y[(j-1)*31+(30-l)]=1;break;   	}	
    }
    return i;
}
int main()
{
    er[0]=1;
    for(i=1;i<=30;i++)
    er[i]=er[i-1]*2;
    scanf("%d%d",&n,&m);
    for(i=1;i<=m;i++)
    {
    cnt=0;
    for(j=1;j<=n+1;j++)
    {   if((j-1)%30==0)++cnt;
    scanf("%c",&ch);
    while(ch!='0'&&ch!='1')scanf("%c",&ch);
    a[i][cnt]=a[i][cnt]*2+(ch-'0');
    }
} 
    int lin=gauss();
    if(lin 
 


推荐阅读
  • 深入解析C语言中的大小端字节序存储机制
    在C语言中,当编译器执行“创建变量”的指令时,会为该变量在内存中分配相应的存储空间。对于整型变量,其值通常以二进制补码形式存储。此外,不同系统采用的大端或小端字节序对数据的实际存储方式有显著影响,理解这些机制有助于开发者更好地控制数据的读写过程。 ... [详细]
  • PAT甲级 1068 寻找更多硬币 (30分) 01背包问题与路径优化
    PAT甲级 1068 寻找更多硬币 (30分) 01背包问题与路径优化 ... [详细]
  • 如何在C++中定位数组中特定数字的最后一个位置 ... [详细]
  • 本文介绍了一个基于C++标准库实现的INI文件读写操作类。该类在现有网络资源的基础上进行了扩展和优化,增加了获取当前可执行文件路径和宽字节与多字节字符串转换的功能。通过这些增强功能,该类能够更好地适应各种应用场景,提高代码的可移植性和健壮性。具体实现细节请参见 `IniFileSTL.h` 文件。 ... [详细]
  • 基于快速傅里叶变换(FFT)算法的超大数字乘法优化技术,通过将多项式表示为系数形式和点值形式之间的转换,显著提高了计算效率。该方法利用了FFT算法在多项式乘法中的优势,能够有效减少传统算法中的复杂度,实现高效的大数乘法运算。具体而言,通过将输入多项式分解并应用FFT进行变换,再对结果进行逆变换,最终得到乘积多项式的系数表示。这一过程不仅简化了计算步骤,还大幅提升了处理大规模数据时的性能。 ... [详细]
  • 题目1:给定一个非空数组A,包含有N个整数,起始下标为0。数组包含有奇数个元素,其中除了唯一一个元素之外,其他 ... [详细]
  • C/C++利用栈和队列实现停车场管理系统【C++教程】
    数据结构的课程设计一般都不是很好理解,今天小编为大家总结了一下c和c++版本的常见栈和队列的的停车场管理程序,需要 ... [详细]
  • CatchThatCowTimeLimit:50002000MS(JavaOthers)MemoryLimit:3276832768K(JavaOt ... [详细]
  • 在 Linux 环境下,深入探讨 GTK+3.0 的高级开发技巧,涵盖组件定制、事件处理及多线程应用等核心内容,帮助开发者提升应用界面的交互性和性能。 ... [详细]
  • 本文继续为新手程序员提供C语言的基础练习与进阶内容。涵盖的主题包括:ASCII码的使用、出生日期的输入输出、按指定格式输入并交换输出、字符与ASCII码的转换、表达式值的计算、带余除法的实现、四位数的反向输出以及Kiki算术问题的解决。每个练习都旨在帮助读者加深对C语言基本概念和编程技巧的理解。 ... [详细]
  • 在解决此问题时,最初对输入格式的理解存在困惑,导致编写代码过程中出现多次错误。通过参考他人代码,最终明白输入包含两个测试案例:一个案例中有4个节点,需要进行两次结构对比;另一个案例有2个节点,只需进行一次对比。输出结果应为“是”或“否”,以表明两棵树的结构是否相同。 ... [详细]
  • 图像拼接技术深入解析:基于OpenCV 3.4的Stitching模块源码分析(下篇)
    本文继续深入探讨图像拼接技术,特别是在OpenCV 3.4的Stitching模块中的源码实现。通过与VLFeat的SIFT实现进行对比,详细分析了OpenCV在图像特征提取、匹配及拼接过程中的关键算法和技术细节,为读者提供了全面的技术解析和实践指导。 ... [详细]
  • 分析: 首先判断线段俩直线是否平行(或重合),如果是的话直接求。考虑4个端点到另外一条线段的距离,取最小值即可 ... [详细]
  • 程序连接MySQL数据库的多种方法详解 ... [详细]
  • 在探讨Java动态代理机制时,本文深入分析了其核心原理与实现方式,并详细讨论了该机制在Spring框架中的应用,特别是在AOP(面向切面编程)中的作用。通过实例解析,读者可以更好地理解如何利用动态代理增强代码的灵活性和可维护性。 ... [详细]
author-avatar
lmaster
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有