摘要:
基数排序的复杂度可以写成:O(k(n+2logMax/k),k是维数,n是数据个数,Max是数的最大值。现在需要对10M个32位正整数排序,则可以令k=2,则复杂度为O(2(n+216))=O(n)。具体来说,先按低16位进行第一趟排,然后对结果按高16位排,这种排法与32位同时排是等价的。实现时需... 阅读全文
摘要:
个人觉得单步调试麻烦且费时间,所以我两年时间里F4+watch基本没怎么用过,但由于"查看变量的值"这个需求总是存在的,并且调试时通常需要显示很多东西,printf写起来又比较蛋疼,恰巧在c++11上知道了可变参数模板这个新的东西,于是果断拿过来写debug代码了。本地调试时用的,写在头文件里,... 阅读全文
摘要:
题意:给一个凸多边形,求任选若干点形成的多边形的面积和。思路:按一定方向(顺时针或逆时针)对多边形的顶点进行编号,则多边形的面积计算公式为:f1 x f2+ f2x f3 + ... fn-1 x fn+ fn x f1,fi表示从参考点到i的向量。考虑fix fj 在答案中出现的次数,则答案可以写... 阅读全文
摘要:
题意:按下列规则生成一组序列,令f(n)为n这个数在序列中出现的最后一个位置,求f(f(n))的值。1. First, write down 1, 2 on a paper.2. The 2nd number is 2, write down 2 2’s (including the one ori... 阅读全文
摘要:
题意:一堆食物,有价值、空间、数量三种属性,一些卡车,有空间,价格,数量三种属性。求最少的钱(不超过50000)买卡车装下价值大于等于给定价值的食物,食物可以拆开来放。思路:这题的关键是给定的条件:食物可以拆开来放。这个条件使得卡车和食物可以分开考虑,然后通过空间这个属性联系在一起。做两遍多重背包即... 阅读全文
摘要:
题意:判断简单多边形内是否可以放一个半径为R的圆思路:如果这个多边形是正多边形,令r(x,y)为圆心在(x,y)处多边形内最大圆的半径,不难发现,f(x,y)越靠近正多边形的中心,r越大,所以可以利用模拟退火法来逼近最优点。对于一般的多边形,由于可能存在多个这样的"局部最优点",所以可以选不同的点作... 阅读全文
摘要:
题意:判断两个多边形是否有面积大于0的公共部分思路:扫描线基础。#pragma comment(linker, "/STACK:10240000")#include using namespace std;#define X first#define Y ... 阅读全文
摘要:
题意:我方n个军队和敌方m个军队进行一对一的对战,每个军队都有一个攻击力和防御力,只要攻击力不小于对方就可以将对方摧毁。问在能完全摧毁敌方的基础上最多能有多少军队不被摧毁。思路:按防御力从大到小考虑敌方的军队由我们哪只军队去摧毁,对每个敌方军队,维护我方军队可以摧毁它的集合,用S表示,从大到小考虑保... 阅读全文
摘要:
题意:有一个n*m的矩形,一辆车从左上角出发,沿一条路径走,路径是由矩形上每个单元格的边构成的,最后回到左上角,求车子在每个格子转过圈数的平方和。思路:假设需要记录每个格子转的顺时针的圈数(为负表示转的逆时针),可以考虑车子每次移动对各个格子的贡献:车子左移,路径上方所有格子转的圈数+1,路径下方所... 阅读全文
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068题意:求一个字符串的最长回文子串思路:枚举子串的两个端点,根据回文串的定义来判断其是否是回文串并更新答案,复杂度O(N3)。枚举回文串的对称轴i,以及回文半径r,由i和r可确定一个子串,然后暴力判断... 阅读全文