RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

全部问题

Martin Hope
AnnaBazueva - SPAM
Asked: 2024-08-03 07:16:56 +0000 UTC

两种情况下编译不定长度字典

  • 8

一道简单的数学题!

在一个班级中,每个学生都与另外六个学生是朋友,
并且任何两个学生都有两个共同的朋友。
这个班有多少名学生?

技术规格:

该脚本应根据任务条件编译好友词典。

键是学生的姓名,值是学生好友的姓名序列。
班级里没有同名的学生。

一旦满足任务条件,字典的编译就会停止。

该算法不应依赖于班级中预定的学生数量。

输入:

from datetime import datetime

names = {'Лёша', 'Влад', 'Миша', 'Вова', 'Саня', 'Коля',
         'Дима', 'Толя', 'Ваня', 'Петя', 'Олег', 'Сеня',
         'Лёня', 'Егор', 'Витя', 'Стас', 'Глеб', 'Илья',
         'Женя', 'Вика', 'Нина', 'Анна', 'Соня', 'Рита',
         'Лика', 'Маша', 'Лиля', 'Роза', 'Таня', 'Надя',
         'Алла', 'Даша', 'Кира', 'Лена', 'Тоня', 'Люда',
         }

friends = {}

输出:

Каждый ученик дружит ровно c шестью другими,
и у любых двух учеников есть ровно два общих друга?

Результат проверки: True .

Словарь составлен за 0:00:00.004601 ms.

В классе 16 учеников.

^^^^^^^
我的字典是用 编译的4601 ms,但是数据量这么小,速度很慢。
这是由于对任务条件的遵守情况进行了大量检查。
我将在 2024 年 8 月 9 日晚上发布我的决定作为答案。

测试:

from functools import reduce


def checking(friends) -> bool:
    """Функция проверяет словарь на соответствие условиям задачи.
    Тёски среди учеников приведут к неверной оценке.
    """

    return (
        (
            set(friends.keys())
            ==
            reduce(lambda x, y: set(x) | set(y), friends.values())
        )
        and
        (
            all((len(v) == 6 for v in friends.values()))
        )
        and
        (
            all((all((2 == len(set(val) & set(v))
                      for v in friends.values()
                          if v != val)
                     )
                 for val in friends.values()
                 )
                )
        )
    )


print(f'Каждый ученик дружит ровно c шестью другими,\n'
      f'и у любых двух учеников есть ровно два общих друга?\n\n'
      f'Результат проверки: {checking(friends)} .')

print(f'Словарь составлен за {end - start} ms.\n')

print(f'В классе {len(friends)} учеников.\n\n')

评估解决方案的标准

重量递减:

  1. 执行时间(因为检查条件是最昂贵的部分)
    算法不应依赖于预先已知的学生数量;
  2. 依赖项(使用第三方库应该在步骤1中生效)

目标:

获得替代解决方案,找到最佳技术。


如果有人想成为赞助商,
你可以宣布一场比赛,这是欢迎的。

python
  • 2 个回答
  • 376 Views
Martin Hope
Angelina
Asked: 2024-08-01 20:43:17 +0000 UTC

如何在图表中靠近反向边缘的地方指定两个不同颜色的箭头?网络x,Python

  • 8

