ACM_NOI
文章平均质量分 62
lwfcgz
北大小硕,各种渣。。。
展开
-
【回溯】NOIP2003马拦卒过河
水题一道,直接暴力搜索即可。#include#includeusing namespace std;void dfs(int x,int y);const int dir_x[]={1,1,2,2,-1,-1,-2,-2};const int dir_y[]={2,-2,1,-1,2,-2,1,-1};bool avail[40][40],checked[40][40];int原创 2012-05-12 21:59:53 · 2052 阅读 · 0 评论 -
bzoj 1041 圆上的整点
这里先只考虑x,y都大于0的情况如果x^2+y^2=r^2,则(r-x)(r+x)=y*y令d=gcd(r-x,r+x),r-x=d*u^2,r+x=d*v^2,显然有gcd(u,v)=1且u有2r=d*(u^2+v^2),y=d*u*v,x=d(v^2-u^2)/2枚举2r的约数d,再花费sqrt(2r/d)的时间枚举u,求出v=sqrt(2r/d-u^2)然后判原创 2014-10-09 11:13:57 · 1939 阅读 · 0 评论 -
POJ 1185 炮兵阵地
典型的状态压缩动态规划,用位来表示各个状态可以显著加快运算速度、节省存储空间。对于一个位置,如果它部署了一支部队,那么会对它的前后左右的2格位置产生影响,如果以行作为状态,则不能单单由上一状态转移,那样的话不能保证在它的2格处不发生矛盾,而在这个题目中,以行做状态又很明显,所以在状态的转移时必须是上一行的状态和上上行的状态一起转移,如果用f[i,j,k]来表示在第i行时,取第j个状态(注意是第原创 2014-01-18 22:34:42 · 698 阅读 · 0 评论 -
vijos P1009 清帝之惑之康熙
用扩展欧几里得算法求解线性同余方程就可以了,要注意求出来的应该是最小非负数。等价于求方程k(m-n)与(y-x)关于l同余,k为非负整数的解 方程: k*(m-n)-ld=y-x 若y-x不是gcd(m-n,l)的倍数输出impossible,否则用ext_gcd求出一个解,然后不断使得k+=l/gcd(m-n,l)直到>0或者k-=l/gcd(m-n,l)直到#i原创 2013-05-05 20:58:43 · 2541 阅读 · 0 评论 -
【动态规划】Vijos P1071 新年趣事之打牌
需要在状态转移的时候记录转移的路径,注释中标出的一行代码非常重要。题目链接:https://vijos.org/problems/P1071#include#include#include#include#define SIZE 100005using namespace std; int main(){ int totalW,sum; int n,wei[1原创 2013-01-07 14:17:07 · 1473 阅读 · 0 评论 -
【动态规划】 Vijos P1057 盖房子
关键就是那个状态转移方程,枚举正方形最右下角的坐标,取最大值即可。为了节省内存,采取了两个一位数组来回颠倒的方法,其实也是因为直接开[1001][1001]的int数组总是返回runtime error。。。题目连接:https://vijos.org/problems/P1057#include#include#include#define MAX 1001using nam原创 2013-01-01 22:34:54 · 1427 阅读 · 0 评论 -
【图论+贪心】 Vijos P1021 Victoria的舞会1
首先建立一个无向图的模型,然后删去那些度数不够k的节点即可,删去一个节点之后会引起其他节点度数的更新,因此这一过程要不断进行直到没有更新。题目连接:https://vijos.org/problems/P1021AC代码:#include/*首先建立矩阵图,然后删去那些度数不够k的节点,不断更新直至没有节点被删除统计还剩下多少节点,即可得到最终结果。 */#include#原创 2013-01-01 22:31:35 · 1504 阅读 · 0 评论 -
【动态规划】NOIP1999 拦截导弹
这道题真心挺水,不过也很经典,是动态规划的入门题目。不过代码让我写乱了。。。凑活着一次AC吧。题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。原创 2012-08-17 20:42:49 · 4945 阅读 · 0 评论 -
【组合】NOIP2011计算系数
题目描述给定一个多项式(ax + by)k,请求出多项式展开后xn ym项的系数。【数据范围】对于 30%的数据,有0≤k≤10;对于 50%的数据,有a = 1,b = 1;对于 100%的数据,有0≤k≤1,000,0≤n, m≤k,且n + m = k,0≤a,b≤1,000,000。输入格式共一行,包含 5 个整数,分别为a,b,k,n,m,每两个整数之间用一个原创 2012-07-12 12:59:52 · 3249 阅读 · 0 评论 -
【二分】NOIP2011聪明的质检员
进行二分查找即可,我就不多说废话了。#include#include#include#include#includeusing namespace std;void preprocess(int weight);struct Node{ int l,r;};const int SIZE=200005;Node node[SIZE];int n,counter[SIZE]原创 2012-07-12 13:43:28 · 2557 阅读 · 0 评论 -
【动态规划】NOIP2006提高组 能量项链
就是以一典型的矩阵链乘法,搞错了一个等号。。。。不过还是挺水的。。。http://www.ptzyzx.com:8080/JudgeOnline/showproblem?problem_id=1008//典型的矩阵乘法问题#include#includeusing namespace std;int main(){ int n,neck[105]; int energy[1原创 2012-05-24 22:44:42 · 2492 阅读 · 0 评论 -
树链剖分
“在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。 树链,就是树上的路径。剖分,就是把路径分类为重链和轻链。 记siz[v]表示以v为根的子树的节点数,dep[v]表示v的深度(根深度为1),top[v]表示v所在的重链的顶端节点,fa[v]表示v的父亲,son[v]表示转载 2015-08-01 16:20:09 · 552 阅读 · 0 评论