解题报告
文章平均质量分 56
ak8877
这个作者很懒,什么都没留下…
展开
-
NCPC 2014 H clock pictures
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1794题目是问两个钟能否重合,考虑将数据读入后排序,之后作差产生新的序列(注意作差的时候要作N个,即最后一个与第一个之间的差也要做上,否则会WA)产生的两个差序列进行匹配就可以,有两种方法,首先想到的是循环KMP,将一个序列复制一遍用另一个序列进行匹配就可以。代原创 2016-09-04 15:37:00 · 652 阅读 · 0 评论 -
day5 POJ 3737 UmBasketella
求锥形的最大体积,还是三分,注意尽量减少除法操作#include"iostream"#include"iomanip"#include"cmath"using namespace std;const double PI=3.1415926535898;double sh(double ra,double s){ double len; len=(s/PI)/ra-r原创 2016-08-02 23:25:53 · 271 阅读 · 0 评论 -
day5 POJ 3301 Texas Trip
求包含所有点的最小正方形,貌似旋转坐标系正方形的面积会是一个单峰函数? 没有证明,但是这样做能AC,好像要用旋转卡壳来做比较好。#include"iostream"#include"cmath"#include"iomanip"int n;const double PI=3.1415926535898;struct node{ double x,y;};node原创 2016-08-02 23:23:46 · 192 阅读 · 0 评论 -
day5 HDU 2289 Cup
二分求答案就行了,加点数学知识#include"iostream"#include"iomanip"#include"math.h"using namespace std;const double PI=3.141592653589793;double R,r,H,v;double V(double r1,double r2,double h){ return原创 2016-08-02 23:21:42 · 186 阅读 · 0 评论 -
day5 HDU 2298 Toxophily
推数学公式。。没什么大意义。。应该用三分? 没想出单峰的证明#include"iostream"#include"iomanip"#include"cmath"using namespace std;const double PI=3.1415926535898;const double g=9.8;int t;double x,y,v;int main() {原创 2016-08-02 23:20:41 · 223 阅读 · 0 评论 -
day4 CodeForces 616A Comparing Two Long Integers
水。。#include"iostream"#include"stdio.h"#include"string.h"using namespace std;int main(){ char s1[1000010],s2[1000010]; scanf("%s",s1); scanf("%s",s2); int p=0,q=0; while(s1[p原创 2016-08-02 23:17:05 · 232 阅读 · 0 评论 -
day4 POJ 1035 Spell checker
模拟题,没什么可说的,可以先读入字典,再将单词逐个读入输出,可以保证顺序,同时注意对字符数组的操作要细心#include"iostream"#include"string.h"#include"cmath"using namespace std;char d[10001][16];char w[16];int ld=0,lw=0;int dlen[10001];cha原创 2016-08-02 23:16:03 · 296 阅读 · 0 评论 -
day4 CodeForces 27E Number With The Given Amount Of Divisors
首先是关于因数的一个性质若X=(p1^a1)*(p2^a2)*....*(pn^an)则X的因子个数为(a1+1)*(a2+1)*……*(an+1)其中p是素数那么就可以打出一个质数表,对素数和幂次DFS搜索即可#include"iostream"using namespace std;long long x;int p[20]={2,3,5,7,原创 2016-08-02 23:14:13 · 292 阅读 · 0 评论 -
day4 POJ 3372 Candy Distribution
写好程序后交上去TLE,之后对拍发现答案就是判断是否为2的幂。。so。。#include"iostream"using namespace std;int f(int n){ return((n&(n-1))==0);}int main(){ int n; while(cin>>n) { if(f(n)) cout<<"YES"<<e原创 2016-08-02 23:07:57 · 183 阅读 · 0 评论 -
day4 CodeForces 589F Gourmet and Banquet
题目是要求每道菜都能吃的最大区间,首先可以将区间按照右端点排序,可以让当前区间队后面区间的影响最低,之后从最大区间往下扫找到符合的答案就可以了#include"iostream"#include"memory.h"#include"algorithm"using namespace std;int n;struct node{ int l,r;};node d[10005原创 2016-08-02 23:05:51 · 201 阅读 · 0 评论 -
day6 HDU 1312 Numerically Speaking
地图上的BFS,在每个点的访问标志上记录步数能节省一些空间#include"iostream"#include"queue"using namespace std;queueq;int sum=1;int m,n,x,y;char g[25][25];int v[25][25];int dx[4]={0,0,1,-1};int dy[4]={1,-1,0,0};原创 2016-08-02 23:27:25 · 211 阅读 · 0 评论 -
day5 HDU 2899 Strange fuction
写好公式三分就可以了,注意精度设置#include"iostream"#include"iomanip"#include"math.h"using namespace std;double F(double x,double y){ return 6*x*x*x*x*x*x*x+8*x*x*x*x*x*x+7*x*x*x+5*x*x-y*x;}double find(d原创 2016-08-02 23:18:49 · 152 阅读 · 0 评论 -
day6 POJ 1915 Knight Moves
八个方向的棋盘BFS,记录操作数就好#include"iostream"#include"queue"using namespace std;queueq;int l;int sum=0;int m,n,x,y,sx,sy,ex,ey;int g[310][310];int v[310][310];int dx[8]={-2,-1,1,2,-2,-1,1,2};in原创 2016-08-02 23:28:57 · 321 阅读 · 0 评论 -
HDU 4355 Party All the Time(三分)
一条直线上有些点,要求所有点到一个点的距离乘权值巴拉巴拉最小,找该点,单峰,三分。#include"iostream"#include"cmath"#include"iomanip"#include"stdio.h"using namespace std;double x[50005],w[50005];int n;double calc(double d){原创 2016-10-24 22:20:43 · 221 阅读 · 0 评论 -
CodeForces 687A NP-Hard Problem(二分图)
判断一个图是否为二分图,染色DFS即可#include"iostream"#include"stdio.h"#include"vector"using namespace std;int flag=0;int n,m;vector g[100005];vector sum[2];int type[100005];int v[100005];void dfs(int原创 2016-08-22 19:06:27 · 223 阅读 · 0 评论 -
HDU 2614 Beat(DFS)
一道简单的DFS,搜索过程中记录上一个访问值,只搜索比他大的的值即可#include"iostream"#include"string.h"#include"memory.h"using namespace std;int t[17][17];int v[18];int n;int maxx;void dfs(int s,int step,int last){ if(原创 2016-08-22 19:04:16 · 291 阅读 · 0 评论 -
CodeForces 681C Heap Operations
一道模拟题,开一个优先队列进行模拟就可以了,主要边界条件以及队列为空的状态#include"iostream"#include"cmath"#include"iomanip"#include"stdio.h"#include"string"#include"queue"#include"vector"using namespace std;priority_queue,原创 2016-08-22 19:02:03 · 196 阅读 · 0 评论 -
HDU1242 Rescue
简单的BFS记录,要注意起点可能有多个,所以要做多次BFS,在这里WA了一次#include"iostream"#include"queue"#includeusing namespace std;char g[220][220];int vis[220][220];int cos[220*220];int n,m;int sum;int temp,cnt;int原创 2016-08-22 18:59:18 · 324 阅读 · 0 评论 -
day6 HDU 1241 Oil Deposits
一开始没有注意nm的输入顺序。。结果WA了。。很难找出错误。。所以就算题目很像也不要随便copy代码。 。。八个方向进行DFS ,用标记数组记录个数就行了#include"iostream"#include"queue"using namespace std;queueq;int sum=0;int m,n,x,y;char g[110][110];int v[11原创 2016-08-02 23:41:49 · 163 阅读 · 0 评论 -
day6 CodeForces 689B Mike and Shortcuts
这道题可以看作每个点有三条边的图,每条边的代价都是1,这样直接DFS一遍就可以了#include"iostream"#include"queue"#include"cmath"using namespace std;queueq;int n;int a[200000+5];int v[200000+5];void BFS(){ while(!q.e原创 2016-08-02 23:39:05 · 272 阅读 · 0 评论 -
day6 POJ 1426 Find The Multiple
从1开始BFS 找答案即可,每次搜索后都对结果进行模处理,对最终结果不会有影响,而实际这道题数据比较小,开longlong直接dfs也能过#include"iostream"using namespace std;int n,flag;void DFS(unsigned long long x,int sum){ if(flag||sum==19) {原创 2016-08-02 23:37:00 · 173 阅读 · 0 评论 -
day6 POJ 3126 Prime Path
求解两个素数之间最小的变换,每次只能变动一个数字并且变动后必须为素数。BFS的本质是搜索当前状态改变一次所能到达的所有状态,那么只需要枚举四个数字每个数字的变化并且进行搜索就可以了这里注意一个点,在写判断素数的函数的时候 i#include"iostream"#include"queue"#include"cmath"using namespace std;queueq原创 2016-08-02 23:30:11 · 159 阅读 · 0 评论 -
day3 HDU 1455 Sticks
题目要求是拼木棍,求能拼出的最短长度。因为选择比较多,考虑长度从小到大进行DFS,但是这道题有很多可以剪枝的地方。1.对数组进行排序,从较大的木棍开始拼2.长度一定是可以整除总长度的3.长度最长不会超过总长度的一半4.注意随时进行判断,如果剩下的木棍无法拼成了就立即退出。#include"iostream"#include"algorithm"using namespace原创 2016-08-02 22:58:44 · 168 阅读 · 0 评论 -
day3 HDU 1427 速算24点
24点的计算可以简化为加括号和不加括号两种不加括号即为顺序运算,加括号即改变顺序,a*(b*c)即可。另外要求计算过程中不出现小数,所以结果都可以用int保留,但是注意对小数出现后的处理。#include"iostream"#include"cmath"#include"string"using namespace std;double num[4];int dfs(int n)原创 2016-08-02 22:46:38 · 614 阅读 · 0 评论 -
HDU1789 Doing Homework again 贪心
简单贪心,将课程分数降序时间升序排好,从后往前扫就可以了#include"iostream"#include"algorithm"#include"string.h"#include"memory.h"using namespace std;struct node{ int x,y;};int cmp(node a,node b){ if(a.x==b.x)原创 2016-10-24 22:57:59 · 186 阅读 · 0 评论 -
HDU 4864 Task(贪心)
比较有趣的一个题,打一下XJB贪心的脸。看到题目是说机器和任务,有时间和等级,机器时间和等级必须大于等于任务的才能工作,然后求最多可获得的金钱。由于公式是500*x+2*y,考虑下数据范围,Y的影响再大也不会超过X的优先级,所以可以以X为第一关键字排序。之后就是贪心的方法,一开始看到贪心就随便贪心一发,但是这个题目需要你仔细考虑下应该如何贪心。一开始是用的机器去找任务,然而这种方法原创 2016-10-24 22:53:13 · 264 阅读 · 0 评论 -
CodeForces 681B Economy Game (暴力)
暴力求解水#include"iostream"using namespace std;long long n,m;int main(){ cin>>n; long long p=1e9/1234567+1; long long q=1e9/123456+1; int flag=0; for(int i=0;i<=p;i++)原创 2016-10-24 22:34:44 · 244 阅读 · 0 评论 -
Codeforces-691C Exponential notation(模拟)
又是一道模拟,将小数表示转化为科学计数法,写模拟的时候首先要保证思路清晰,之后不要着急下手,可以先想想有没有更好的实现方法。#include"iostream"#include"stdlib.h"#include"string"using namespace std;string s;string a,d,c;int b;int main(){ cin>>s;原创 2016-10-24 22:33:10 · 236 阅读 · 0 评论 -
Codeforces-697B Barnicle(模拟)
题意是将一个数字的科学计数法转化为完整数字,模拟即可,不过要注意左0右0等等特殊情况,之前开始是用的一个个字符读入进字符数组然后进行分类讨论很复杂,后来发现直接读入字符串进行统一的划分操作即可#include"iostream"#include"stdlib.h"#include"string"using namespace std;string s;string a,d,c原创 2016-10-24 22:26:43 · 224 阅读 · 0 评论 -
day2 CodeForces - 1A
#include"iostream"using namespace std;int main(){long long n,m,a;long long l,r;cin>>n>>m>>a; l=n/a; if(n%a!=0) l++; r=m/a; if(m%a!=0) r++;cout<<l*r<<endl; return 0;}贪心即可,注意考虑数据范围要原创 2016-07-21 14:10:48 · 179 阅读 · 0 评论 -
day2 HDU - 1061
#include"iostream"using namespace std;long long qp(long long n,long long k,long long mod){ long long ans=1; while(k) { if(k&1) ans=ans*n%mod原创 2016-07-21 14:13:06 · 170 阅读 · 0 评论 -
day2 HDU - 2899
#include"iostream"#include"iomanip"#include"math.h"using namespace std;double f(double x){ return 42*x*x*x*x*x*x+48*x*x*x*x*x+21*x*x+10*x;}double F(double x,double y){ return 6*x*x*x*x原创 2016-07-21 14:16:37 · 169 阅读 · 0 评论 -
day2 POJ - 1995
#include"iostream"using namespace std;long long qp(long long n,long long k,long long mod){ long long ans=1; while(k) { if(k&1) ans=ans*n%mod; n=n*n%mod; k>>=1;原创 2016-07-21 14:19:36 · 199 阅读 · 0 评论 -
HDU 4296 Buildings
PDV = s - w[i] - s[i] = s - (w[i] + s[i]) 每次选出里面的w + s 最大的即可,排序+贪心。#include"iostream"#include"algorithm"using namespace std;struct node{ int w,s;};node a[100005];int cmp(node a,node原创 2016-10-24 23:04:27 · 223 阅读 · 0 评论 -
Codeforces 621B Wet Shark and Bishops
水题,找出两种对角线的规律就可以了#include"iostream"#include"stdio.h"#include"memory.h"#include"string.h"using namespace std;int x[200005],y[200005];int p[2000],q[2000];int main(){ int n; while(ci原创 2016-10-24 23:08:08 · 272 阅读 · 0 评论 -
CodeForces 501C Misha and Forest(异或和)
给出一个森林,每个点的度和相邻点异或和,求所有边开始没注意到是森林,摸不到头脑,后来发现从叶子节点开始BFS,这样每次都能出来一条边,遍历完就可以了。#include"iostream"#include"cmath"#include"queue"#include"vector"using namespace std;int d[70000],s[70000];q原创 2016-10-24 23:11:49 · 290 阅读 · 0 评论 -
day3 POJ 2531 Network Saboteur
#include"iostream"using namespace std;int n,maxx;int c[22][22];int v[22];void calc(){ int temp=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(v[i]&&!v[j]) temp+=c原创 2016-07-25 08:57:18 · 181 阅读 · 0 评论 -
day3 HDU 1016 Prime Ring Problem
#include"iostream"#include"cmath"using namespace std;int a[50],v[50];int n;int f(int x){ for(int i=2;i<=sqrt(x);i++) if(x%i==0) return 0; return 1;}bool play(int k) { //co原创 2016-07-25 08:54:52 · 159 阅读 · 0 评论 -
day3 HDU 2553 N皇后问题
#include"iostream"#include"stdlib.h"#include using namespace std;int a[100];int c[11];int n,sum=0;int test(int row, int col){ int i; for (i=1; i<row;++i) { if (a[i]==col||abs(i-row)原创 2016-07-25 08:51:00 · 174 阅读 · 0 评论 -
day2 POJ 2785 4 Values whose Sum is 0
#include"iostream"#include"algorithm"using namespace std;int n,k,l,r,mid,mm,sum=0;int a[4005],b[4005],c[4005],d[4005];int p[4005*4005],q[4005*4005];int main(){ cin>>n; for(int i=0;i<n;i原创 2016-07-22 09:43:23 · 193 阅读 · 0 评论