洛谷 P2765 魔术球问题 (网络流 + 思维)

Dify工作流教程|以抓取网页并更新知识库为例详细讲解工作流编排过程(附DSL文件) {"name": "{新建的title变量}","text": "新建的content变量","indexing_technique": "high_quality","process_rule": {"mode": "automatic"}}有没有很痛苦,明明添加书签的网页,当你想阅读的时候,总是找不到或者好不容易找到了,发现网页404了。如果有个小工具,直接能把你输入的链接内容抓取下来,并且加入到你的知识库中,你说他香不香。无法获取授权的,也可以使用网页抓取工具,这个是免费的,抓取效果也可以。 阅读详情

题目链接

题意:

给你 n 根柱子,需要往上放小球,小球的编号从 1 开始(1,2,3 ...),要使得每两个相邻的球之和为平方数(4, 9, 16 ...),问最多可以放多少个小球。

题解:

从 1 开始,一个一个地加入小球,每个小球分为两个点,一个点由源点流向它,容量为 1 ,另一个点由它流向汇点,容量也为 1 。那么每次加入一个点,如果能够和之前加入的数构成平方数,则将这个数的第一个点连向新加入的点的第二个点。如果能够跑出来新的流,则说明不需要加柱子,否则需要加一个新的柱子。直到柱子加到 n + 1 为止,那么当前加入的球数减一即为答案。最后遍历一遍正向边然后遍历一遍所有加入的数输出路径即可。

代码:

#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <string>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <bitset>
using namespace std;

typedef long long ll;
#define int ll
#define INF 0x3f3f3f3f3f3f3f3f
#define MAXM 30000 + 10
#define MAXN 20000 + 10
const ll mod = 1e9 + 7;
#define P pair<int, int>
#define fir first
#define sec second

int n, m, k;
int dep[MAXN];
struct Edge{
    int next, to, dis;
}edge[MAXM<<1];
int cnt, head[MAXN];
queue<int> q;

void add(int from, int to, int dis)
{
    edge[++cnt].next = head[from];
    edge[cnt].to = to;
    edge[cnt].dis = dis;
    head[from] = cnt;
}

bool bfs(int s, int t)
{
    memset(dep,0x7f,sizeof(dep));
    while (!q.empty()) q.pop();
    dep[s] = 0;
    q.push(s);

    while (!q.empty()) {
        int now = q.front(); q.pop();
        for (int i = head[now]; i != -1; i = edge[i].next) {
            if (dep[edge[i].to] > INF && edge[i].dis) {
                dep[edge[i].to] = dep[now]+1;
                q.push(edge[i].to);
            }
        }
    }
    if (dep[t] < INF) return true;
    else return false;
}

int dfs(int now, int t, int limit)
{
    if (!limit || now == t) return limit;

    int flow = 0, f;
    for (int i = head[now]; i != -1; i = edge[i].next) {
        if (dep[edge[i].to] == dep[now] + 1 && (f = dfs(edge[i].to, t, min(limit, edge[i].dis)))) {
            flow += f;
            limit -= f;
            edge[i].dis -= f;
            edge[i^1].dis += f;
            if (!limit) break;
        }
    }
    return flow;
}

int Dinic(int s, int t)
{
    int maxflow = 0;
    while (bfs(s, t)) maxflow += dfs(s, t, INF);
    return maxflow;
}

void init()
{
    cnt = -1;
    memset(head, -1, sizeof(head));
}

bool judge(int x)
{
    int t = sqrt(x);
    if(t * t == x) return true;
    return false;
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    init();
    cin >> n;
    int now = 1, st = 0, ed = 20001, num = 1;
    add(st, 1, 1), add(1, st, 0);
    add(10001, ed, 1), add(ed, 10001, 0);
    while(now <= n) {
        num ++;
        add(st, num, 1), add(num, st, 0);
        add(10000 + num, ed, 1), add(ed, 10000 + num, 0);
        for(int i = 1; i < num; i ++) {
            if(judge(i + num)) {
                add(i, 10000 + num, 1), add(10000 + num, i, 0);
            }
        }
        int temp = Dinic(st, ed);
        if(temp == 0) now ++;
    }
    cout << num - 1 << endl;
    int nxt[MAXN] = {0};
    for(int i = 0; i < cnt; i += 2) {
        if(edge[i^1].to != st && edge[i].to != ed) {
            if(edge[i^1].dis) {
                nxt[edge[i^1].to] = edge[i].to - 10000;
            }
        }
    }

    bool vis[MAXN] = {false};
    for(int i = 1; i < num; i ++) {
        if(vis[i]) continue;
        int now = i;
        while(now) {
            cout << now << ' ';
            vis[now] = true;
            now = nxt[now];
        }
        cout << endl;
    }
}

