【随便做做】Codeforces#86 Problem C Double Happiness

基于MCP协议构建标准化安全工具链:offensive-sec-mcp实战指南 在网络安全和渗透测试领域,工具链的集成与自动化是提升效率的关键。模型上下文协议(MCP)作为一种标准化接口协议,其核心原理是通过定义统一的资源与工具暴露规范,实现外部能力的安全、可控接入。这一技术价值在于将分散的脚本、命令行工具封装为结构化的函数,从而打破工具孤岛,支持跨平台、跨客户端的无缝调用。在应用场景上,MCP特别适用于需要整合多源工具的安全作业、自动化工作流编排以及AI辅助安全分析等场景。本文聚焦的 offensive-sec-mcp 项目,正是利用MCP协议,将Nmap、SQLMap等渗透测试常用 阅读详情
  • 静态数组内存是受不了的。但同学好机智,用vector强行开150000000的数组,水了过去。。。
  • 令f(x)表示范围[1,x]内满足题意的t的个数,那么
    ans=f(r)−f(l−1)
    我们考虑打表求解,显然,不可以直接打表,所以我们考虑将3亿分段,每1000000分一段,于是总共需要预处理出300个数,即
    f(0),f(1000000),f(2000000),…,f(300000000)
    这在本地是可以O(n)地得到的(Eular筛法O(n)+枚举完全平方数O(n)),然后对一个询问f(x),只需要在线求解x这一部分即可。
  • 我们举例说明求解f(11111111)的方法,查上述规模为300的表格,我们发现有f(11000000)可用,也就是已知[1,11000000]内满足题意的数的个数;接下来,只需要求解范围[11000001,11111111]内满足题意的个数即可,由于我们每1000000做一个分割,因此我们真正需要在线做的这部分规模不会大于1000000,就可以使用你喜欢的筛素数方法通过了。为了简洁,后面这部分窝就直接O(nn−−√)地做了。
  • 本地离线预处理部分:
/* **********************************************

  File Name: c_gen.cpp

  Auther: zhengdongjian@tju.edu.cn

  Created Time: 2015年09月07日 星期一 21时35分46秒

*********************************************** */
#include <bits/stdc++.h>
using namespace std;

const int MAX = 300000001;
const int MAX_SQ = 20001;
bool is_prime[MAX];
bool yes[MAX];
int sq[MAX_SQ], sz = 0;
int prime[MAX >> 4], pr = 0;

int init() {
    memset(is_prime, true, sizeof(is_prime));
    is_prime[0] = is_prime[1] = false;
    for (int i = 2; i < MAX; ++i) {
        if (is_prime[i]) {
            prime[pr++] = i;
        }
        for (int j = 0; j < pr && prime[j] <= MAX / i; ++j) {
            is_prime[prime[j] * i] = false;
            if (i % prime[j] == 0) break;
        }
    }
    for (int i = 1; i * i < MAX; ++i) {
        sq[sz++] = i * i;
    }
    return pr;
}

int main() {
    //printf("%d\n", init());
    init();
    memset(yes, false, sizeof(yes));
    for (int i = 0; i < sz; ++i) {
        for (int j = i; j < sz; ++j) {
            int x = sq[i] + sq[j];
            if (x >= MAX) break;
            if (is_prime[x]) {
                yes[x] = true;
            }
        }
    }
    int sum = 0;
    const int CUT = 1000000;
    for (int i = 1; i < MAX; ++i) {
        if (yes[i]) ++sum;
        if (i % CUT == 0) {
            printf("%d, ", sum);
            sum = 0;
        }
    }
    return 0;
}
  • Linux下可在终端用下述命令将打表结果添加到c.cpp后面,避免手动粘贴疏漏

    g++ c_gen.cpp -o c_gen –std=c++11
    ./c_gen >> c.cpp

  • Windows也类似,注意确认是否已手动将g++.exe添加进环境变量,否则cmd下直接运行g++是无法找到该程序的。具体请自行百度之。。。

    g++ c_gen.cpp -o c_gen -std=c++11
    c_gen >> c.cpp

    注意二者的区别是运行生成的c_gen的方式不同,Linux直接输入命令是只在$PATH环境变量中包含的路径查找,并且不包含当前目录。试想,由于Linux下任何用户都有/tmp的rwx权限,一个普通用户在里面放置了一个恶意程序,甚至命名为ls(ls原本为系统程序,位于/bin/ls,功能为列出当前目录下的文件/目录)!之后root在tmp中想查看文件,然后执行ls。。。后果可想而知。。。也正因此,Linux执行当前目录下的程序需要输入./程序名,相当于要强调“俺要运行当前目录下那个啥啥啥。。。”

  • 扯远了。。。总之上述完成后,我们就得到想要的表了,当然,窝打的表是分段的,拿来用之前需要先处理出它的前缀和,即打的表统计的是[1,1000000],[1000001,2000000],…各段的数量,我们真正需要的是比如[1,3000000]这样的形式,于是相当于需要前3项的和,又如[1,11000000]需要的是前11项的和,随便一提,前缀和就是前若干项和。。。

  • 然后就是下面的处理
