炸弹

上班摸鱼系列|Python开发命令行斗地主

▼魔方 西西 提交于 2020-03-16 18:27:09
前言 大家周末好~最近更新了太多的数据分析内容不知道各位有没有疲劳,今天给大家带来的是如何上班如何高级摸鱼: 用Python开发一个命令行斗地主小游戏 ,利用跑程序的时间来一把斗地主岂不是非常快乐,关键是没有时间限制,不仅可以喊上老板一起玩还能随时断点续玩 doudizhu.mov 接下来简单讲讲如何使用python开发这样一个斗地主游戏,我们先来想想进行一场斗地主游戏所经历的过程:首先生成54张扑克,然后将这54张扑克随机发给三名玩家,每个玩家17张牌并保留三张底牌,接着从第一个玩家开始询问是否抢地主,如果成为地主则获得三张底牌,这样依次循环直到地主出现,之后就是根据出牌规则完成一系列的出牌动作,最先出完牌的人取得胜利并按照记分规则累积分数(欢乐豆)。 因为仅供自己娱乐使用所以不用做UI界面,不用登陆不用注册,不用分客户端、服务端以及一些消息传输等复杂的内容,简单来说只需要完成洗牌发牌出牌规则以及生成指定数量的机器人陪玩即可。因此我们仅使用纯python不依赖任何第三方库来开发。 洗牌与发牌的实现 洗牌与发牌是比较好搞定的,基本上使用python标准库random即可,比如生成牌库 import random def get_Card(): card_type = ['黑桃','红桃','方片','梅花'] card_values= ['A', '2', '3', '4', '5

蓝桥杯-星系炸弹

最后都变了- 提交于 2020-03-04 18:01:03
星系炸弹 在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。 有一个贝塔炸弹,2014年11月9日放置,定时为1000天,请你计算它爆炸的准确日期。 请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19 请严格按照格式书写。不能出现其它文字或符号。 2017-08-05 来源: https://www.cnblogs.com/gcter/p/6673442.html

BZOJ1218 激光炸弹

你说的曾经没有我的故事 提交于 2020-02-03 17:56:06
激光炸弹 问题链接: BZOJ1218 思路 先统计各位置的总价值,然后直接原数组求出二维前缀和。根据几何关系算(i,j)到(i+R-1,j+R-1)的正方形内部的价值,边算边更新最大值。注意i+R-1和j+R-1可能会越界,和5000取min即可。 ac代码 # include <cstdio> # include <iostream> # include <algorithm> using namespace std ; int s [ 5001 ] [ 5001 ] = { 0 } ; int main ( ) { int n , r ; cin >> n >> r ; for ( int k = 0 ; k < n ; k ++ ) { int x , y , v ; cin >> x >> y >> v ; s [ x ] [ y ] + = v ; } for ( int i = 0 ; i <= 5000 ; i ++ ) for ( int j = 1 ; j <= 5000 ; j ++ ) s [ i ] [ j ] + = s [ i ] [ j - 1 ] ; for ( int j = 0 ; j <= 5000 ; j ++ ) for ( int i = 1 ; i <= 5000 ; i ++ ) s [ i ] [ j ] + = s [ i -

Atcoder F - Silver Fox vs Monster(贪心 + 差分)

折月煮酒 提交于 2020-01-27 13:22:29
题意 银狐在和怪物搏斗,怪物们站成一排,我们可以假设它们站在数轴上。第i个怪物,站在坐标 X i X_i X i ​ 处,健康度为 H H H 。银狐可以用炸弹攻击怪物。在坐标x处使用炸弹会降低所有怪物在坐标 x − D x-D x − D 和 x + D x + D x + D (包括端点)之间的生命值。除了用炸弹降低怪物的生命值外,没有其他方法。当所有怪物的治疗为0或以下时,银狐获胜。找出获胜所需的最低炸弹数量。 思路: 贪心 按怪物出现的坐标从小到大排好序,然后每次贪心的选取第 i i i 个怪物右侧距离为 D D D 处设置炸弹。这样是显然正确的。然后可以记录一下右侧 x i + 2 D x_i+2D x i ​ + 2 D 处位置,如果后面的怪物的 x x x < = x i + 2 D <=x_i+2D < = x i ​ + 2 D ,那么相应的生命值就减去相应的伤害。 可是如果双重循环查找会超时,那可怎么办呢? 差分 设置一个差分数组 q [ ] q[ \ ] q [ ] ,每次我们贪心的选取完炸弹坐标后,可以二分查找 < = x i + 2 D <=x_i+2D < = x i ​ + 2 D 范围内最远点进行差分。 A C C o d e AC \ Code A C C o d e # include <cstdio> # include <cmath> #

【蓝桥杯训练】第一天1251

旧街凉风 提交于 2020-01-17 23:45:54
1251 [蓝桥杯2015初赛]星系炸弹 在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。 有一个贝塔炸弹,a年b月c日放置,定时为n天,请你计算它爆炸的准确日期。 输入 输入存在多组数据,每组数据输入一行,每一行输入四个正整数a,b,c,n 输入保证日期在1000-01-01到2020-01-01之间,且日期合法。 n不超过1000 输出 请填写该日期,格式为 yyyy-mm-dd 即4位年份2位月份2位日期。比如:2015-02-19 请严格按照格式书写。不能出现其它文字或符号。 样例输入 Copy 2015 1 1 15 2014 11 9 1000 样例输出 Copy 2015-01-16 2017-08-05 提示 题目已改编。 注意 理清头绪,用笔和纸去画一画 善于创建可复用的函数函数 闰年为:四年一闰,两百年不闰,四百年闰 算法 python v1.0: 按照月份处理 创建isLeap(),用于判断闰年 创建T(),通过参数,m、y确定当月天数 python v2.0、C++ v1.0: 模拟计时器,循环加一计时,时间复杂度O(n),取决于n C++ 中注意使用printf("%02d",d)来控制输出 能够说明的是

[HEOI2016/TJOI2016]游戏 Solution

我的未来我决定 提交于 2020-01-16 06:13:00
给一个地图,每个位置可以是空地,软石头和硬石头,炸弹只能放空地上,能炸穿无限个软石头但是不能炸穿硬石头,问最多放多少炸弹。 考虑一个炸弹能影响的范围,是一个区间,那么我们要做的就是把这样的区间提取出来,这个不难做到,对于一个炸弹,把它对应的横向联系的区间和纵向联系的区间连接起来就可以了。 c o d e : code: c o d e : # include <bits/stdc++.h> int n , m ; int S = 1 , T = 2 ; int cur [ 6000 ] ; int deep [ 3000 ] ; char a [ 501 ] [ 501 ] ; int head [ 6000 ] , tot = 1 ; int rbelone [ 111 ] [ 111 ] , rt ; int cbelone [ 111 ] [ 111 ] , ct ; std :: queue < int > q ; struct edge { int to ; int nxt ; int flow ; } e [ 1000000 ] ; void add ( int x , int y , int flow ) { e [ ++ tot ] = { y , head [ x ] , flow } ; head [ x ] = tot ; e [ ++ tot ] = { x

记录一个多线程运行速度的问题(未解决)

两盒软妹~` 提交于 2020-01-11 18:07:18
待解决问题:同一进程的多线程与cpu多核心的关系,是否在同一核心运行,以及什么条件下可以在不同核心运行? 1.问题背景 最近在公司做一个斗地主游戏牌库的设计,需要满足炸弹分布和最少出牌手数的限制,例如“112,3”表示第一个玩家1个炸弹,第二个玩家1个炸弹,第三个玩家两个炸弹,并且除炸弹以外的牌需要在3手以内出完。经过分析后, 只有顺子和飞机与牌的点数有关 ,其他任何组合与牌点无关,是固定值,因此考虑 dfs+dp 的的算法进行搜索。自认为算法设计没问题,但是还想继续优化速度,因此考虑 并行行计算 的方式,之前项目中用到的多线程方面的也挺多,但是从没考虑过效率的问题。两个线程在共享同一变量和不共享同一变量时,运行速度差距很大。下面列出代码和各种效率问题,记录一下,后续再研究。 #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<map> #include <boost/thread/thread.hpp> using namespace std; int dp[25][25][25][25],card[15],h[15]; int test; int allTime; int allTime1; void fun() { //1000000000 for(int i=0;i

Luogu P2280/ACAG 0x03-1 激光炸弹

北慕城南 提交于 2019-12-06 12:57:57
Luogu P2280/ACAG 0x03-1 激光炸弹 这道题要用到二维前缀和。 首先读入时,令$a[x][y]=val$; 然后不难递推出$s[i][j]=s[x-1][y]+s[i][j-1]-s[i-1][j-1]+a[i][j]$。 此处运用了容斥原理。 然后再遍历答案,不难得到,对于以$(x,y)$为右下角的格子,所得的价值为:$s[x][y]-s[x-r][y]-s[x][y-r]+s[x-r][y-r]$。 当然这道题有两个点需要注意: 目标点坐标范围为$[0,5000]$,可能会取到$0$,造成数组越界。对此我们只需要在将横、纵坐标均加$1$即可。 这道题有卡空间。所以可以只开$s$数组,并累加即可。 #include<bits/stdc++.h> #define N 5010 using namespace std; int n,r,ans; int s[N][N]; int Calc(int x,int y) { return s[x][y]-s[x-r][y]-s[x][y-r]+s[x-r][y-r]; } void Read() { scanf("%d%d",&n,&r); for(int i=1;i<=n;i++) { int x,y,val; scanf("%d%d%d",&x,&y,&val); s[x+1][y+1]=val; } return;

P5025 [SNOI2017]炸弹

我只是一个虾纸丫 提交于 2019-12-03 17:09:54
原题链接 https://www.luogu.org/problem/P5025 闲话时刻: 第一道 AC 的黑题,虽然众人皆说水。。。 其实思路不是很难,代码也不是很难打,是一些我们已经学过的东西凝合在一起,只要基础扎实的话,做出这道题目来说也就很简单了(不包括我); 题目大意: 有 n 个点,每个点可影响到它左右各 R [ i ] 范围内的点,并且影响到的点会产生连锁反应,求每个点能影响到多少个点; 题解: 一个很简单的思路: 向每个炸弹爆炸范围内的其他炸弹连一条 有向边 < u , v >,表示 u 能炸到 v,最后我们从每个点开始跑 dfs,看看能到达多少个点就好了; 但是。。。 这样连边的话,最劣情况下会连 n 2 条边,看一眼 n 的范围: N ≤ 5 0 0 0 0 0,嗯,显然不行 ~o(* ̄▽ ̄*)o; 考虑建边优化: 不难想到一个炸弹的爆炸范围是一个长度为 2 * R [ i ] 的区间,这个区间内的所有炸弹都会被引爆,因此被引爆的炸弹也是一个连续的区间; 区间操作?你想到了什么? 线段树优化建边 假如说一个炸弹 x 能炸到第 2~6 个炸弹,考虑怎么建边: 一般操作: 线段树优化建边: 建了 5 条边?看我的! 我们发现,这种建边方式只需要建 ⌈ log 2 5 ⌉ = 3 条边; 看了上面的图,应该对 线段树优化建边 有了一个初步的认识了:

XML炸弹

匆匆过客 提交于 2019-12-03 11:09:05
XML炸弹 XML document type definition (DTD)可以定义entity,DTD可以出现在外部文件或文件内部。 利用DTD可以产生XML炸弹,也就是能迅速占用大量内存的文件,如下为例: 当XML解析器尝试解析该文件时,由于DTD的定义指数级展开,这个1K不到的文件会占用到3G的内存。 1 2 3 4 5 6 7 8 9 10 11 12 13 <?xml version= "1.0" ?> <!DOCTYPE lolz [ <!ENTITY lol "lol" > <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;" > <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;" > <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;" > <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;" > <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;