/*

老实说,
要到几岁才开始不相信圣诞老人的存在……
这类无聊的话题对我而言,
根本不痛不痒的。
不过,
讲到我从几岁起开始不相信圣诞老人就是那个穿着红衣服的老公公时,
我能确定地说,
我根本打从一开始就不相信。
我知道幼稚园圣诞节庆祝会时出现的圣诞老人是假的,
回溯记忆,
还能记起周围的幼稚园小朋友都一脸不信任地望着假扮圣诞老人的园长老师。
即使没有撞见老妈正在亲吻圣诞老公公,
机灵的我也老早就怀疑只在圣诞节工作的老爷爷是否真的存在了。
不过,
我却是过了很久以后,
才发现外星人、幽灵、妖怪、超能力者以及特摄、动画里头,
那些与邪恶组织战斗的英雄们并不存在这世上。
不,
说不定我早就发现了,
只不过一直不想承认而已。
因为,
在我的内心深处,
是十分渴望那些外星人、幽灵、妖怪、超能力者以及邪恶组织突然出现在眼前的。
和我生活的这个普通世界相比,
特摄、动画里头所描绘的世界,
反而更有魅力。
我也想活在那种世界里!
我真的好想拯救被外星人绑架并关在透明的大型豌豆夹里头的少女…
也想拿着雷射枪运用智慧与勇气击退企图改写历史的未来人…
或者光用一句咒语就收拾了恶灵跟妖怪,
再不然就是和秘密组织的超能力者进行超能力的战斗!
等等,
冷静一下,
假设我被外星人、幽灵、妖怪、超能力者那类的生物袭击,
没有任何特殊能力的我怎么可能和他们对抗?
于是,
我便如是幻想 ——
某天,
班上突然转来一个谜样的转学生,
他其实是个外星人或未来人那类的生物,
并拥有未知的能力,
后来他跟坏人战斗,
而我只要设法让自己被卷进那场战争就好了。
主要战斗的人是他,
而我则是追随他的小跟班。
啊啊,
实在太棒了,
我真是聪明啊!
要不然就是这样。
某天,
我那不可思议的力量突然觉醒,
就像隔空取物或精神念力之类的。
而且地球上其实还有很多拥有超能力的人类存在,
自然也会有一个组织专门收容这些人。
不久之后,
善良的组织便派人来迎接我。
而我也成为组织的一员共同对抗企图征服世界的邪恶超能力者。
不过,
现实却是意外地残酷。
现实的生活中,
并没有半个转学生转来我班上,
我也没看过UFO…
就算去了地方上常出现幽灵或妖怪的灵异地点也连个鬼影都没有…
花了两小时盯着桌上的铅笔,
它却连一微米都没移动…
上课时死盯着前座同学的头,
却怎么样也无法读出他在想什么。
我就这样边惊叹世界物理法则经常出现的现象,
边不停自嘲,
不知从何时起,
我就开始不看电视上的UFO特别节目或灵异节目了。
因为不可能会有那种东西……
不过后来我也成长到仅对那方面的事情存有一丝留恋的程度。
国中毕业之后,
我便从那孩提时代的梦想毕业,
逐渐习惯这个世界的平凡。
而让我还有一缕期待的一九九九年也没有发生什么事。
进入二十一世纪后,
人类依旧无法迈出月球到其他星球去。
看这情况,
在我还活着的时候,
想从地球当天往返阿尔法人马座似乎是不太可能的。
我脑海中时而幻想着这些事,
终于也没啥感慨地成为高中生 —— 直到遇到了凉宫春日。
之后,
我就这么糊里糊涂地进入学区内的县立高中就读。
起初我还很后悔,
因为这座学校位于很高的山上,
就算是春天也要挥汗如雨地爬上直窜山顶的坡道,
想轻松健行的那份悠闲早已消失无踪。
一想到今后三年每天一大早都得这样爬山,
我的心情就阴郁无比。
或许是早上差点睡过头的关系,
走路的速度自然加快许多,
虽然也曾想过以后干脆早十分钟起床,
慢慢走去上学就不会这么累,
不过一想到临起床前的那十分钟睡眠是多么的宝贵,
我随即放弃了这个念头。
所以,
我相信未来的三年还是得持续这个晨间的运动。
一想到这里,
心情就更沉重了。

*/

 

