人生首道非传统题给了交互...

考试的时候花了半小时搞清楚了这东西是啥,然后打了10分的暴力...但并没有拿到分。

而且一直不会本地测试...

捣鼓捣鼓了好久,问了人才知道..

我本地没装g++,下发文件的grader出锅了,然后学校的电脑不知道为什么exe不兼容无法运行,只好回宾馆改。交互题调试很麻烦,最开始一直测不了样例又只能肉眼调真是心态崩了。

好歹是有了点经验了吧。

这个题把8个int拆成16位,每个int的前16位存编号,后16位是拆开的一个int的前半部分或者后半部分。

就是拆成一些向量,然后随机取一些子集异或一下扔回去。

解的时候满秩的概率很大,直接拿线性基维护一下子就可以了。


Code:

#include <vector>
#include <cstdlib>
#define uint unsigned int
using std::vector;
vector<int>encode(vector<int>arr,int lim)
{
vector<int>vec;
int len=16;
uint dx[16]={},d=~((1<<16)-1);
for(int i=0;i<8;i++)
{
dx[i<<1]=(uint)arr[i]<<len;
dx[i<<1|1]=(uint)arr[i]&d;
}//0,1 2,3 4,5...
for(int i=0;i<len;i++) dx[i]|=(uint)1<<i;
for(int i=0;i<1000;i++)
{
int res=0;
for(int j=0;j<len;j++)
if(rand()&1)
res^=dx[j];
vec.push_back(res);
}
return vec;
}
vector<int>decode(int(*const arr)(int),int n,int lim)
{
vector<int>vec;
uint base[16]={};
uint d=~((1<<16)-1);
while(lim--)
{
uint rec=arr(rand()%n);
for(int i=15;~i;i--)
if(rec>>i&1)
{
if(base[i]) rec^=base[i];
else {base[i]=rec;break;}
}
}
for(int i=15;~i;i--)
for(int j=i-1;~j;j--)
if(base[i]>>j&1)
base[i]^=base[j];
for(int i=0;i<8;i++) vec.push_back((base[i<<1]>>16)|(base[i<<1|1]&d));
return vec;
}

2019.1.5

Problem A: Dreamweaver 解题报告的更多相关文章

  1. ZOJ Problem Set - 1025解题报告

    ZOJ Problem Set - 1025 题目分类:基础题 原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=10 ...

  2. ACM: A Simple Problem with Integers 解题报告-线段树

    A Simple Problem with Integers Time Limit:5000MS Memory Limit:131072KB 64bit IO Format:%lld & %l ...

  3. BestCoder18 1002.Math Problem(hdu 5105) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5105 题目意思:给出一个6个实数:a, b, c, d, l, r.通过在[l, r]中取数 x,使得 ...

  4. Problem - 433C - Codeforces解题报告

    对于这题本人刚开始的时候的想法是:先把最大两数差的位置找到然后merge计算一个值再与一连串相同的数做merge后计算一个值比较取最大值输出:可提交后发现不对,于是本人就搜了一下正解发现原来这题的正确 ...

  5. Problem A: 选举 解题报告

    Problem A: 选举 题意 给出一个投票过程.有\(n\)个选民和\(m\)个候选人,每个选民\(i\)有个不重且有序的可投集合\(\{a_i\}\). 对于第一轮投票,选民\(i\)会投给\( ...

  6. Problem A: 种树 解题报告

    Problem A: 种树 Description 很久很久以前,一个蒟蒻种了一棵会提问的树,树有\(n\)个节点,每个节点有一个权值,现在树给出\(m\)组询问,每次询问两个值:树上一组点对\((x ...

  7. Problem C: 多线程 解题报告

    Problem C: 多线程 Description 多线程是一种常见的加速手段,利用多个线程同时处理不同的任务可以一定程度上减少总耗时,达到提高效率的目的.然而,多个线程间的执行顺序是完全不可控的, ...

  8. Problem A: 踢罐子 解题报告

    Problem A: 踢罐子 Description 平面上有\(n\)个点,其中任意2点不重合,任意3点不共线. 我们等概率地选取一个点A,再在剩下的\(n-1\)个点中等概率地选取一个点B,再在剩 ...

  9. Problem B: 专家系统 解题报告

    Problem B: 专家系统 Description 一个专家系统是指,你雇佣了\(n\)个专家,他们每个人会做出一个结果,然后你从中选取较多的专家的结果组合而成最终的结果.专家系统广泛应用于传统机 ...

随机推荐

  1. ss客户端的使用

    这里假设读者已经搭建了ss服务.教程 客户端安装 客户端可以通过GitHub上搜索,这里就不写太详细了,避免文章被禁掉. 比如对于mac的用户,可以选择这个 客户端配置 点击程序图标以展开菜单栏 服务 ...

  2. MiZ702学习笔记9——XADC采集片上数据PS版

    这次借助zynq的内嵌的XADC来采集zynq内部的一些参数: •VCCINT:内部PL核心电压 •VCCAUX:辅助PL电压 •VREFP:XADC正参考电压 •VREFN:XADC负参考电压 •V ...

  3. 汇编 if else

    知识点: if else 逆向还原代码 一.了解if else结构 sub esp, |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-] 0040102C |. 3B45 ...

  4. mfc 动态为控件添加事件2

    重载窗口过程 为动态控件绑定事件 一.重载窗口过程处理函数 CWnd::WindowProc virtual LRESULT WindowProc( UINT message, WPARAM wPar ...

  5. IP 解析器(IpParser) test 和 生产环境 实现

    注意:之前我maven居然没有引入 StringUtils 的包,然后引入了一个路径类似,但其实包路径不一样的 StringUtils ,居然是划掉的状态,像这样 StringUtils ,这个其实不 ...

  6. 重置Oracle配置

    经常被ORACLE坑,作为一个只需要开发时候连连ORACLE的程序员,在经历了一次又一次的折腾之后,决定还是把这些琐碎的事情写下来. 经常在虚拟机中使用ORACLE,ORACLE的网络配置有一些变化就 ...

  7. vs2013 std::sort 分析

    由于之前在debug模式下发现stl的sort简直慢到不能忍,所以自己写了一个sgi的sort,后来发现在release模式下,vs自带的sort快的不行,就研究了下. 这里有些和sgi-stl相通的 ...

  8. 设计模式 笔记 装饰模式 Decorator

    //---------------------------15/04/17---------------------------- //Decorator 装饰模式----对象结构型模式 /* 1:意 ...

  9. python中列表的常用操作增删改查

    1. 列表的概念,列表是一种存储大量数据的存储模型. 2. 列表的特点,列表具有索引的概念,可以通过索引操作列表中的数据.列表中的数据可以进行添加.删除.修改.查询等操作. 3. 列表的基本语法 创建 ...

  10. openstack horizon 开发第三天

    工作流:工作流是带有选项的复杂表单,每个工作流必须包含扩展Workflow, Step和的类Action1. url.py 路由处理 RESOURCE_CLASS = r'^(?P<resour ...