自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DIDCJS的博客

Follow your heart.

  • 博客(32)
  • 收藏
  • 关注

原创 日记

复习组原 和 写C#课设的一天。---------------------------------------------------------------------------------------------------------

2018-01-04 22:33:53 241

原创 关于欧拉函数的一些理解

先丢上定义phi(x)=x*∏(pi-1)/pi;  //pi为x的所有因子。/pi 相当于区间长度x分为pi部分,每个小部分有一个与数与x的不互质,所以乘(pi-1)..性质 1. x为质数 phi(x)=x-1;2、gcd(a,x)==1   有a^phi(x)=1(mod x);3.根据1,2性质  可以证明费马小定理  当x为质数&&gcd(

2017-10-31 21:27:16 621

原创 HDU 6069 求区间[L,R]每个数的k次方的因子数之和

缺乏知识点     1.约数定理: num=p1^c1 * p2^c2 * ....* pn^cn    p代表素数   c代表对应幂次                num对应的因子数= (c1+1)*(c2+1)*......*(cn+1)2.一个数num   大于sqrt(num)的素因子    数量  只能 为0或者1 可以解决的问题:1.所有求一个数num的因

2017-08-07 00:29:22 1427

原创 同余最短路

题意大致就是 一张无向图  每条边可以多次经过  问s,到t 的不小于k的最短路  (或者仅仅等于k的最短路)取m=2*min(s到下一个点的最短路径):   如果一条路径长度sum可行   那么sum+m也是可行的   然后 dis[i][j]表示从起点s到i点 ,路径长度%m==j  的最短路径    最后就是利用同余的性质去跑最短路spfa题目  HDU 60

2017-08-05 19:11:33 1270

原创 关于二分图最大匹配等于最小点覆盖的证明

假设一个二分图给出了最大匹配数为M,那个M条边都是独立的(在X,Y集合都没有交点) ,结论1.覆盖M条独立边至少需要M个覆盖点结论2.图中所有的边都能被最大匹配的边的点所覆盖(如果有边没被最大匹配边的点所覆盖的话,那么肯定就不是最大匹配啦)结论3.最大匹配的一条边只对应一个覆盖点如果最大匹配的一条边选了2个未覆盖点 那么只有这种一种情况 红色边代表最大匹配,2-5选了两个未

2017-07-05 09:26:51 1679

转载 HDU 4577

不会JAVA 等GG系列HDU 4577

2017-05-15 10:14:23 395

原创 ZOJ - 3529 K - A Game Between Alice and Bob sg函数~

sg函数打表。一开始我是这么打的表。天真以为nlogn应该可以。但是跑了很久。。。。void gsg() { memset(sg, 0, sizeof(sg)); sg[0]=0; for (int i = 1; i < 5000024; i++) { memset(Hash, 0, sizeof(Hash)); for (int j = 1; j*j <= i; j++)

2017-04-27 21:35:44 443

原创 华南理工大学2017WPS杯-B Homework of Physics

道理和鸡蛋测层数的题目一样。具体看(转载)鸡蛋测层数设DP[i][j]//表示用i个鸡蛋,有j次机会测试能达到的最大层数。转移方程:DP[i][j]=DP[i-1][j-1]+DP[i][j-1]+1;  //DP[i-1][j-1]就是碎了当前的鸡蛋,那么剩下i-1个鸡蛋,j-1次机会所能达到的最大层数。DP[i][j-1]就是没碎当前鸡蛋,j-1次机会所能到达的最大层数。+1就

2017-04-25 02:57:33 515

原创 HDU 2509 Be the Winner (Anti-Nim)

Anti-Nim博弈,最后取完就为输。定义:P=各堆异或值和为0,N各堆异或值和不为0.            1代表所有堆中只有一堆充裕堆(数量>=2) ,2代表所有堆中超过一堆充裕堆  ,0代表无充裕堆(即是所有堆皆为0)             堆中数量为1称为孤单堆有以下结论:1:) P1,P2,N0状态为必胜。2:) N2,P0状态为必输。证明:转载

2017-04-20 22:54:51 533

原创 Fibonacci again and again HDU - 1848

需要理解SG函数,自行百度。(至今证明还没有完全看懂)结论: 公平组合游戏(ICG),都符合 :多个游戏的结果=各子游戏的异或和。sg【i】=mex(sg【j】| j为i的后继(比如现在是5个苹果,每次只能拿2个,那么3个苹果就是5个苹果的后继))//简单来讲就sg【i】是当前集合的最小的非负整数那么这道题我们可以预处理sg【i】的值,最后把sg[n]^sg[m]^sg[p]就