4D毫米波雷达:高度信息与微多普勒效应 4D毫米波雷达:高度信息与微多普勒效应​ ,人工智能,计算机视觉,大模型,AI,本文深入解析4D毫米波雷达的高度信息获取与微多普勒效应。4D毫米波雷达通过MIMO技术、垂直天线布局及相位差计算等获取高度信息,相较传统雷达更精准。微多普勒效应由目标微运动引发,可用于目标识别、分类和运动监测。文中结合自动驾驶、安防监控案例,分析技术挑战与未来趋势,如信号干扰、数据处理复杂,未来将向高精度、与其他传感器融合发展,展现出在多领域的巨大应用潜力。 阅读详情

相关推荐

MOSFET热失效机理与保护电路设计:实战案例

深入解析MOSFET工作原理及其在高温下的失效机制,结合实际案例探讨有效保护电路设计,提升系统可靠性与安全性。

weixin_28713083的博客 850

【Java】A乘积—方法:BigInteger—(OJ:牛客-练习赛54)

链接:https://ac.nowcoder.com/acm/contest/1842/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 记 ,即二进制表示下后i位为1,其余位为0的数。给定一个正整数n,求。 输出答案对998244353取模后的结果。T组数据。 输入描...

weixin_43785855的博客 587

【TC3xx芯片】TC3xx芯片电源管理系统PMS详解

本文主要介绍了TC3xx芯片的电源管理系统(PMS),重点探讨了供电模式选择、电源监控机制及电源管理模式。文章首先分析了4种供电模式及其硬件配置方式,详细说明了3.3V单电源供电模式的特点;其次阐述了Primary和Secondary两种电源监控机制,包括阈值配置和异常中断处理;最后重点讲解了CPU和系统的电源管理模式,特别对Standby模式及其进入/退出条件进行了详细说明。文章以软件开发视角解析了TC3xx芯片的电源管理功能,为ECU低功耗设计提供了技术参考。

redparrot2008的博客 1526

Squares (AtCoder Regular Contest 125)(枚举+思维)

传送门 题意 给你一个正整数N,找出有多少个整数对(x,y),满足如下条件,答案对998244353取模 1 <= N <= 1012 1<= x,y <=N. x*x-y是一个完全平方数.(此处0也是完全平方数) 思路 x2 - y = z2 x2 - z2 = y (x - z)(x + z) = y 设 l = x - z, r = x + z 由题意知z >= 0, 又由上式可知, 1 <= l <= sqrt(n),l <= r <=

QQ2530063577的博客 435

基于docker进行安装部署seata,解决Seata的版本与Nacos的版本不匹配

本文分享了在Docker环境下部署Seata时遇到Nacos 3.x API不兼容问题的解决方案。由于Seata 2.0.0内置的nacos-client 1.4.2无法调用Nacos 3.x重构后的接口,导致注册失败。通过下载Seata 2.6.0源码自行构建Docker镜像,并调整启动方式(直接执行Java命令绕过Shell脚本),最终成功实现与Nacos 3.x的集成。关键步骤包括:创建自定义Dockerfile、配置application.yml、处理启动脚本兼容性问题,最终采用java直接运行方案

Dd52698的博客 406

SAP SD POD 配置与 VLPOD 操作:3步解决发货10件开票7件的业务场景

本文详细解析了SAP SD POD功能在解决发货与开票数量差异中的应用,通过3步配置法实现精准匹配。重点介绍了POD核心逻辑、关键配置步骤及VLPOD操作技巧,帮助企业高效处理易损品运输等复杂场景,提升供应链管理效率。

weixin_30613343的博客 394

【Python】取火柴小游戏(巴什博弈)

当我们想要玩一个简单而有趣的游戏,同时又想锻炼自己的编程技能时,一个经典的选择就是火柴游戏。这个游戏的规则很简单:有一堆火柴,每次可以拿走1到6根,两名玩家轮流取火柴,拿到最后一根的玩家获胜。在本篇博客中,我们将使用Python来模拟和玩这个火柴游戏。

cout0 1509

workbench拓扑优化教程_拓扑优化实例-轮毂的优化

拓扑优化实例-轮毂的优化ANSYS Workbench的新版本集成了topology optimization模块,为用户的拓扑优化提供的很好的应用。通过拓扑优化topology optimization模块的使用可以对拓扑有较好的理解,该模块拓扑优化可以简单概括为一句话:如何在合适的位置去除确定的材料使用量,而相应的刚度变化影响最小。本例以汽车轮毂为例,来确定轮毂的辐条形状。1.建立模型DM中可...