我试着把反面的肋骨做成不同的颜色。但我不能 =( 现在如果你看一下图表,边 AL 和 LA 的颜色相同:

图形

如何使一个方向的反向边缘(例如,蓝色)和相反方向的橙色?而且筋条的厚度还取决于筋条的重量。我想保留直肋骨,它们的颜色和线条也有所不同。

使用networkx、matplotlib.pyplot、matplotlib.patches、python 我的代码:

#Визуальное разделение прямых и обратных ребер
connectionstyle = []
edge_colors=[]
 
for v,u in G.edges():
    if G1.has_edge(v,u):
        connectionstyle.append('arc3, rad=0')
        edge_colors.append('#000000')
    else:
        connectionstyle.append('arc3, rad=0.4')
        edge_colors.append('#4682B4')

#Выводим основной график
Arrow = mpl.ArrowStyle.CurveB(head_length=0.3, head_width=.4) #стиль стрелки
pos = nx.shell_layout(G) #расположение нодов
 
fig, ax = plt.subplots(figsize=(8,7))
edges = nx.draw_networkx_edges(G, pos, node_size=200, arrowsize=15, arrowstyle=Arrow, width=width)
 
#Стиль отображения узлов
for p in pos:
    if pos[p][0] < 0:
        pos[p][0] -= 0.02
        plt.text(pos[p][0],pos[p][1],s=p, bbox=dict(facecolor='#87CEFA', edgecolor='None', alpha=0.5),
             horizontalalignment='right', fontsize=11)
    else:
        pos[p][0] += 0.02
        plt.text(pos[p][0],pos[p][1],s=p, bbox=dict(facecolor='#87CEFA', edgecolor='None', alpha=0.5),
             horizontalalignment='left', fontsize=11)
 
#Отображение весов ребер
edge_labels = nx.get_edge_attributes(G2,'weight')
 
#Задаем параметры отображения линий, т.е. прямых и обратных ребер:
M = G.number_of_edges()
for i in range(M):
    edges[i].set_connectionstyle(connectionstyle[i])
    edges[i].set_color(edge_colors[i])
    edges[i].set_alpha(0.7)
 
 
#Выводим текстом инф о прямых ребрах:
xmin, xmax = ax.get_xlim()
ymin, ymax = ax.get_ylim()
 
s = ' \n'.join([v+'-->'+u+'  '+str(w['weight']) for v,u,w in G1.edges.data()])
plt.text(1.4,-0.2, s='Прямые ребра \n\n'+s, 
         bbox=dict(facecolor='#87CEFA', edgecolor='None', alpha=0.8),
         fontsize=11, horizontalalignment='center', color='white')
 
plt.tight_layout()
plt.axis('off')
plt.savefig('net2.svg')
plt.show()
python
  • 1 个回答
  • 37 Views
Martin Hope
Kamran Pulatov
Asked: 2024-07-21 05:26:41 +0000 UTC

SQLalchemy 2.0 监听事件并处理列更改

  • 8

大家好,我有一个模型表:

class User(Base):
    username: Mapped[str] = mapped_column(String(1_000), unique=True)
    email: Mapped[str] = mapped_column(unique=True, nullable=True)
    password: Mapped[str]
    is_active: Mapped[bool] = mapped_column(default=True)
    is_verified: Mapped[bool] = mapped_column(default=False)

我需要确保当电子邮件字段更改时,is_verified 字段自动更改为 False

python
  • 1 个回答
  • 52 Views
Martin Hope
DumbSalmon
Asked: 2024-07-18 00:07:52 +0000 UTC

输入浮点数时一切都会中断

  • 8

我最近开始学习C。我正在用循环解决一个问题。当输入浮点数时,一切都会中断,循环无法结束,当输入整数时,一切都很好

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <locale.h>
#pragma warning(disable:4996)

int main()
{
    setlocale(LC_ALL, "Russian");
    int number = 0;
    float start_balance, whole_sum_wastes, whole_credit_sum, max_credit, balance;
    while (number != -1)
    {
        printf("Введите номера счёта (-1 если ввод закончен):\n");
        scanf("%d", &number);
        printf("Введите начальный баланс:\n");
        scanf("%f", &start_balance);
        printf("Введите общую сумму расходов:\n");
        scanf("%f", &whole_sum_wastes);
        printf("Введите общую сумму кредита:\n");
        scanf("%f", &whole_credit_sum);
        printf("Введите предельный размер кредита:\n");
        scanf("%f", &max_credit);
        printf("Счёт: %d\n", number);
        printf("Предельный размер кредита: %f\n", max_credit);
        balance = start_balance + whole_sum_wastes - whole_credit_sum;
        printf("Баланс: %f\n", balance);
        if (balance > max_credit)
            printf("Предельный размер кредита превышен\n");
        else
            printf("Предельный размер кредита не превышен\n");
    }
}
c++
  • 1 个回答
  • 61 Views
Martin Hope
Роман
Asked: 2024-07-08 18:40:49 +0000 UTC

Frog 的动态规划问题

  • 8

我有一个无法解决的问题。看起来这个任务看起来像是一个 DP 任务。我就是这样解决的。

int main() {

long long n; cin >> n;
vector<long long> kuv;
kuv.push_back(0);
for(long long i = 1; i < n + 1; i++){
    kuv.push_back(0);
    cin >> kuv[i];
    //  cerr << kuv[i] << " ";
}
//  cerr << "\n" << n << " " << n +2 << "  ----------\n";
long long x, y; cin >> x >> y;
vector<long long> te (n + 2, -1);
//  cerr << "------------" << size(te) << " --------\n";
te[0] = 0;

for(long long i = 0; i < n + 2; i++){
    for(long long j = i+x; ((j < (i + y)) &&  (j < n+1)); j++){
        // cerr << i << " " << j << "\n";
        // cerr << te[j] << " ";
        // cerr << te[i] << " ";
        // cerr << kuv[j] << "\n";
        te[j] = max(te[j], te[i]+ kuv[j]);
    }
}
/*
for(int i = 0; i < n+2; i++){
    cout << te[i] << " ";
}
 */
cout << te[n];




return 0;

}

但它给出了 TL。我无法想象还有哪些地方可以优化。这是任务本身:

从前,在一片茂密的森林里,住着一种特殊的青蛙,名叫青蛙。他具有令人难以置信的能力,可以向前跳跃整个数量的单元格,但有一个限制:她的跳跃长度只能是从 X X 到 Y Y 单元格(包括两个边界)。青蛙梦想征服森林中最长、最神秘的小路——从起点到终点。

有一天,青蛙发现自己面前有一长段N个N个细胞,每个细胞里都有一定的数字。这些数字代表了一张神秘的地图,显示了青蛙在每个转弯处可能会得到什么奖励。青蛙意识到,为了实现他的梦想,他需要选择一条能让他收集最多宝藏的道路。

青蛙就这样开始了他的奇妙旅程。最初,他站在0号牢房里。对他来说,重要的不仅是到达终点,而且一路上收集到最大的金额。

你不能跳回来。跳跃长度是最终坐标和初始坐标之间的差值。如果青蛙在单元格 1 中,X X = 2,Y Y = 5,那么在 1 次跳跃中,您最终可以到达单元格 3、4、5、6。

输入格式 在第一行中输入数字 N N ( 1 ≤ N ≤ 4 * 1 0 5 1≤N≤4*10 5 ) − − 路径上的单元格数量。在第二行中,以空格分隔,输入数字 a i a i ​ ( 1 ≤ a i ≤ 1 0 9 1≤a i ≤10 9 ) − − 青蛙通过此单元格将收到的宝藏数量。在第三行中,输入两个数字 X X 和 Y Y,以空格分隔 ( 10 ≤ X ≤ Y ≤ 1 0 5 10≤X≤Y≤10 5 ) − − 跳转的最小和最大长度。

输出格式 在一行中,打印从路径的第一个单元格走到最后一个单元格可以获得的最大宝藏数量。如果无法跳转到终点,则输出-1。

示例 1 输入 输出 10 6 2 2 2 8 3 9 1 2 1 10 100000 1 示例 2 输入 输出 11 5 6 4 7 6 2 9 7 2 2 7 12 13

c++
  • 1 个回答
  • 86 Views
上一页
下一页

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5