摘要: 题解:对于任意一对i、j(ij)使得a[k]j)使得a[k] 2 #include 3 const int N=1001,M=2000001; 4 struct inli{ 5 int next,data; 6 inli(const int a=0,const int b=0): 7 next(a),data(b){} 8 }line[M]; 9 int n,a[N],col[N],son[N],sta1[N],sta2[N],top1,top2,last[N],nl;10 void makeline(){11 for (int i=1;ia[i]){... 阅读全文
posted @ 2013-10-23 23:46 g_word 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 题解:又是搜索- - 加状态压缩剪枝二进制记下每行 每列 每个九宫格用过的数是谁 枚举的时候可以O(1)判断冲突还有个很重要的剪枝 把可能使用数字最少的格子先搜索代码: 1 #include 2 #include 3 #include 4 using std::sort; 5 const int N=82,n=9,val[10][10]={{0,0,0,0,0,0,0,0,0,0}, 6 {0,6,6,6,6,6,6,6,6,6}, 7 {0,6,... 阅读全文
posted @ 2013-10-23 23:40 g_word 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 题解:先一遍dfs看是否合法若合法 则从上面任意一点到达下面的点一定是连续的 拓扑求出上面每点到下面的点的区间把所有区间按头排序 贪心解决最少几个区间能覆盖全部区域之代码: 1 #include 2 #include 3 #include 4 using namespace std; 5 const int N=501; 6 struct info{ 7 int x,y; 8 info(const int a=0,const int b=0): 9 x(a),y(b){}10 }map[N][N],qj[N],move[4]={info(1,0),info... 阅读全文
posted @ 2013-10-23 00:16 g_word 阅读(311) 评论(0) 推荐(1) 编辑
摘要: 题解:做这题的时候为了敢速度- - 直接orz了神小黑的题解其实我还是有想一个拙计的方法的- -dp:f[i][j] 表示到i点使用j个加速器 在i前上车的人的时间和轻松愉悦转移之 - - 但是有很严重的两个问题1.空间复杂度O(nk)爆掉2.时间复杂度O(nk^2)更呵呵- -于是弃疗正解:贪心!time[i]表示到i点的时间last[i]表示从i出发的人的最晚到达的时间sum[i]表示在i或i前下车的人数f[i]表示在i后time[j] 2 const int N=1002; 3 struct info{ 4 int x,y,t; 5 info(const int a=0,... 阅读全文
posted @ 2013-10-23 00:11 g_word 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 题解:刷了一天的noip啊 做了10题! 突然找回了做马拉松的感觉- -我中午竟然放弃治疗去看视频 做到晚上累得都快挂了 用电脑放一些rock 把音乐当咖啡硬撑下来 但是还是没能刷3届唉 显然速度刷题是很容易忘的 简单写一些题解 然后睡觉去(- -。zZ)赤裸裸的搜索 但是要加一些剪枝1.如果交换的两个方块颜色相同则不换2.如果移动时是向左且左边有方块则不动(左边的往右效果一样)3.如果任意颜色发方块个数为1或2 显然无解return我只加了这些剪枝速度貌似还不错 vijos上1300ms左右关键是很多人说这题很复杂 - -?其实思路清楚就不会(表示半小时搞定) 我感觉做这题就像在做游戏一样可 阅读全文
posted @ 2013-10-22 23:50 g_word 阅读(327) 评论(0) 推荐(1) 编辑
摘要: 中国剩余定理的作用和线性模方程组差不多 都是求 x=ai(mod mi) 的解x 但是中国剩余定理有局限性 它要求mi两两互质 优点是常数快 而且代码短很多 中国剩余定理其实就是构造x=M1N1a1+M2N2a2+...+MkNkak 使得x在mod mi 时只有MiNiai>0 其他都为0 并且让MiNi=1(mod mi) 那么就能满足条件 具体的构造方法: 设M=m1m2...mk Mi=M/mi 这时(Mi,m1)=1 就能用拓展欧几里得求出Ni使得 MiNi=1(mod mi) 阅读全文
posted @ 2013-10-21 21:57 g_word 阅读(291) 评论(0) 推荐(1) 编辑
摘要: 题意: 给出n、m、k 求C(n,k)*H(n-k)%m的值 H(n-k)为错排公式 题解: 先算H(n-k) 计算H(n)有个通式: H(n)=(-1)^n+((-1)^(n-1))n+((-1)^(n-2))n(n-1)+...+n(n-1)(n-2)...3 证明详见维基百科: http://zh.wikipedia.org/wiki/%E9%94%99%E6%8E%92%E9%97%AE%E9%A2%98#.E7.AE.80.E5.8C.96.E5.85.AC.E5.BC.8F 因为我们是要算H(n-k)mod m的值 显然他的前不超过m项是>0的 而其它都为0 枚举求解即可 阅读全文
posted @ 2013-10-21 21:06 g_word 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 题意: 求第n个不为完全平方数倍数的数 题解: 网上有人说答案不会超过2n (求证0 0?) 竟然不超过2n 那么很明显就是用二分做了 二分判定就是要求小于等于n的合法的数的个数 不难发现一个数若为完全平方数的倍数 则他的质因子肯定有一个的指数大于1 那么合法的数的所有质因数质数肯定都为1 阅读全文
posted @ 2013-10-21 19:33 g_word 阅读(2189) 评论(1) 推荐(2) 编辑
摘要: 题意:求C(n,m) 如果C(n,m)的位数=13 就要知道前3位 和答案模10^10的值 阅读全文
posted @ 2013-10-19 15:56 g_word 阅读(267) 评论(2) 推荐(0) 编辑
摘要: 题意:给出a、p、d、m 求a^x=d(mod p) 0m则输出0如果x 2 #include 3 #include 4 typedef long long ll; 5 typedef unsigned long long ull; 6 const ll mo=200003,N=20000; 7 ll a,p,d,m,sum=1,sq,hash[mo],hat[mo],pri[N],save[N],bo[N+1],tot,add; 8 ll gcd(ll a,ll b){ return b ? gcd(b,a%b) : a; } 9 ll extgcd(ll &x,ll &.. 阅读全文
posted @ 2013-10-18 23:55 g_word 阅读(276) 评论(0) 推荐(0) 编辑