weixin_39581739的博客 3043

2024 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第六届CCPC河南省大学生程序设计竞赛

对于小A而言,数位包含1∼9,并且至少两个数位是d(1≤d≤9)的.十.进.制 .正 .整 .数都是幸运数。当d=3时,显然1234567890123 是小 A 的幸运数,但987654321 因为数位 3 仅出现了一次而不是幸运数,998244353 因为缺少数位 1,6,7 而不是幸运数。现在小A有一个正整数n,并给出正整数d。他想找到正整数k使得二者的乘积n·k是幸运数。你能用计算机辅助他的计算吗?

2302_80423900的博客 2864

C#实战:如何用winmm.dll打造毫秒级高精度定时器(附完整代码)

本文详细介绍了在C#中利用winmm.dll实现毫秒级高精度定时器的完整方案。针对.NET内置定时器精度不足的问题,通过调用timeSetEvent等原生API,提供了超越系统时钟中断周期的精准定时能力。文章包含核心原理剖析、完整的封装类代码以及音视频处理、游戏开发等场景下的实战应用与性能调优指南。

ujm5678901的博客 690

Nginx的启动、停止与重启命令(非yum方式安装)图解版

目录一、Nginx启动二、Nginx停止的三种方式2.1、第一种方式(从容停止)2.2、第二种方式(快速停止)2.3、第三种方式(强制停止)三、Nginx重启3.1、首先,验证nginx配置文件是否正确3.1.1、验证nginx配置文件(方法一)3.1.1、验证nginx配置文件(方法二)3.2、最后,重启Nginx服务3.2.1、重启Nginx服务(方法一)3.2.2、重启Nginx服务(方法二) 一、Nginx启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 /usr/loc

小志的博客 6851

单点修改&区间求和

题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某一个数加上xx 求出某区间每一个数的和 输入格式 第一行包含两个正整数n,mn,m,分别表示该数列数字的个数和操作的总个数。 第二行包含nn个用空格分隔的整数,其中第ii个数字表示数列第ii项的初始值。 接下来mm行每行包含33个整数,表示一个操作,具体如下: 1 x k含义:将...

AlanJobs的博客 873

MacBook 长期挂机 OpenClaw:电池保护 + 防休眠设置

本文介绍了MacBook长期挂机运行OpenClaw时的电池保护和防休眠设置方案。主要内容包括:1)电池保护策略,通过电源连接、充电限制和定期充放电维护电池健康;2)防休眠设置,禁用系统休眠、自动休眠和屏幕休眠;3)OpenClaw的Docker部署方法。文章提供了详细的命令行脚本和配置说明,帮助用户实现MacBook的长期稳定运行,同时保护电池寿命。

一键难忘的博客 1695

蓝魔法师

链接:https://www.nowcoder.com/acm/contest/215/C 来源:牛客网   题目描述 “你,你认错人了。我真的,真的不是食人魔。”--蓝魔法师   给出一棵树,求有多少种删边方案,使得删后的图每个连通块大小小于等于k,两种方案不同当且仅当存在一条边在一个方案中被删除,而在另一个方案中未被删除,答案对998244353取模 输入描述: 第一行两个整数n...

海绵的博客 477

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

斐波那契数列 矩阵快速幂

斐波那契

weixin_43578474的博客 2238

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

PTA 2 斐波那契数列(II)

已知斐波那契数列Fn​=Fn−1​+Fn−2​(n>=3),F1​=1,F2​=1 求解该数列的第n项,结果对998244353取模。 输入格式: 输入一个正整数n(1<=n<=10000000)。 输出格式: 输出一个数,数列的第n项 输入样例1: 1 结尾无空行 输出样例1: 1 结尾无空行 输入样例2: 3 结尾无空行 输出样例2: 2 结尾无空行 #include<stdio.h> #define N_max 99824..

我的博客 1452

【洛谷】P1247 取火柴游戏(nim博弈+推论)

