首页 > 其他分享 >sv pack 1.

sv pack 1.

时间:2024-10-16 20:52:25浏览次数:6  
标签:int ll sv long bs ban include pack

收录非传统题

1. qoj364/JOISC2017 - Broken Device

考虑每三位一组,那么若三位都可行存 \(2\) 位,三位有两位可行存 \(1\) 位即可。

考虑如下映射:

\[\begin{aligned} 0&\to 010\\ 1&\to100,011\\ 00&\to101\\ 01&\to111\\ 10&\to001\\ 11&\to110\\ \end{aligned} \]

那么唯一的问题变成了 \(\texttt{oxo}\)(即最中间一位坏掉)不能表示 \(0\)。但是这一位可以表示 \(00\) 和 \(10\)!于是解决了问题。

点击查看代码
//qoj364

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
// #include "Annalib.h"

int p[60], tmp[160];

void Set(int x, int i){
    putchar(i+'0');
    tmp[x] = i;
}

int ban[160];
void Anna(int N, ll X, int K, int P[]){
    memset(ban, 0, sizeof(ban));
    for(int i = 0; i < K; ++ i){
        ban[P[i]] = 1;
    }
    int cnt = 0;
    for(int i = 0; i < 150; i += 3){
        if(!ban[i] && !ban[i+1] && !ban[i+2]){
            // puts("1234");
            int p = X % 4; X /= 4; cnt += 2;
            cerr << -p << ' ';
            if(p == 0){ Set(i, 1); Set(i+1, 0); Set(i+2, 1); }
            if(p == 1){ Set(i, 1); Set(i+1, 1); Set(i+2, 1); }
            if(p == 2){ Set(i, 0); Set(i+1, 0); Set(i+2, 1); }
            if(p == 3){ Set(i, 1); Set(i+1, 1); Set(i+2, 0); }
        } else if(!ban[i] && !ban[i+1]){
            // puts("1234");
            int p = X % 2; X /= 2; ++ cnt;
            cerr << p << ' ';
            if(p == 0){ Set(i, 0); Set(i+1, 1); Set(i+2, 0); }
            if(p == 1){ Set(i, 1); Set(i+1, 0); Set(i+2, 0); }
        } else if(!ban[i] && !ban[i+2]){
            // puts("1234");
            int p = X % 2;
            if(p){
                p = X % 2; X /= 2; ++ cnt;
            cerr << p << ' ';
                Set(i, 1); Set(i+1, 0); Set(i+2, 0);
            } else {
                p = X % 4; X /= 4; ++ cnt;
            cerr << -p << ' ';
                if(p == 0){ Set(i, 1); Set(i+1, 0); Set(i+2, 1); }
                if(p == 2){ Set(i, 0); Set(i+1, 0); Set(i+2, 1); }
            }
        } else if(!ban[i+1] && !ban[i+2]){
            int p = X % 2; X /= 2; ++ cnt;
            cerr << p << ' ';
            if(p == 0){ Set(i, 0); Set(i+1, 1); Set(i+2, 0); }
            if(p == 1){ Set(i, 0); Set(i+1, 1); Set(i+2, 1); }
        } else {
            Set(i, 0); Set(i+1, 0); Set(i+2, 0);
        }
        cerr << '\n';
    }
    cerr << cnt << ' ' << X << '\n';
}

// #include <bits/stdc++.h>
// using namespace std;
// typedef long long ll;
// #include "Brunolib.h"

long long Bruno(int N, int A[]){
    ll ans = 0, bs = 1;
    for(int i = 0; i < 150; i += 3){
        int val = A[i] * 4 + A[i+1] * 2 + A[i+2];
        if(val == 1){ ans += bs * 2; bs <<= 2; }
        if(val == 2){ ans += bs * 0; bs <<= 1; }
        if(val == 3){ ans += bs * 1; bs <<= 1; }
        if(val == 4){ ans += bs * 1; bs <<= 1; }
        if(val == 5){ ans += bs * 0; bs <<= 2; }
        if(val == 6){ ans += bs * 3; bs <<= 2; }
        if(val == 7){ ans += bs * 1; bs <<= 2; }
    }
    cerr << ans << ' ' << bs << '\n';
    return ans;
}

int main(){
    for(int i = 1; i <= 40; ++ i){
        p[i] = i * 3 + rand() %3;
    }
    Anna(150, 235813068146480210ll, 40, p);
    for(int i = 1; i <= 40; ++ i){
        tmp[p[i]] = 0;
    }
    printf("%lld\n", Bruno(150, tmp));
}

