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

Oracle EBS GL日记账批“选定以过账”状态数据修复 日记账来源:应收账款。用户操作过账以后,自动提交请求“过账:单一分类账”一直运行中,该请求执行5,6个小时甚至10多个小时无法完成,导致“标准管理器”阻塞大量请求待定,“冲突解决管理器”的待定数量不断增加。系统管理员不得不把该请求强制取消,此时,日记账批的状态处于“选定以过账”(GL_JE_BATCHES.STATUS为S),如下图 检查此日记账批有3千多条日记账题头,由于日记账比较多,日记账的科目余额计算需要大量服务器资源和执行时间比较长。 阅读详情

题目链接

题意:

给你 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特别节目或灵异节目了。
因为不可能会有那种东西……
不过后来我也成长到仅对那方面的事情存有一丝留恋的程度。
国中毕业之后,
我便从那孩提时代的梦想毕业,
逐渐习惯这个世界的平凡。
而让我还有一缕期待的一九九九年也没有发生什么事。
进入二十一世纪后,
人类依旧无法迈出月球到其他星球去。
看这情况,
在我还活着的时候,
想从地球当天往返阿尔法人马座似乎是不太可能的。
我脑海中时而幻想着这些事,
终于也没啥感慨地成为高中生 —— 直到遇到了凉宫春日。
之后,
我就这么糊里糊涂地进入学区内的县立高中就读。
起初我还很后悔,
因为这座学校位于很高的山上,
就算是春天也要挥汗如雨地爬上直窜山顶的坡道,
想轻松健行的那份悠闲早已消失无踪。
一想到今后三年每天一大早都得这样爬山,
我的心情就阴郁无比。
或许是早上差点睡过头的关系,
走路的速度自然加快许多,
虽然也曾想过以后干脆早十分钟起床,
慢慢走去上学就不会这么累,
不过一想到临起床前的那十分钟睡眠是多么的宝贵,
我随即放弃了这个念头。
所以,
我相信未来的三年还是得持续这个晨间的运动。
一想到这里,
心情就更沉重了。

*/

 

使用Python爬取在线图书馆的图书馆藏和阅读记录 通过使用Python编写爬虫程序,我们可以从在线图书馆上获取图书馆藏和阅读记录,帮助人们更好地管理和利用图书馆资源。本文简要介绍了爬虫程序的准备工作、网页解析和数据提取、数据的保存和处理的关键步骤,并提供了一个示例代码。在实际应用中,我们需要注意遵守在线图书馆的使用规则和爬虫道德准则,确保合法、合规地进行爬取操作。以上仅为概述,实际应用的过程中可能需要根据具体需求进行适当的调整和改进。 阅读详情

相关推荐

汇总药用数据库(Pubchem,bingdingDB,Chembl,ExcapeDB)数据

记载一下如何汇总4大数据库的数据

recher_He1107的博客 3394

【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

Truncated SVD for faster dection

Truncated SVD方法最先被提出在《Fast R-CNN》论文中,用于降低全连接层的运算量,提升模型的速度。在卷积神经网络的分类任务中,FC层的运算速度远远大于CONV层,而在Fast R-CNN的目标检测任务中,大多数的运算时间发生在FC 的运算中,是因为针对每张输入图片,只进行一次卷积操作,而要对生成的Region Proposal,大致两千个,进行全连接操作进行分类与Bounding...

weixin_35747666的博客 1535

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

AI训练加速30%!用numactl玩转多显卡绑核的隐藏技巧

本文深入探讨了如何利用Linux系统的numactl工具,通过精确的NUMA绑核策略优化多GPU AI训练性能。文章详细解析了NUMA架构对性能的影响,提供了从拓扑探查、命令实战到多卡脚本化部署的完整指南,并分享了性能验证与常见陷阱,帮助开发者实现高达30%的训练加速。

web99的专栏 448

UE5摄像机抖动全攻略:从Perlin噪点到Sequence实战(附参数调优技巧)

本文深入解析UE5摄像机抖动技术,从Perlin噪点算法到CameraShakeBase蓝图应用,再到Sequence高级控制,提供全面的参数调优技巧。涵盖战斗、爆炸等场景的预设参数,帮助开发者实现专业级抖动效果,提升游戏沉浸感。

weixin_30300225的博客 95

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

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

cout0 1509

STM32与HT7038的高精度电能计量系统设计与实现

本文详细介绍了基于STM32微控制器与HT7038三相电能计量芯片的高精度电能计量系统设计与实现。文章从项目选型出发,深入剖析了硬件电路设计、SPI驱动开发、芯片校准及系统集成等关键环节,为智能电表、能源监控等应用提供了高性价比且稳定的国产化解决方案。

pytorch8learner的博客 389

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

SpringBoot实战教程-springboot概论

Spring Boot 是一个快速开发框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,以及自动配置。内置web容器,帮助开发者能够实现快速开发,简化了应用系统的初始搭建以及开发过程。

鸟哥哥的专栏 4155

Classic AUTOSAR精讲专栏目录

欢迎大家来到钢琴上的汽车软件创建的《Classic AUTOSAR精讲系列专栏》,期待在这里能够与大家一起进步,分享成功,分享喜悦!下面蓝色的文章标题都是传送门,点击直接跳转到对应文章。

酒无忧的博客 3905

单点修改&区间求和

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

AlanJobs的博客 873

2、集中式MIMO雷达研究进展:正交波形设计与信号处理

集中式多输入多输出(Multiple Input Multiple Output,MIMO)雷达通常利用正交波形增加发射波形 自由度,采用数字阵列拓展空间收发自由度,使得雷达接收机的天线孔径获得明显扩展,最终带来空间分辨率、 测角精确度、杂波抑制能力等大幅度提升。但是,这些性能提升的前提是发射波形具有正交特性。事实上,在 实际应用中,在不牺牲时域/频域资源情况下,受限于时宽带宽积,无法获得完全正交的波形集合,从而限制了 MIMO雷达系统性能。本文对集中式MIMO雷达正交波形复用的技术原理进行了系统回顾,分别

qq_43416206的博客 2772

蓝魔法师

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

海绵的博客 477

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

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

斐波那契数列 矩阵快速幂

斐波那契

weixin_43578474的博客 2238

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【洛谷】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、付费专栏及课程。

余额充值