/* **********************************************

  File Name: c.cpp

  Auther: zhengdongjian@tju.edu.cn

  Created Time: 2015年09月07日 星期一 21时35分52秒

*********************************************** */
#include <bits/stdc++.h>
using namespace std;

const int MAX_N = 300000007;
const int EVE = 1000000;
const int MAX_SQ = 20001;
const int MAX = 301;
/*
 * tab[1]: 1 ~ EVE
 * tab[2]: EVE + 1 ~ 2EVE
 * ..
 * tab[MAX-1]: (MAX-2)*EVE + 1 ~ (MAX-1)*EVE
 */
int tab[MAX] = {0, 39176, 35241, 33867, 33219, 32691, 32139, 31928, 31499, 31341, 31080, 30899, 30913, 30576, 30405, 30301, 30139, 30087, 30002, 29854, 29814, 29600, 29719, 29406, 29422, 29436, 29274, 29336, 29150, 29172, 29094, 29091, 28875, 28873, 28902, 28653, 28729, 28749, 28687, 28754, 28595, 28584, 28417, 28392, 28489, 28355, 28315, 28386, 28313, 28256, 28258, 28169, 28080, 28070, 28052, 28033, 28035, 27971, 28017, 27892, 27899, 27976, 27713, 27847, 27868, 27831, 27821, 27783, 27794, 27716, 27699, 27611, 27660, 27723, 27534, 27588, 27680, 27510, 27458, 27448, 27443, 27498, 27578, 27454, 27448, 27327, 27347, 27304, 27472, 27326, 27266, 27219, 27227, 27345, 27189, 27308, 27228, 27199, 27167, 27086, 27143, 27101, 27097, 27178, 27021, 27107, 27013, 26975, 27086, 27143, 27133, 26917, 27074, 26976, 26792, 26905, 26928, 26827, 26892, 26881, 26925, 26796, 26823, 26879, 26934, 26831, 26788, 26788, 26857, 26912, 26781, 26706, 26816, 26714, 26709, 26784, 26590, 26671, 26605, 26625, 26836, 26539, 26668, 26606, 26717, 26639, 26632, 26642, 26559, 26499, 26563, 26417, 26555, 26338, 26617, 26477, 26456, 26642, 26415, 26339, 26483, 26470, 26399, 26468, 26593, 26352, 26354, 26345, 26398, 26378, 26469, 26346, 26372, 26390, 26434, 26306, 26359, 26331, 26390, 26348, 26469, 26168, 26342, 26128, 26258, 26390, 26251, 26268, 26241, 26223, 26395, 25941, 26110, 26293, 26226, 26247, 26183, 26099, 26034, 26139, 26190, 26168, 26268, 26107, 26223, 26137, 26001, 26145, 26052, 25999, 26168, 26038, 26225, 26168, 26057, 26095, 26173, 26094, 25948, 25966, 25999, 25994, 26045, 26114, 25971, 26158, 25913, 26090, 25813, 25930, 25903, 25956, 26020, 26001, 25825, 25939, 25950, 26045, 25925, 26008, 25808, 26013, 25938, 25712, 25883, 25989, 25900, 25794, 25760, 25943, 25783, 25953, 25667, 25756, 25915, 25963, 25824, 25858, 25833, 25905, 25729, 25951, 25770, 25971, 25767, 25859, 25928, 25627, 25767, 25863, 25623, 25772, 25706, 25657, 25806, 25819, 25724, 25712, 25735, 25587, 25726, 25606, 25780, 25597, 25743, 25704, 25615, 25592, 25770, 25735, 25588, 25755, 25680, 25519, 25692, 25737, 25552, 25616, 25639, 25521, 25530};
int sq[MAX_SQ]; //square
bool is_prime[EVE + 1];
static int OFFSET;

