小编Vla*_*eev的帖子

问题:鲍勃的销售

注意:这是关于在SWF文件中排序记录的现实问题的抽象重写.解决方案将帮助我改进开源应用程序.

鲍勃有一家商店,想要出售.他的商店里有很多产品,每种产品都有一定数量的单位库存.他还有许多货架价格标签(与产品数量一样多),价格已印在他们身上.他可以在任何产品上放置任何价格标签(该产品的整个库存的一件商品的单一价格),但是某些产品有额外的限制 - 任何此类产品可能不比某个其他产品便宜.

您必须找到如何安排价格标签,以便所有Bob的商品的总成本尽可能低.总成本是每个产品的分配价格标签的总和乘以库存中的产品数量.


鉴于:

  • N - 产品数量和价格标签
  • 小号,0≤ <N -与指数产品的库存数量(整数)
  • P Ĵ,0≤ Ĵ <N -价格标签上的价格与指数Ĵ(整数)
  • K - 附加约束对的数量
  • ķ,B ķ,0≤ ķ <K -产品指数对附加的约束
    • 任何产品索引在B中最多可出现一次.因此,由该邻接列表形成的图实际上是一组有向树.

该计划必须找到:

  • 中号,0≤ <N -映射从产品索引到价格标签指数(P 中号是产品的价格)

满足条件:

  1. P 中号ķ ≤P 中号ķ,对于0≤ ķ <K
  2. Σ(S ×P 中号)为0≤ <N是最小

请注意,如果不是第一个条件,解决方案将只是按价格和产品按数量对标签进行排序,并直接匹配.

输入的典型值为N,K <10000.在现实生活中,只有几个不同的价格标签(1,2,3,4).


这是为什么大多数简单解决方案(包括拓扑排序)不起作用的一个例子:

您有10件商品,数量1到10,以及10个价格标签,价格为1到10美元.有一个条件:数量为10的物品不得低于数量为1的物品.

最佳解决方案是:

Price, $   1  2  3 …
Run Code Online (Sandbox Code Playgroud)

algorithm

59
推荐指数
2
解决办法
3724
查看次数

ISO C++禁止对"枚举"类型的前向引用

鉴于该计划:

enum E : int
{
    A, B, C
};
Run Code Online (Sandbox Code Playgroud)

g++ -c test.cpp工作得很好.但是,clang++ -c test.cpp出现以下错误:

test.cpp:1:6: error: ISO C++ forbids forward references to 'enum' types
enum E : int
     ^
test.cpp:1:8: error: expected unqualified-id
enum E : int
       ^
2 errors generated.
Run Code Online (Sandbox Code Playgroud)

这些错误消息对我没有任何意义.我在这里看不到任何前瞻性参考.

c++ clang

31
推荐指数
1
解决办法
1万
查看次数

有效地实现floored/euclidean整数除法

地板划分是指结果始终向下(朝向-∞),而不是0:

分工类型

是否有可能在C/C++中有效地实现floored或euclidean整数除法?

(显而易见的解决方案是检查红利的标志)

c c++ math division integer-division

21
推荐指数
2
解决办法
1942
查看次数

实用的NAT遍历可靠的网络连接

我已经看过并阅读了很多类似的问题,以及相应的维基百科文章(NAT遍历,STUN,TURN,TCP打孔),但是大量的信息并没有真正帮助我解决我的非常简单的问题:

我正在编写一个P2P应用程序,我希望NAT后面的两个应用程序用户能够相互连接.连接必须可靠(与TCP的可靠性相当),所以我不能只切换到UDP.该解决方案应该适用于当今的通用系统而无需重新配置.如果有帮助,解决方案可能涉及可连接的第三方,只要它不必代理整个数据(例如,获取对等方的外部(WAN)IP地址).

据我所知,我唯一的选择是使用"可靠的UDP"库+ UDP打孔.这有(C/C++)库吗?我在相关问题中找到了enet,但它只关注解决方案的前半部分.

