- 博客(48)
- 收藏
- 关注
原创 CodeForces 109A
这道题目,如果理解了就很简单,思路清晰就会知道解题方法,我是看别人的代码才知道这种方法的,以后可以采用:#include #include #include using namespace std;int main(){ int n; int num4,num7; int i,j; while(scanf("%d",&n)!=EOF) {
2013-07-31 19:12:24 661
原创 HDU 1575
自从学长教了我学了矩阵乘法后,感觉自信多了,学到了一点东西就是好!下面是个矩阵乘法,接着上一题的学习,就刷了一下这个题目!其实矩阵乘法快速幂不难。就是把矩阵也看成一个数!#include #include #include #include using namespace std;const int maxn=15;//一开始数组开小了,WA了两次int n,k1,
2013-07-31 13:28:35 544
原创 HDU 1420
这道快速幂取模,是最基本的,常数的快速幂取模了!#include #include #include #include using namespace std;__int64 fun(__int64 a,__int64 b,__int64 c){ __int64 k; k=1; a%=c; while(b>=1) { if
2013-07-31 10:25:13 623
原创 poj 1503 hdu 1002
poj 1503:#include #include #include #include using namespace std;const int maxn=110;char s[maxn];int sum[maxn];int main(){ int i,j,len; while(scanf("%s",s)) {
2013-07-28 13:47:20 465
原创 HDU 2962
这是一道 二分+最短路 的题目!题意是:给你一些城市之间的距离,和卡车最多能装的!然后给出起点和终点!思路:就是先用二分,找出最大卡车能装的,然后在用Dijstra来验证当这个重量时,起点到终点有没有最短路!代码:#include #include #include #include using namespace std;const int maxn=1005;const
2013-07-27 16:39:05 572
原创 HDU 2923
//这两天做的最短路,基本上都和字符串扯上关系了,都要用map容器,尤其是这题,写起代码来有点耗时间,//而且要注意的细节特别多,只要多刷刷这样的题目,下次看到这样的题目,就不会那么//害怕了,知道一步一步来,用map来解决问题!//////#include #include #include #include #include #include using names
2013-07-27 11:30:40 486
原创 HDU 1217
这道题目要注意理解题目的意思:给你一些货币的种类,然后告诉你各种货币之间的转换率,求如果一种货币能够通过不断的转换最后得到的钱比自己还大,即盈利了!像这种字符串的,用map容器来做,会更加简单!#include #include #include #include #include using namespace std;const int maxn=35;do
2013-07-27 10:07:42 595
原创 HDU 1548
这道最短路的题目,要注意理解,要转化,#include #include #include #include using namespace std;const int inf=0x3f3f3f3f;const int maxn=205;int mp[maxn][maxn];int dist[maxn];bool p[maxn];int k[maxn];int n,a,b;
2013-07-26 21:43:15 475
原创 ZOJ 1074
这是一道求最大子矩阵题目,这是别人的代码,我看了好久,才明白他的思路:#include #include #include #include using namespace std;const int maxn=105;int a[maxn][maxn];int sum[maxn];int n;int main(){ int i,j,k,maxn; wh
2013-07-26 19:16:00 528
原创 HDU 2112
这道最短路的题目,需要用map容器来转化两地之间的距离,把字符串转化为数字!#include#include#include#include#include#includeusing namespace std;#define INF 0x3f3f3f3f#define Max 155int dis[Max], res[Max][Max];bool visit[Max];
2013-07-26 18:23:51 456
原创 HDU 1690
这道题目的意思我倒是看懂了,数据也过的了,但是就是WA了,后来重敲了一遍,把floyd函数放里面就过了!#include #include #include #include const int maxn=105;__int64 mp[maxn][maxn];__int64 b[maxn];int main(){ int t; int n,m; int
2013-07-23 21:36:57 585
原创 HDU 2066
这道最短路的题目上次做过,这次写时,一直错了,我实在不知道错了哪里,后来改了,直接看代码就知道我错哪里了!#include #include #include #include using namespace std;const int maxn=1005;const int inf=0x3f3f3f3f;int mp[maxn][maxn];int dist[maxn];in
2013-07-23 17:26:03 559
原创 HDU 1385
吐个槽,第一遍的时候竟然是输出受限制,但结果却是对的,后来删了重新敲了一遍,竟然AC了!坑啊!#include #include #include using namespace std;const int inf=0x3f3f3f3f;const int maxn=505;int mp[maxn][maxn];int pre[maxn][maxn];int cost[maxn]
2013-07-23 16:44:25 591
原创 HDU 1002
这是一道字符串的问题,看起来很难,其实只要你思路清晰,就会知道些了!#include #include #include #include #include using namespace std;const int maxn=100005;char s[maxn];int a[maxn];int pp(char c){ if(c=='A'||c=='B'||c=
2013-07-22 20:16:59 539
原创 Codeforces Round #188 (Div. 2) B题
这题意思很清楚,不过我们也可以通过样例知道!思路是:只要出现metal,然后前面出现几个heavy就可以组合成几种!这里有两种答案:一:#include #include #include #include #include using namespace std;const int maxn=1000000+10;char a[3][6]= {"hea
2013-07-22 16:34:38 570
原创 HDU 1062
这是一道字符串的题目,就是把空格前面的字符串反过来!#include #include #include #include using namespace std;int main(){ int n; char a[1005]; int i,len; int j,k; while(scanf("%d",&n)!=EOF) {
2013-07-22 11:33:58 499
原创 HDU 1177
#include #include #include #include //#include using namespace std;struct p{ int num;//题目数 int h;//小时 int f1;//分钟 int m;//秒 int pos;//记录位置} f[140];int cmp(p x,p y){
2013-07-21 21:50:37 552
原创 HDU 2115
这道题目一看就知道是用结构体做,因为有两个限制条件,一下是两个代码:(代码不同,是对字符串进行排序所用的方法不同)#include #include #include #include #include //用字符串string来比较大小一定要加这个头文件using namespace std;struct p{ string name; int hou
2013-07-21 21:49:12 574
原创 POJ 3664
这道题目的意思就是,给你N头牛,先按第一列排序,(如果第一列有相同的,就按第二列排序),然后对前K头牛先按第二列排序,(如果有相同的,就按第一列排序),得到票数最高的这头牛在原来一开始的标号是多少!输出来代码如下:#include #include #include #include const int maxn=50005;using namespace std;struct p
2013-07-21 21:44:34 676
原创 HDU 1177
#include #include #include #include //#include using namespace std;struct p{ int num;//题目数 int h;//小时 int f1;//分钟 int m;//秒 int pos;//记录位置} f[140];int cm
2013-07-21 19:49:19 677
原创 HDU 2152
#include #include #include using namespace std;int main(){ int n,m; int i,j,k; int a1[105],a2[105],b[105],c[105]; while(cin>>n>>m) { for(i=1; i<=n; i++) {
2013-07-21 15:57:13 536
原创 HDU 1085
#include #include #include using namespace std;int main(){ int a1[2005],a2[2005],c[3],d[4]= {1,2,5}; while(scanf("%d%d%d",&c[0],&c[1],&c[2]),c[0]+c[1]+c[2]) { int sum;
2013-07-21 13:59:29 454
原创 Codeforces Round #192 (Div. 2) A题
今天在做比赛被虐了,于是做做CF,没想到又被虐了,第一题本来是有思路的,就是卡在一个地方了!以下借鉴大神的思路:一:#include #include #include #include using namespace std;#define clr(u) memset(u,0,sizeof(u))int main(){ int ans; int i,j;
2013-07-21 09:27:44 581
原创 HDU 1085
#include #include #include using namespace std;const int maxn=8005;int a1[maxn];int a2[maxn];int c[3]= {1,2,5};int d[3];int main(){ int sum,i,j,k; while(scanf("%d%d%d",&d[0],&d[1],&d
2013-07-19 22:47:54 429
原创 HDU 1028
这道题目一看就是利用母函数,代码如下:#include #include #include using namespace std;const int maxn=1005;int a1[maxn];int a2[maxn];int main(){ int n,i; int j,k; while(scanf("%d",&n)!=EOF) {
2013-07-19 17:28:40 455
原创 二分快速幂
今天我发现一种求快速幂的方法!二分快速幂!例题如下:次方求模求a的b次方对c取余的值输入第一行输入一个整数n表示测试数据的组数(n每组测试只有一行,其中有三个正整数a,b,c(1=输出输出a的b次方对c取余之后的结果样例输入32 3 53 100 1011 12345 12345样例输出31#inclu
2013-07-19 10:55:27 555
转载 线段树
一般能用树状数组解决的问题,都可以用线段树解决。但是能用线段树解决的问题,树状数组不一定能解决。可能有人会有疑问,那你为什么还要写树状数组啊,因为树状数组实现起来比线段树简单百倍,非常容易掌握。 关于线段树,分享几个别人写的文章。我就不粘贴了,嘿嘿http://blog.csdn.net/tsaid/article/details/6665764 线段树基础知识。http://www.ah
2013-07-19 10:23:11 544
转载 POJ 2528 Mayor's posters 线段树+离散化
树基础知识从简单说起,线段树其实可以理解成一种特殊的二叉树。但是这种二叉树较为平衡,和静态二叉树一样,都是提前已经建立好的树形结构。针对性强,所以效率要高。这里又想到了一句题外话:动态和静态的差别。动态结构较为灵活,但是速度较慢;静态结构节省内存,速度较快。接着回到线段树上来,线段树是建立在线段的基础上,每个结点都代表了一条线段[a , b]。长度为1的线段成为元线段。非元线段都有两个子结点,
2013-07-19 10:20:43 437
原创 hdu 2795
/*这道题目如果你想通了,知道可以用线段树的话,那么这是一道简单的线段树题目,我比赛的时候没有想出来,赛后做时,看了别人的代码,才明白过来,就是以广告牌的长度建树,当为叶子节点时,它的值为广告牌的宽度,后然不断的询问,如果真正理解了线段树的意义的话,就可以马上知道该题是用线段树,我只是菜鸟,不过这道题目还有几个细节要注意一下,不然也过不了,下面我会注释出来!*/#include #
2013-07-19 10:10:49 436
原创 Codeforces Round #169 (Div. 2) B题
#include #include #include using namespace std;const int maxn=1005;char s[maxn];int a[maxn];int main(){ int i; while(gets(s)!=NULL) { //getchar(); memset(a,0,sizeof
2013-07-18 21:45:48 441
原创 HDU 1851
这道题目有点怪异,就是告诉你每堆的石头个数,还有就是每堆的取石头范围,这和Nim博弈不同,一开始我想成Nim博弈了,后来才发现,Nim博弈是告诉我们几堆石头的个数,然后就是,每次取的范围,而不是每堆的取石头范围!想了好久,没有想出来,看了别人的题解,也看不懂为什么要这样,后来和同学一讨论,才理解了,就是先利用巴什博弈,求出每堆按照巴什博弈的方法取,剩下的数量,因为巴什博弈中 K*M根本就不影响结
2013-07-18 19:17:31 626
转载 博弈总结
有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
2013-07-18 16:38:53 506
原创 HDU 2899
一直在写二分的题目,竟然还是不知道遇到题目怎样用二分,这道题目也是看了大神的思路才知道,求导,因为我们要找的事F(X)的最小值,相当于我们数学中函数的极值问题了,那就是先判断单调了,找出极值点了,详细看代码!#include #include #include using namespace std;const double p=1e-10;//一开始这里写成了int型的,一直没有结果,
2013-07-17 14:08:53 425
原创 HDU 2141
这是一道二分题目,一开始我没有想到怎么做,因为二分都是针对于两个变量啊!而这里有三个变量,真不懂怎么办!后来看了一位大神的博客才发现方法了,就是把任意两个数组加起来,合成一个数组,这样就是两个变量了!这思路太牛逼了!代码如下:#include #include #include #include #include using namespace std;const int maxn
2013-07-17 11:05:34 498
原创 Codeforces Beta Round #95 (Div. 2)
//这是一道组合题目,比赛的时候我也是这样想的,可我是用两个函数分开来算的,//这样导致的结果就是直接爆掉,然后WA,后来问别人才知道,把他们用一个函数,//而且尽量用sum1+=C(n,i)*C(m,t-i)这样就不会爆掉了,而且这里出现了一个奇葩的事,//就是不能sum1*=C(n,i)*C(m,t-i),至于为什么我也不知道!#include #include #includ
2013-07-16 10:50:38 443
原创 HDU 1088
//这里主要是用n来标记看是否是在一行的开头!当n=0时,就在开头,否则就不在!//还有就是不要用scanf来输入字符串,这样会超时,这题就用scanf超时了,用cin就//AC了,奇葩啊!一般cin的时间会比scanf多啊!#include #include #include using namespace std;char s[81];int n;int main(){
2013-07-16 10:00:03 577
原创 hdu 1301
这道题目我在poj上也做过,要做稍微的转化!#include #include #include using namespace std;const int maxn=30;const int inf=0x3f3f3f3f;int map[maxn][maxn];int dist[maxn];bool p[maxn];int sum;int n;
2013-07-15 12:14:34 603
原创 HDU 4190
这道题目和1969题意差不多,连思路都差不多,具体代码如下:#include #include #include #include using namespace std;const int maxn=500001;int p[maxn];int mid;int n,b;bool ff(int k){ int i,sum=0; for(i=0; i<n;
2013-07-14 20:12:00 702
原创 HDU 1969
这是一道二分的题目,别人都说是水题,而我刚学二分,不知道什么时候才用二分,只知道当求方程的解时用二分,这题的题目意思很坑爹,题目大意是:办生日Party,有n个馅饼,有f个朋友,接下来是n个馅饼的半径。然后是分馅饼了,注意咯自己也要,大家都要一样大,形状没什么要求,但都要是一整块的那种,也就是说不能从两个饼中各割一小块来凑一块,像面积为10的和6的两块饼(饼的厚度是1,所以面积和体积相等),
2013-07-14 19:11:50 526
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人