//[1, n]
int gao(int n) {
    //printf("gao %d\n", n);
    int sum = tab[n / EVE];
    int bound = n / EVE * EVE + 1;
    if (bound > n) return sum;
    //printf("sum = %d, bound = %d\n", sum, bound);
    /* to-go: [bound, n], |n-bound|<EVE */
    memset(is_prime, true, sizeof(is_prime));
    if (bound == 1) is_prime[0] = false;
    for (int i = 2; i <= n / i; ++i) {
        for (int j = max(i, (bound + i - 1) / i) * i; j <= n; j += i) {
            is_prime[j - bound] = false;
        }
    }
    for (int i = 1; i < MAX_SQ; ++i) {
        for (int j = max(i, (int)(lower_bound(sq, sq + MAX_SQ, bound - sq[i]) - sq)); j < MAX_SQ; ++j) {
            int x = sq[i] + sq[j];
            if (x > n) break;
            if (is_prime[x - bound]) ++sum;
        }
    }
    return sum;
}

int main() {
    /* pre-fix */
    for (int i = 1; i < MAX; ++i) {
        tab[i] += tab[i - 1];
    }
    for (int i = 1; i < MAX_SQ; ++i) {
        sq[i] = i * i;
    }
    int le, ri;
    while (cin >> le >> ri) {
        cout << gao(ri) - gao(le - 1) << endl;
    }
    return 0;
}
  • 值得一提的是,你也可以选择如每100000分为一段的方式,这样表格会长一些,将有300000000100000=3000项,或许应该稍微格式化一下,比如每打印10项换一行,这样显得漂亮一些。。。
  • BTW,上面有一个小优化,就是考虑i2+[  ]2=t,bound≤t≤n时,固定i后,枚举第二项的大小,我们可以规定第二项≥i,进一步地,我们可以确定第二项的一个下限,即设第二项为j,则至少有i2+j2≥bound,也就是j2≥bound−i2,或者说sq[j]≥bound−sq[i]。
【稳定婚姻问题】poj3487 The Stable Marriage Problem 具体参见上篇博客。 都是类似的问题,不过我发现这类问题好像输入格式的控制会稍微难一点。 Gale-shapley的实现会相对简单很多。其中求loc部分其实也可以用map优化一下,否则我的实现是可能退化到O(n^3)的。 当然这问题规模实在是太小了,所以也就不需要优化。。。 #include #include #include #include #include #include 阅读详情

相关推荐

工业互联网工控安全与工业质检AI大模型建设方案.pptx

工业互联网工控安全与工业质检AI大模型建设方案.pptx

cf Educational Codeforces Round 86 C题

C. Yet Another Counting Problem time limit per test3.5 seconds memory limit per test256 megabytes inputstandard input outputstandard output You are given two integers a and b, and q queries. The i-th ...

Steve_Liu12399的博客 688

CS5523实战:如何用国产芯片完美替代LT8911设计MIPI转eDP电路(附原理图)

本文详细介绍了使用国产芯片CS5523完美替代LT8911进行MIPI转eDP电路设计的实战经验。文章从芯片选型、核心特性对比入手,深入剖析了电源时钟设计、MIPI/eDP接口的PCB布局与信号完整性要点,并提供了完整的原理图参考和调试排错指南,为硬件工程师实现国产化替代提供了清晰可行的方案。

yhn4567890的博客 1138

codeforces 113C C. Double Happiness(数论+暴力)

题目链接:codeforces 113C题目大意:找出在[l,r]中的素数t,满足t=a2+b2(a,b为任意正整数)t=a^2+b^2(a,b为任意正整数),输出这种素数的数量。题目分析: 首先筛出3⋅108所有为素数的奇数(偶数除了2都不可能是素数,为了节约内存)3 \cdot 10^8所有为素数的奇数(偶数除了2都不可能是素数,为了节约内存) 然后枚举范围内的每一个数,判断这个数是不是4*k

llin-黎辰 1976

离散系统傅里叶变换的常用结论证明

本文介绍了离散系统傅里叶变换的三个重要结论:1)时域卷积对应频域相乘(公式1-3);2)时域相乘对应频域卷积(公式4-6);3)帕塞瓦尔定理(公式7)及其广义形式,证明信号能量在变换域保持不变。文末提供了MATLAB卷积运算演示程序,通过动画展示离散信号卷积过程(翻转、平移、相乘、累加),并以方波信号为例给出运行结果图。该程序直观呈现了卷积运算的步骤与结果。

newtton的博客 1302

Zabbix在Ubuntu 22.04上的性能优化与监控实战:从基础安装到高级配置

本文详细介绍了在Ubuntu 22.04系统上部署和优化Zabbix监控系统的完整流程,从基础安装到高级配置。内容包括MySQL数据库设置、Zabbix服务器与Web前端优化、性能调优策略以及实战监控场景应用,帮助用户构建高效的企业级监控解决方案。

sss66的博客 893

0716-Bitset-CF Double Happiness

