- 博客(17)
- 收藏
- 关注
原创 Sequence Poj
从网上找来了代码,自己又加了优化(先将每次读入的行排序),才结束了漫长的TLE,代码如下:#include #include #include #include #include #include #include #include #include using namespace std;const int maxn=100010;int a[2010];
2017-12-19 16:05:28
398
原创 ICS Return 1 when x contains an odd number of 1s,0 otherwise(判断二进制表示中1的个数是否为奇数)
本题棘手的地方在于不能用循环语句,并且最多只能包含12个算术运算、位运算和逻辑运算。思路找了非常久,用了从一般到特殊,才慢慢发现规律。首先来看只用两个bit的情况,未知数x共有四种(00,01,10,11),若要判断1的个数奇偶,不难发现只需用最高位异或最低位就可实现,即 x^(x>>1),如果结果为1,那么有奇数个,否则有偶数个。从中不难看出对于32位的x,若
2017-09-16 10:48:57
2693
1
原创 poj 前缀中的周期
题目:前缀中的周期用nex数组来表示字符串每个字符i的特征数,即P(0...i-1)中最大的相同前缀子串和后缀子串。对于有i个字符的字符串P,有循环节的充分必要条件应该是i%(i-nex[i-1)=0,并且循环节的个数为i/(i-nex[i-1])。代码如下:#include#include#include#include#include#include#include
2017-09-06 08:41:48
1457
原创 opj 多项式加法
将两个多项式按系数相加。具体题目:多项式加法我的做法是利用一个结点类与一个仅封装了两种操作的多项式类来实现。需要注意输出格式。具体代码如下:#include#include#include#include#include#include#include#includeusing namespace std;class Node{public: int co
2017-09-06 08:32:34
692
原创 多啦a梦的时光机 poj
简单的bfs#include #include #include #include #include #include #include #include using namespace std;const int maxn=1000001;bool visited[maxn];struct dola{ int x; int steps; dola
2017-03-26 22:21:14
916
原创 最大上升子序列和 poj
dp法。maxim[i]表示到第i位的最大上升子序列和。#include #include #include #include #include #include #include #include #include #include using namespace std;int maxsum[2000];int b[2000];int main(){
2017-03-26 22:17:39
591
原创 最大公约数 poj
只需利用初等数论的知识——辗转相除法即可#include #include #include #include #include #include #include #include #include using namespace std;int main(){ int i,j,k,m,n,N,M; while(cin>>n>>m){
2017-03-26 22:14:19
568
原创 Minecraft poj
简单的枚举题#include #include #include #include #include #include #include using namespace std;int main(){ int i,j,h,min=9999999,now,n; cin>>n; for(i=1;i<=(int)pow(n,1.0/3)+1;i
2017-03-26 22:11:05
807
原创 Flip Game
与画家问题本质上一样,都是用枚举。需要注意的仅是一些细节上的问题。#include #include #include #include #include #include #include #include #include using namespace std;int board[5][6]={0};int flip[5][6]={0};int minblack=
2017-03-26 21:50:13
395
原创 拦截导弹 poj
dp法。一维。maxint[i]表示到第i颗导弹为止最多拦截的导弹数目。技巧:temp#include #include #include #include #include #include #include #include #include #include using namespace std;int maxint[2000];int b[200
2017-03-26 21:43:31
591
原创 鸣人与佐助 poj
典型的bfs技巧在于设置了G[x][y]来进行剪枝,减少了运行时间与空间。即如果在某一点,已经有大于当前的查克拉的路线,就不再继续走这一点。#include #include #include #include #include #include using namespace std;int const maxn=205;int G[maxn][maxn];char g
2017-03-26 20:08:13
940
原创 石头剪刀布 poj
技巧:建立play1circlenumber、player2circlemumber来实现对数字的依次比较#include #include #include #include #include #include #include #include #include using namespace std;int player1[102];int player2[102]
2017-03-26 20:01:01
735
原创 古代密码 poj
本题我认为关键在于读懂题意。替换是随机的,即可以将一个字母替换成另外一个字母,并不一定像题目所举的例子那样按顺序替换。当然,每个字母只能替换其他字母一次。所以思路就很清晰:建立一个字母映射数组,对其排序,并且比较两个字符串排序后对应的字母频率是否相同。//// main.cpp// beginner//// Created by Aaron Xu on 17/1/23.//
2017-03-26 19:53:18
538
原创 放苹果 poj
本题用dp法,dp[m][n],m为当前苹果数,n为当前盘子数。当m>=n时,有两种情况,一种是每个盘子都放了一个苹果,一种是有一个盘子没苹果,因此dp[m][n]=dp[m-n][n]+dp[m][n-1];m初始化:dp[i][1]=1;dp[0][i]=1;//// main.cpp// beginner//// Created by Aaron X
2017-03-26 13:22:17
436
原创 POJ 1681 画家问题
Painter’s Problem Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6303 Accepted: 3005 DescriptionThere is a square wall which is made of n*n small square bricks. Some bricks are
2017-03-26 12:56:25
589
原创 完美立方 poj
暴力枚举。由于题目已给提示:6是最小的完美立方数,因此j从6开始。技巧在于建立一个立方数组以节省时间;程序中利用放缩,若已超出当前试验的数则break,不再往下枚举。#include #include #include #include #include #include #include #include #include using namespace std;
2017-03-26 12:42:02
592
原创 生理周期 poj
此题为枚举,但是技巧在于用一些初等数论的知识节省枚举的时间、提高枚举的效率;第一个循环每次加上23,第二个循环每次加上23与28的最小公倍数,即是23*28,大大节省时间。注意:由于找的是下一次生理周期,所以第一次枚举的i必须从23开始,不能为零。#include #include #include #include #include #include #include #i
2017-03-26 12:31:51
633
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