题目描述 输入kk及kk个整数n_1n1​,n_2n2​,…,n_knk​,表示有kk堆火柴棒,第ii堆火柴棒的根数为n_ini​;接着便是你和计算机取火柴棒的对弈游戏。取的规则如下:每次可以从一堆中取走若干根火柴,也可以一堆全部取走,但不允许跨堆取,也不允许不取。 谁取走最后一根火柴为胜利者。 例如:kk=22,n_1n1​=n_2n2​=22,AA代表你,PP代表计算机,若决定AA先取: AA:(2,2)(2,2)→(1,2)(1,2){从一堆中取一...

_C9的博客 862

P1247 取火柴游戏

题目描述 输入k及k个整数n1,n2,…,nk,表示有k堆火柴棒,第i堆火柴棒的根数为ni;接着便是你和计算机取火柴棒的对弈游戏。取的规则如下:每次可以从一堆中取走若干根火柴,也可以一堆全部取走,但不允许跨堆取,也不允许不取。 谁取走最后一根火柴为胜利者。 例如:k=2,n1=n2=2,A代表你,P代表计算机,若决定A先取: A:(2,2)→(1,2) {从一堆中取一根}

ztz11的博客 717

洛谷 P1247 取火柴游戏 题解

题目大意:太简单了相信大家都看得懂,那就不讲了吧其实这题是Nim游戏这个博弈论模型的裸题,你只要知道Nim游戏是什么,这题根本不难做,比较难处理的就是输出先手必赢时第一步应该怎么走,因为Nim游戏的结论是当a1^a2^……^an=0时,后手必赢,那这种先手必赢的情况,一定只需要在某一堆取完之后使得a1^a2^……^an=0即可,那这怎么求呢,那我们可以像后手必赢局势时后手的走法一样就可以了(你问我...

a_forever_dream的博客 493

(博弈/nim)取火柴游戏

给出n堆火柴,两人轮流取,标准nim博弈 要求输出先手必胜时第一次操作的火柴数目及位置后操作后的火柴数目 #include &amp;lt;bits/stdc++.h&amp;gt; using namespace std; typedef long long ll; const int maxn = 500000 + 10; int a[maxn]; int main() { int n; s...

weixin_40588429的博客 899

取火柴游戏||Nim博弈

好久之前看的sg函数了 好像就记住一个nim博弈qwq 第一次啊看的时候很迷,现在感觉可以了qwq 首先我们来看一个其他的游戏。(以下游戏只有两个人参与,且足够聪明) 两个人在一张圆形的桌子上放等大的盘子,最后一个无法放盘子的人输掉比赛 很显然,先手必胜。 为什么? 第一个人可以将盘子放在桌子的中心。 然后只要第二个人可以放置盘子,我们就在其中心对称的位置上放盘子。 如此,只要后手可以放,我先手...

weixin_34205076的博客 350

取火柴-博弈论

取火柴 (10分)C时间限制:3000 毫秒 | C内存限制:3000 Kb题目内容: 有n个火柴棍,两个游戏玩家a和b轮流取,规则是第一次取的人最少取1根,最多取n-1根,随后每人最多只能取对方上一次取的数目 的2倍,最少取1根。谁取到最后一根为胜者。试问先取的人是赢还是输。 输入描述n输出描述1表示胜,0表示输输入样例3输出样例0 解析:回溯。 转载于:https://www.cnbl...

weixin_30378623的博客 457

【尼姆博弈】洛谷P1247

**题目链接:**https://www.luogu.org/problem/P1247 #include<iostream> #include<cstdio> #include<string> #include<string.h> #include<cstring> #include<algorithm> #include&...

寻找秀儿的博客 233

博弈知识汇总 && 取火柴游戏

博弈知识汇总 有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。 (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最...

weixin_33878457的博客 339

P1247 取火柴游戏 博弈论

题目 输入k及k个整数n1,n2,…,nk,表示有k堆火柴棒,第i堆火柴棒的根数为ni;接着便是你和计算机取火柴棒的对弈游戏。取的规则如下:每次可以从一堆中取走若干根火柴,也可以一堆全部取走,但不允许跨堆取,也不允许不取。 谁取走最后一根火柴为胜利者。 例如:k=2,n1=n2=2,A代表你,P代表计算机,若决定A先取: A:(2,2)→(1,2) {从一堆中取一根} P:(1,2...

117瓶果粒橙 839

【博弈论Nim】P1247 取火柴游戏

思路:在该题中,如果游戏一开始处于平衡态,那么先取必败,输出lose; 如果游戏一开始处于非平衡态,那么先取必胜,剩下就是考虑怎么取了 就第一个样例而言,3^6^9的结果是12,12^3=15(3不能变到15),12^6=10(6不能变到10),12^9=5(9-4=5) 这是从样例中猜出来的判别方法 仔细一想确实这个样子,12^9是除了第3堆所有堆火柴的异或和,记为y,设新第...

iroy33的博客 754
上一篇: 南昌网络赛 Max answer(单调栈 + 线段树维护前缀和最大最小值)
下一篇: POJ-1149 PIGS (网络流巧妙建图)
ttoobne
博客等级 码龄9年 13粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值