做了这道题就可以get一个新技能咯,就是传说中都没听过的bitset   1. 素数  【问题描述】            找出在[l,r]中的素数t,满足t=a^2+b^2(a,b为任意正整数),输出这种素数的数量。 【输入】            2个整数L,R 【输出】            答案 【输入样例】            6 66   【输出样例】          7  ...

Faithfully-xly的博客 227

台达伺服B3驱动器参数的设定和CN1的接法

3. B2的电子齿轮比是直接设定P1-44(分子)和P1-45(分母)就就可以的,但是B3的有个隐藏的细节,就是P1-44的默认值77216不用去更改,这是官方客服说的,需要改的是P1-45这个参数,比如说,我使用的丝杆螺距是5mm的,那么就是以5000脉冲走完5mm为一圈,则就把P1-45设定为5000即可;我的是三菱FX3S系列的PLC,是NPN型的,输出点是24V-作为信号的,所以接41、37,具体可参考B3的。,跟着客服的讲解操作才解决的,以下就是解决方法,希望能够帮到需要的各位。

qq_38681017的博客 1万+

toj2861_Divisors_线性时间内计算n前约数的总和

/C++long long int a[10]={0,1,3,5,8,10}; long long int f(long long int m) { if (m<=5) return a[m]; long long sum = 0; long long int i; for (i = 1; i*i <= m; ++i) { sum += m/

When you go away 1054

从理论到实践:全面解析Cmk(设备能力指数)的应用与优化

本文全面解析了设备能力指数Cmk的核心概念、计算逻辑与关键应用场景。Cmk作为衡量设备本身固有加工能力的黄金标准,在设备验收、大修后验证及过程能力根因分析中至关重要。文章通过实战案例,详细阐述了执行Cmk测试的“五大固定”黄金法则、数据计算分析方法,并提供了Cmk不达标时的系统性排查与优化策略,帮助制造企业实现预防性质量管理。

jump7的博客 519

基于 ESP32 的智慧图书馆图书定位与借阅管理系统

本文设计的基于 ESP32 的智慧图书馆图书定位与借阅管理系统,以低成本、模块化、易部署为核心优势,融合 UWB 精准定位、RFID 自动识别、WiFi 无线通信技术,解决了传统图书馆的痛点问题。

weixin_42300449的博客 99

【状压dp】poj2978 Colored stones

题意:给一个序列,每个数字代表一种颜色,表示一串彩色的石头,现在要从中拿走一些,使得剩下的石头中颜色相同的都连在一起,也就是颜色相同的部分中间不能插入其他颜色的石头。石头数m(原题是k) 我们从“拿走一些石头,使得剩下的石头数最多”逆向考虑。或者说,从原数字序列中选出一个子序列,使得子序列长度最长,并且满足上面的颜色要求。 可以定义:dp[i][j][k]表示前i个,以颜色j结尾,已经选取的

When you go away 1040

拉曼光谱入门:5.表面增强与共振增强

拉曼散射效应因其弱信号特性限制了传统拉曼光谱术的检测灵敏度。为克服这一局限,表面增强拉曼光谱术(SERS)和共振增强拉曼光谱术(RRS)被开发出来,显著提升了信号强度。SERS通过金属表面的电磁和化学效应放大信号,而RRS则通过匹配激发光波长与分子电子跃迁波长来增强信号。这两种技术扩大了拉曼光谱的应用范围,尤其在低浓度和微量试样分析中表现出色,尽管在实验操作和试样损伤方面存在挑战。

qq_53529450的博客 1446

[toj4087]m个不同的箱子放n种不同的球

首先有个三角关系: 1 1 1 1 3 1 1 7 5 1 1 15 17 7 1 .. 递推为f[i][j] = j*f[i-1][j] + f[i-1][j-1] 上述是第二类斯特灵数的地推关系 第二类斯特灵数描述的问题类似于:m个相同的箱子放n种不同的球,那么分法如上述. 如果箱子不同,那么先对箱子排列,所以答案为ans(n,m) = m! * f[n][m] 而本题就

When you go away 1030

2024 全国大学生新质生产力大赛 B:金融违规交易的大数据分析 问题四思路代码

问题四:请分析附件中所有的指标数据,选取合适的指标,建立“金融违规 洗钱交易的预测模型”,并选取合适的训练集和测试集,计算预测模型的准确率。 为了提前识别并预测金融违规洗钱的交易事件,请基于你们团队数据分析的结果, 分别给公安部门和银行机构提出你们的建议。

YOLO 374

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[BFS]HDU1044 Collect More Jewels

HDU1044 Collect More Jewels 代码数学公式 UML 图 离线写博客 浏览器兼容HDU1044 Collect More Jewels 两遍BFS,首先需要记录一下每个点到DEST的距离,然后就可以搜了。当然也可以直接A*搞一下,估值函数设为f(x)={dis<代码:#include <cstdio> #include <cstring> #include <cctype>

When you go away 1021

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【小结】最小费用流&最大权闭合图

最小费用流就是在保证流量FF的前提下,求解最少花费是多少的问题O_O{O\_O} 建图: 每条边在最大流基础上(to指向点,cap容量,rev反向边)\left(to指向点,cap容量,rev反向边\right),增加一个费用(cost)\left(cost\right) 求解方法: 在最大流中,是按照任意可行路径,也就是残余网络中的可增广路径,向网络中注入流量,从而在汇点获得相应流量的策略进行,直

When you go away 982

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【线性同余方程】toj2297&poj2115 C Looooops

题意:给出a,b,c,k,求x使得(a + x * c) % (2^k) = b. 上述方程即:a + x * c ≡ b(mod (2^k)) 左边的a需要化掉,因此两边同减a得到: x * c ≡ b (mod (2 ^ k)) - a(这里有点滥用同余表示法的味道,望见谅) 右边如果直接(b - a)(mod (2 ^ k))显然可能出现负值,等号就不满足了,为此加上(2 ^k)的若

When you go away 976

【稳定婚姻问题】hdu1522 Marriage is Stable

稳定婚姻描述的是一个非常有意思的问题,关于一个群体中婚姻的稳定性~ 具体可以搜索一下,这里不再介绍。 本题就脱胎于稳定婚姻问题,给出n名男孩和n名女孩,每个男孩对n名女孩有一个“喜爱列表”,越喜欢的处于列表的越前面。要求找出一个稳定的婚姻关系,使得所有人的婚姻关系都稳定。所谓“稳定”,就是指:对于两对夫妻关系A-a, B-b,不应该存在A更喜欢b且b更喜欢A的情形,否则他们就会出轨离婚! 解决

When you go away 974

【康托展开+状压BFS】poj1077 Eight(八数码问题)

The Cantor Expassion is something that help us to solve some problem about the numbers arrange. Besides, it can help to compress state(encode&decode), so that we can use BFS/DFS to solve those proble

When you go away 971

poj3233Matrix Power Series矩阵快速幂

/* * 思路:这题数据k<10^9,很显然需要O(log n)的算法,自然就是矩阵 * 快速幂.矩阵快速幂和快速幂差不多就是求矩阵A的k次方时,每次折半 * 类似于二分的思想,比如要求A的100次方,我们先求出A的50次方, * 然后用得到的结果平方就好了.试想如果要算16次方,每次折半,我们 * 只需要做4次矩阵乘法,但是如果采用朴素的连乘则需要15次,效率对比 * 可想而知.

When you go away 960

[简单dfs]poj1321棋盘问题

简单的dfs,开一个数组col[MAX]标记某一列是否已经被占用即可. 搜索时,依次尝试当前行

When you go away 942

位运算技巧

由于位运算是在二进制下进行的,所以他要比普通的加减乘除更快 左移一位相当于乘2 右移一位相当于整除2 和1相与相当于模2 (判奇偶) 小技巧:遍历用2进制数s表示的集合的所有子集时,for (i=s; i!=0; i=(i-1&s))即可

When you go away 922

toj3259[Mysterious Numbers]埃式筛法

3259.   Mysterious Number Time Limit: 1.0 Seconds   Memory Limit: 65536K Total Runs: 1267   Accepted Runs: 400 Mysterious Number refers to a number which can be divisible by the numbe

When you go away 915

[toj1003]Transportation

题意:给定0~m共m+1个城市(其中0为A城,m为B城),一列火车,容量一定。另有一些订单,每笔订单有起点,终点和人数。对于每笔订单,或者接收所有人,或者不接这笔订单,每笔收益为人数乘以乘车距离(如2 5 3,收益为3*(5-2)=9)。对于给定的block,求最大收益。 开始时没怎么想。但是数据非常小,订单数量不超过22,m不大于7.感觉暴搜可做,总共状态数是2^22≈400万,是可以接受的。

When you go away 912

【每日一水】[toj1093]Argus

1093.   Argus Time Limit: 0.5 Seconds   Memory Limit: 65536K Total Runs: 803   Accepted Runs: 394 A data stream is a real-time, continuous, ordered sequence of items. Some examples

When you go away 908
上一篇: 【toj1163】Gone Fishing
下一篇: 【三分】HDU3756 Dome of Circus
bit_line
博客等级 码龄12年 33粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值