摘要: 题目链接:http://codeforces.com/problemset/problem/421/D题目大意:每个人说出自己认为的背锅的两个人,最后大BOSS找两个人来背锅,要求至少符合p个人的想法。最终选出的两个人中只有有一个在自己的预测内就算符合想法。解题思路:统计每个人背锅的次数,排个序。找... 阅读全文
posted @ 2014-07-04 00:58 飞火扑蛾 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=34985题目大意:问n长度的串用0~k的数字去填,有多少个串保证任意子串中不包含0~k的某一个全排列邀请赛上A的较多的一道题,比赛的时候死活想不出,回来之后突然就想通了,简直..... = ... 阅读全文
posted @ 2014-05-27 12:04 飞火扑蛾 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520题目大意:给出n个带权点,他们的关系可以构成一棵树,问从中选出若干个不相邻的点可能得到的最大值为多少解题思路:简单的树形DP用dp[i][0]表示以i为根的树上不取i的状态下能得到的最大值用dp[i... 阅读全文
posted @ 2014-04-21 17:09 飞火扑蛾 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/400/D题目大意: 给定n个集合,m步操作,k个种类的细菌, 第二行给出k个数表示连续的xi个数属于i集合。 当某个种类之间两两交换的值都为0可行解,则输出所有种类之间交换的最小值;否则输出No解题思路:当两点之间的距离为0时并查集到一个集合中,只需保证最终同一种类的细菌都在一个并查集中则是符合条件的可行解,再用FLOYD找最短路即可 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace st... 阅读全文
posted @ 2014-04-04 13:06 飞火扑蛾 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://codeforces.com/problemset/problem/385/C题目大意:给定n个数与m个询问区间,问每个询问区间中的所有素数在这n个数中被能整除的次数之和解题思路:首先暴力打出一张素数表,最大的素数小于等于n个数中的最大值即可。在打表的过程就统计从2开始到当前素数的总的整除次数(简直简单粗暴),最后对于询问区间,找出该区间内的最小素数与最大素数在素数表中的位置,结果即为s[r]-s[l-1]代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespac... 阅读全文
posted @ 2014-03-19 19:22 飞火扑蛾 阅读(502) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1502题目大意:找出总的满足条件的字符串数,num(a)=num(b)=num(c)且任何前缀均满足num(a)>=num(b)>=num(c)解题思路:用dp[i][j][k]表示a取i个,b取j个,c取k个的状态下最多有多少种满足条件的情况,容易推得状态转移方程如下:dp[i][j][k]=dp[i-1][j][k](i>j时)+dp[i][j-1][k](j>k时)+dp[i][j][k-1](k>0时)根据该状态转移方程即可输出最后的结果dp[n][n][n]因 阅读全文
posted @ 2014-03-17 23:10 飞火扑蛾 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3761题目大意:给定n个位置的小球,小球的运动方向只能是水平或者竖直的。按一定方向推动某球,当行径上有其他球时,停留在被撞球的位置,被撞的球沿原小球运动方向运动,当行径路径上没有其他球时,该小球被剔除。问:只能通过小球的相撞来剔除小球,最少能留下几个小球。解题思路:首先,可以用并查集找出互相连通的小球集合个数。因为每一次推动的结果可以看成是被推动的小球被剔除了,其他位置上的小球不动,所以可以从每个集合中任选一个小球作DFS。选择推动小球的方向即为该球指向其父亲节 阅读全文
posted @ 2014-03-02 18:09 飞火扑蛾 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3757题意:根据所给的台球规则,按照每次的结果计算最终两人的得分单纯的模拟题,分支比较多写起来较繁琐注意区分犯规与进球得分的规则:只要有犯规行为,都要按照规则给对手加分。无论是否进球。当进球时,如果有犯规行为,不仅分要加给对手,还要加上犯规惩罚 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define maxn 10005 8 i... 阅读全文
posted @ 2014-03-02 17:55 飞火扑蛾 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1230水题模拟一道,主要考验代码能力,刷完题就感觉自己还是太弱了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 char a[100],b[100]; 8 int L,now,prime[27],A[26],B[26]; 9 bool f[100]; 10 void init() 11 { 12 int k,N=1,j=4; 13 memset(f,f... 阅读全文
posted @ 2013-12-09 17:07 飞火扑蛾 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1227题目大意:给定x轴上n个车站的位置和k个饭店。求k个饭店供给n个车站的距离总和的最小值。题目解析:动态规划题,用dp[i][j]表示由j个饭店供给i个饭店的最小值,cost[i][j]表示由一个饭店供给从i到j的饭店的最小值,饭店的位置选在(mid=(i+j)/2)的位置的车站时cost值最小。状态转移方程:dp[i][j]=min(dp[l-1][j-1]+cost[l][i]) (j≤ l≤i) 1 #include 2 #include 3 #include 4 #include 5 # 阅读全文
posted @ 2013-12-07 23:00 飞火扑蛾 阅读(232) 评论(0) 推荐(0) 编辑