标签:int,ll,sv,long,bs,ban,include,pack
From: https://www.cnblogs.com/KiharaTouma/p/18470867/sv-1

相关文章

  • Tortoise SVN 安装汉化教程(乌龟SVN)
    1.首先下载去官网下载如果下载比较慢的,链接自取https://pan.quark.cn/s/cb6f2eee3f902.安装TortoiseSVN无脑next到完成最后到桌面右键你就发现svn出来了,但是是英文的!!!!像我这种英文不好的人怎么办呢那就只能汉化!!!3.汉化双击打开安装汉化包疯狂next直到安装完成4......
  • IDEA 使用 SVN 操作指南
    IDEA配置SVN拉取代码1、电脑上先安装SVN客户端:TortoiseSVN客户端安装,IDEA本身也是通过SVN客户端向服务器发送命令。2、IDEA配置SVN:File–>Setting–>VersionControl–>Subversion,填入安装好的SVN客户端exe程序路径,如:D:\ProgramFiles\TortoiseSVN\bin\svn.exe......
  • 《纪元1800》遭遇dll丢失问题无法启动:msvcr71.dll丢失详解与定制化解决方案
    《纪元1800》是一款非常受欢迎的城市建设和经济策略游戏,但有时玩家可能会遇到msvcr71.dll丢失的问题,导致游戏无法启动。msvcr71.dll是MicrosoftVisualC++运行库的一部分,负责支持许多应用程序的运行。以下是对msvcr71.dll丢失问题的详细解释及定制化解决方案。问题原......
  • svn中的trunk是什么分支?
    在版本控制系统(如SVN、Git等)中,trunk是一个特殊的分支,通常用于表示主开发线。以下是trunk分支的一些关键点:1.定义Trunk:也称为主干或主分支,是项目的主要开发线。所有主要的开发工作通常都在trunk上进行。2.用途主要开发:开发人员在trunk上进行日常的开发工作,添加新......
  • 基于网格搜索优化最小二乘向量机(GS-LSSVM)的数据多变量回归预测 Matlab代码(多输入单
    基于网格搜索优化最小二乘向量机(GS-LSSVM)的数据多变量回归预测Matlab代码(多输入单输出)程序已经调试好,无需更改代码替换数据集即可运行!!!数据格式为excel!网格搜索GS优化参数为:sigma、gamma1.购买前GS可以更换为其他的优化算法!需要其他算法的都可以定制!注:1️⃣、运行环境要......
  • 手写持向量机(SVM)实现
    下面是一个简单的支持向量机(SVM)实现,用于解决线性可分问题。这个实现不使用任何机器学习库,只使用NumPy进行矩阵运算。请注意,这个实现主要用于教学目的,实际应用中推荐使用成熟的库,如scikit-learn。importnumpyasnpclassSVM:def__init__(self,learning_rate=0.001,l......
  • Svn帐号密码找回
    主要用于本地登陆过svn但是现在忘记帐号密码了进入svn的数据目录中默认为:C:\Users\用户名\AppData\Roaming\Subversion\auth\svn.simple放入下方的SvnPwd.exe文件通过cmd进入该目录,若不在C盘,命令行中需要输入盘符:,并且运行SvnPwd.exe文件以上命令如下:c:cdC:\U......
  • vite 使用rollup 打包为什么比webpack打包更小呢
    Rollup和Webpack之间的差异在于它们的打包方式和优化策略,这导致了Rollup通常能生成更小的包体积。以下是一些主要原因:1.树摇(TreeShaking)Rollup对ES6模块的静态结构分析非常出色,能够有效地删除未使用的代码。这一过程被称为树摇(TreeShaking),能显著减小最终包的体积。2......
  • 【Unity塔防游戏素材包】Tower Defense Pack - Low Poly 3D Art
    TowerDefensePack-LowPoly3DArt是一个专为塔防类游戏设计的Unity插件,提供丰富的低多边形3D资源,涵盖了塔防游戏所需的各种元素,如塔楼、敌人、环境道具等。这些资源风格统一,兼具简约和精致,非常适合开发具有卡通风格、低多边形风格的塔防游戏。主要功能:多样化的塔......
  • C++异步调用 future async promise packaged_task
    背景:C++异步调用是现代C++编程中的一种重要技术,它允许程序在等待某个任务完成时继续执行其他代码,从而提高程序的效率和响应性。C++11引入了std::async、std::future和std::promise等工具,使得异步编程变得更加方便和直观。以下是关于C++异步调用的详细介绍,包括基本概......