2017-04-19 20:24:17 382

原创 ZOJ 3956 Course Selection System

01背包如果你能发现C不变,H越大,公式值越大,这题就可以用01背包写了C代表容量~dp[i]代表到使用前i种所能达到最大的H值#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #inc

2017-04-15 21:30:42 486

原创 ZOJ 3953 Intervals

这题其实就是在算最大不重叠区间数的升级版。首先讲一下最大不重叠区间数如何求; 将所有区间按y小到大排序。然后按顺序放区间,线上记录ansr(最右下标值)在放一个新的区间的时候,判断此区间的x是否大于ansr,如果是就更新ansr,否则不变,到最后就能算出最大不重叠区间数但是这次问的是对应的下标位置不能同时有3条边重叠,所有我们维护2个值,ans1(重叠边为1条最右下

2017-04-15 21:13:07 475

原创 HDU1542 Atlantis 基于线段树的扫描线

该题求的是矩形的面积和(重叠部分只算一次)思路:利用二分离散化坐标(因为是浮点数),以横轴建立坐标系,矩形的上下边的长度作为区间去构造线段树,维护cnt[]数组(表示当前边属于下边还是上边,下边为-1,上边为1)和sum[]数组(当前区间覆盖的边的长度),一开始我觉得很难看得懂,我也是调了别人AC的代码很久才明白的。#pragma comment(linker, "/STACK:1

2017-04-11 21:04:43 293

原创 数位DP总结

数位DP基于动态的思想,记录状态以至于不用重复的计算,能够处理大规模的数其时间复杂度为O(状态数*转移数) //状态数是dp数组的大小,转移数是for循环大小(这个时间我也不是很想得通,某大佬讲的。。)基本模板如下:基本的三种题型:1): 求1~n数字中包含某些数字特征的数量和(如数字子串中是否有13等)2):求1~n数字中各个位数相加能够整除某个数的数量和(如123各

2017-04-03 20:58:42 1458 1

原创 Codeforces 55D - Beautiful numbers

能注意到1~9的最小公倍数是2520,所以我们只需要维护一下到dex位前的数字组成的lcm,和num最后只需要判断num是否除以lcm就可以了但是DP[20][2555][2555] 是要超内存的所以我们需要离散一下第二维,因为1~9组成的lcm的数量其实很有限(思考怎么算出所有的lcm)所以需要新建Hash[50]数组压DP[20][50][2555];还要此题有一个最坑

2017-04-03 19:03:32 331

原创 HDU 3652 B-number

此题在询问包含13的基本上还要求此数要整除13(如果连询问包含13的数位都不会的话,建议先看看更基础的这题 HDU 2089 不要62)对于能否整除13,我们只需要在dfs的时候维护一个%13的数(num),然后在每次枚举下一位的时候num=(num*10+i)%13最后只需要判断余数是否为0就可以了。至于为什么可以这么做,因为:123=((1*10+2)*10+3)       

2017-04-02 22:24:41 399

原创 HDU 2089 不要62

很裸的数位DP,只需要dfs的时候维护dt状态值就行了dt==2  说明此数字不吉利dt==1 说明有6没2dt==0 说明到dex位此数字还是吉利的代码如下~#include #include #include #include #include #include #include #include #define INF 0x3f3f3

2017-04-02 21:56:04 392

原创 2017广东工业大学程序设计竞赛决赛-G题-等凹数字

这题在求回文串的基础上还要等凹。可以视为LightOJ 1205的升级版,不知道如何写回文串的数位DP可以打开链接LightOJ 1205因为这题只需要加多2维,最高位的数字以及前一位(用于判断升降) (此思想来自于点击打开链接)在回文串的前半部分不能大于pre,后半段不能小于pre。然后最后判断是否全为一个数字就可以了。#pragma comment(linker,

2017-03-29 12:35:13 700

原创 LightOJ 1205

关键维护三个变量start,dex,flag,分别代表开始位,当前位,开始位到当前位是否回文。#pragma comment(linker, "/STACK:1024000000,1024000000")#include #include #include #include #include #include #include #include #inclu

2017-03-29 12:15:11 510

原创 关于大整数相乘

由于int范围有限,对于大整数相乘必定不能直接用*符号,而是用char型数组记录,通过模拟乘法达到大整数相乘的效果,假定a数组长度为A,b数组长度为B。求出来的大整数长度有三种可能,1.A+B(最后一位无进位),2.A+B+1(最后一位有进位),3.0(数a或者数b其一为0)(不要忽略这种可能,我就是忽略了这个一直WA....)代码如下,void bigmultiply_m

2016-05-27 21:20:31 1227 2

原创 关于大整数相加与相减

大整数相加核心:void bigadd_methods(char *a, char *b, char *c) { //确保数组a长于数组b int A = strlen(a), B = strlen(b), add, k = 0; for (int i = 0; i<A; i++) { if (B - i>0&&k) add = a[A - 1 - i] + b[

2016-05-25 22:28:45 1609

原创 Uva 129 Krypton Factor(困难的串)

运用回溯法,是否包含两个相邻的的字串只需要判断当前串的后缀代码如下:#include #include #include #include #include #include #include #include using namespace std;int n,l,cnt,times=0;int A[99];int dfs(int cur){

2016-05-18 22:05:41 495

原创 Uva 524 Prime Ring (素数环)

有什么问题评论问,必回!!!!代码如下:#include #include #include #include #include #include #include #include #define max 16*16+5using namespace std;int isp[max],vis[max],A[max];int n,rows=0;

2016-05-17 21:04:52 433

原创 UVa 10976 Fractions Again?!

只需要枚举y,即可得到x,关键知道枚举y的范围,因为x>=y, 所以1/x.~~代码如下:#include #include #include #include #include #include #include #include using namespace std;struct node{ double x; double y;}dat

2016-04-29 11:35:54 421

原创 UVa 11059 Maximum Product

这题本应属于最大连续子序列(动态)的题,但n小于等于18,所以直接枚举起点和终点,然后求最大值就可以了。注意一点的是si的最大值为10,所以乘积最大为 pow(10,18), 所以要用 long long 存下乘积值代码如下:#include #include #include #include #include #include #include #

2016-04-29 10:58:29 372

原创 UVa 725 Division

只要枚举fhhij即可得到abcde了~~然后再判断10个数字是否完全不同即可,不过这题的输出格式有点刁钻,可以留意下代码如下#include #include #include #include #include #include #include #include using namespace std;int panduan[10];int ma

2016-04-28 21:54:29 530

原创 HDU 5671 Matrix

这题直接用枚举是要TLE的,关键步骤是要用4个数组来存下变化的行数,列数,行数增加的数与列数增加的数,最后输出是就通过这个4个数组作导索来输出数据还有一点就是交换行,列数 数组时要记得交换行,列增加数 数组时间复杂度为:O(q+m*n)代码如下:#include #include #include #include #include #includ

2016-04-28 20:08:34 430

原创 HDU 5665 lucky

题意简化为给你一个集合,集合里面的数均为非负整数,问你这个集合的数通过加法(1个数可以用多遍)能否得到任意自然数。其实就是判断集合里面是否有1,,~~但是这里有个小坑就是还要判断是否有0的情况,,(当初我认为自然数是没有0的,所以BC上就被Hack了。。)代码如下:#include #include #include #include #include

2016-04-18 21:11:49 465

原创 UVA 1025 A Spy in the Metro(城市里的间谍)

本题思路为以时间为“序”,用dp[i][j]表示时刻i,在车站j还需要等待多少时间边界条件为dp[T][n]=0.在1个车站 可以有3种决策:                                              1:等1分钟                                              2:搭向左去的车。           

2016-04-07 21:59:34 959

原创 TYVJ 1214 硬币问题

描述  有n种硬币,面值为别为a[1],a[2],a[3]……a[n],每种都有无限多。给定非负整数s,可以选取多少个硬币使得面值和恰好为s?输出硬币数目最小值和最大值输入格式第1行n第2行s第3到n+2行为n种不同的面值输出格式第1行为最小值第2行为最大值-------------------------------

2016-04-05 21:36:29 779

原创 NYOJ 16 矩形嵌套

描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。输入第一行是一个正正数N(0每组测试数据的第一行是一

2016-04-03 16:06:28 555

原创 HDU 2084 数塔

本题可用递推法和递归法。其状态转移方程为:dp[i][j] = num_of_power[i][j] + max(dp[i + 1][j], dp[i + 1][j + 1]);1(递推法): 使用递推方式,从数塔底部往上推,关键是要注意边界和计算的顺序。 Time:46MS     Memory:1656K 代码如下:#include #include #

2016-03-31 21:10:09 479

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除