- 博客(21)
- 收藏
- 关注
原创 作业二十八 单词拼接
#include #include #include using namespace std; struct node { char s[31]; int first, last; }; node a[1001]; int degree_in[1001], degree_out[1001], m, order[1001]; bool used[1001]; int f(
2017-09-14 22:59:06
292
原创 作业 二十七 三国志
解题思路:Dijkstra算法(单源最短路径)和0-1背包,但是要考虑重边 #include #include #include #include using namespace std; vector > G[105]; const int INF = 1000000; int Dij[105]; int isVisit[105]; int City[105]; int
2017-09-11 15:27:58
379
原创 作业二十六 Arbitrage
#include #include #define max 31 double map[max][max]; int n,m,t=1; void floyd() { int k,i,j,exist; for(k=1;k { for(i=1;i { for(j=1;j { if(map[i][j] { map[i][
2017-09-08 18:50:54
314
原创 最短路径问题 POJ 3268
解题思路:最短路径只需要从x到i的最短路径代表他们返回的最短路径,然后将所有边反过来,再从x到i的最短路径代表他们来参加聚会的最短路径,这样对应相加找出一个最大值就可以了,当然其实不需要将所有边反过来,在dijkstra里面两次查询i到x最短路dis[i],和从x回到i的最短返回距离disf[i].然后找出和的最大值即可 #include #include #include #i
2017-09-06 21:06:48
332
原创 题目二十 士兵杀敌(二)
//用到树状数组,单纯用数组会超时 #include const int MAXN =1000005; int bit[MAXN]; int n,m,x,y; char c[10]; int lowbit(int x){ return x&(-x); } //sum(i): 求[1, i]的和; int sum(int i){ int s=0; while(i>0){ s
2017-08-05 17:16:46
515
原创 题目十九 汽车考察
#include #include #include #include #define max 10010 using namespace std; struct node { int dist,fuel; }; node position[max]; int n,L,P; bool cmp(const node &a,const node &b) { return
2017-08-03 09:16:49
332
原创 题目十八 独木舟上的旅行
#include #include using namespace std; int main(){ int t; scanf("%d",&t); while(t--){ int w,n; int a[300]; scanf("%d%d",&w,&n); for(int i=0;i scanf("%d",&a[i]); sort(a,a+n); int h=n; in
2017-08-01 08:10:32
266
原创 题目十六 贪心算法+优先队列
#include #include #include #include #include using namespace std; struct A { int l; int r; bool operator return r>a.r; }; }cow[2505]; struct B { int f; int num; }bot[2505];
2017-07-27 10:51:28
498
原创 题目 十五 并查集
#include #include #include using namespace std; struct Point { int x,y; }; const int MAXN = 1000+100; int parent[MAXN]; int N,d; Point p[MAXN]; bool isrep[MAXN]; void make_set() { for
2017-07-25 18:12:22
285
原创 题目 14 食物链
#include using namespace std; int p[150005],r[150005]; void I(){ for(int i=0;i p[i]=i; r[i]=0; } } int find(int i){ if(p[i]!=i) p[i]=find(p[i]); return p[i]; } void unions(int x,int y){
2017-07-23 20:44:17
419
原创 题目 13中位数
#include #include #include using namespace std; int x[10005],y[10005]; int N; int p(const void *_a,const void *_b) { int *a = (int *)_a; int *b = (int *)_b; return *a-*b; } int main()
2017-07-21 20:41:05
319
原创 题目十二 子序列长度
#include #include #include #include #include #include #include using namespace std; #define p 1200000 #define INF 0x3f3f3f3f int main() { int dp[p]; int a[p]; int N,S,T,i,j; scanf("
2017-07-18 18:33:25
253
原创 题目十一 Apple catching
#include #include int dp[1002][32],num[1002]; int max(int a,int b) { return a>b?a:b; } int main() { int T,W,i,j,ans; scanf("%d%d",&T,&W); for(i = 1;i if(num[1]&1) dp[1][0] = 1; ans
2017-07-16 23:16:59
289
原创 题目 10 划分数
#include int sum=0,n; int p(int a,int b) { if(a==0) sum++; int i; if(a>0) { for(i=n; i>=1; i--) { if(a>=i&&b { p(a-i,i); } } } } int main() { int N; scanf("%d",&N); while(N--) {
2017-07-14 23:29:20
466
原创 题目八 Sumsets
#include #define MAX 10e5+10 #define MOD 10e8 long long a[MAX]; void fun(); int main() { int n; fun(); while(scanf("%d",&n)!=EOF) { printf("%d\n",a[n]); } } void fun() { int i;
2017-07-10 22:07:34
254
原创 题目六 子串和
#include #include const int M=1000010; int a[M]; int main() { int t; scanf("%d",&t); while (t--) { int n; scanf("%d",&n); for (int i=0;i scanf("%d",&a[i]); int sum,Max; Max=sum=a[0]; f
2017-06-26 21:09:23
277
原创 题目五 喷水装置(二)
#include #include #include using namespace std; struct Equipment{ int x; int r; }; bool cmp(Equipment a, Equipment b){ return a.x } Equipment e[10005]; int main(){ int t; scanf("%d", &t
2017-06-25 11:50:04
368
原创 题目四 大数的阶乘
#include int main() { int m; int a[9000];//确保保存最终运算结果的数组足够大 int digit=1;//位数 int temp;//阶乘的任一元素与临时结果的某位的乘积结果 int i,j,carry;//carry:进位 scanf("%d",&m); a[0]=1;//将结果先初始化为1 for(i=2;i {
2017-06-22 16:14:13
315
原创 题目三 蛇形填数(二)
思路来源:蛇形填数(一) #include #include using namespace std; int a[100][100]; void main(){ int n,count,x,y; cin>>n; memset(a,0,sizeof(a)); //初始化为0 count = a[x=0][y=n-1] = 1;
2017-06-20 21:07:46
275
原创 题目二 吝啬的国度
#include #include #include #define MAX 100001 using namespace std; vectora[MAX]; int b[MAX],n,s; void dfs(int x,int y){ for (int i = 0; i if (a[x][i] != y) dfs(a[x][i],b[a[x][i]]=x); re
2017-06-15 22:38:25
223
原创 作业一 数7
题目:数7是一个简单的饭桌游戏,有很多人围成一桌,先从任意一人开始数数,1、2、3……那样数下去,逢到7的倍数(7、14、21……)和含有7的数字(17、27……)必须以敲桌子代替。如果有谁逢7却数出来了,就要接受惩罚。小明觉得这个游戏太简单了,于是对它做出了改进,那就是每逢到素数的时候就以敲桌子代替,并且数数的方向发生改变,而且最开始的那个人可以从1到10000中选一个合数,开始数数。假设现在有
2017-06-11 21:58:17
1097
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