还要别的吗?我看过的事情:

  1. Teredo隧道 - 需要操作系统和/或用户配置的支持
  2. UPnP端口转发 - UPnP在任何地方都不存在/启用
  3. TCP打孔似乎是实验性的,仅在某些情况下有效
  4. SCTP的支持甚至低于IPv6.通过UDP的SCTP只是花哨的可靠UDP(见上文)
  5. RUDP - 几乎没有主流支持
  6. 根据我对STUN,STUNT,TURN和ICE的理解,他们中的任何一个都不会对我有所帮助.

networking tcp nat-traversal

14
推荐指数
1
解决办法
3692
查看次数

D中原始字符类型的限制是什么?

我目前正在探索Digital Mars D语言的规范,并且在理解原始字符类型的完整性方面遇到了一些麻烦." 学习探戈与D "一书对该领域语言的能力和局限性同样含糊不清.

这些类型在网站上给出:

char;    // unsinged 8 bit UTF-8
wchar;   // unsigned 16 bit UTF-16
dchar;   // unsigned 32 bit UTF-32

由于我们知道大多数Unicode转换(UTF)格式编码表示具有可变位宽的字符,这是否意味着D中的char只能包含适合8位的值,或者它是否在机器中扩展物理内存给你双字节字符?也许还有其他一些可能性,比如在重载变量时自动转换到下一个最合适的类型?

比方说,我想在编辑器中使用UTF-8字符并输入中文.它会简单地摔倒,还是能够更正确地处理Unicode字符,就像在C#中一样?是否仍然需要提供胶水代码以允许使用Unicode支持的任何语言?

我非常感谢您提供有关这些类型如何在幕后工作的任何具体信息,以及有关处理其限制的任何一般最佳实践建议.

unicode d utf-8 utf primitive-types

13
推荐指数
1
解决办法
568
查看次数

特定范围内有多少个不同的浮点数?

有多少可表示彩车之间是否有0.00.5?又有多少表现的彩车之间是否有0.51.0?我对它背后的数学更感兴趣,我需要答案floatsdoubles.

language-agnostic ieee-754

13
推荐指数
1
解决办法
4131
查看次数

将一个元素附加到动态数组

这是我的代码中非常频繁的模式:

SetLength(SomeDynamicArray, Length(SomeDynamicArray)+1);
SomeDynamicArray[High(SomeDynamicArray)] := NewElement;
Run Code Online (Sandbox Code Playgroud)

有没有办法在一行中做到这一点?

编辑:这非常低效.我知道.我使用动态数组(在我自己的代码中,在我个人的项目中,我只使用),因为它们最容易使用,我只需要用尽可能少的代码完成工作.

delphi

12
推荐指数
5
解决办法
3万
查看次数

加密出口限制的当前状态是什么?

假设我想为我的应用程序添加一些基本的加密功能(而不是将其作为应用程序的主要用途) - 例如,使用公钥加密技术来加密/签署视频游戏中的私人消息.我应该担心出口限制(主要是在美国)吗?加密的"强"程度是否有限制?

encryption cryptography

11
推荐指数
1
解决办法
3957
查看次数

D中的螺纹纤维

我正在试验D中的线程和光纤,我想知道是否有可能在主线程运行时在不同的CPU上运行光纤.如果不是这种情况,那么使用Fibers over Threads的原因是什么.(非常欢迎实际例子)

我尝试用Fibers编写一些初始程序,然后在一段时间后切换到下一根光纤.但是我注意到cpu的使用只停留在一个cpu上.

D州的文件说明:

请注意,不要求光纤绑定到一个特定的线程.相反,只要它们当前没有执行,纤维就可以在线程之间自由传递.

这是否意味着如果我希望它使用不同的CPU,我必须为光纤提供一个线程?如果是这种情况,那么我没有看到目的.

提前致谢!

performance d fibers

9
推荐指数
1
解决办法
1814
查看次数

如何在文本选择中获取所有<img>标签?

我已经看了一会儿,但似乎没有一种简单的方法可以做到这一点.jQuery至少没有帮助,它似乎完全缺乏对选择或DOM范围的任何支持.我希望的东西很简单$.selection.filter('img')似乎只能用几十行代码来处理手动枚举范围和浏览器实现不一致的元素(虽然ierange有帮助).还有其他快捷方式吗?

javascript jquery dom

8
推荐指数
1
解决办法
744
查看次数