- 博客(21)
- 收藏
- 关注
原创 作业二十八 单词拼接
#include#include#includeusing 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
269
原创 作业 二十七 三国志
解题思路:Dijkstra算法(单源最短路径)和0-1背包,但是要考虑重边#include#include#include#includeusing 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
350
原创 作业二十六 Arbitrage
#include#include#define max 31double 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
283
原创 最短路径问题 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
295
原创 题目二十 士兵杀敌(二)
//用到树状数组,单纯用数组会超时#includeconst 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
487
原创 题目十九 汽车考察
#include#include#include#include#define max 10010using 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
302
原创 题目十八 独木舟上的旅行
#include#includeusing 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;iscanf("%d",&a[i]);sort(a,a+n);int h=n; in
2017-08-01 08:10:32
235
原创 题目十六 贪心算法+优先队列
#include#include#include#include#includeusing 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
461
原创 题目 十五 并查集
#include#include#includeusing 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
263
原创 题目 14 食物链
#includeusing namespace std;int p[150005],r[150005];void I(){for(int i=0;ip[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
387
原创 题目 13中位数
#include#include#includeusing 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
292
原创 题目十二 子序列长度
#include#include#include#include#include#include#includeusing namespace std;#define p 1200000#define INF 0x3f3f3f3fint main(){ int dp[p]; int a[p]; int N,S,T,i,j; scanf("
2017-07-18 18:33:25
233
原创 题目十一 Apple catching
#include#includeint 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
263
原创 题目 10 划分数
#includeint 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
439
原创 题目八 Sumsets
#include#define MAX 10e5+10#define MOD 10e8long 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
233
原创 题目六 子串和
#include#includeconst int M=1000010;int a[M];int main(){int t;scanf("%d",&t);while (t--){int n;scanf("%d",&n);for (int i=0;iscanf("%d",&a[i]);int sum,Max;Max=sum=a[0];f
2017-06-26 21:09:23
256
原创 题目五 喷水装置(二)
#include#include#includeusing 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
345
原创 题目四 大数的阶乘
#includeint 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
298
原创 题目三 蛇形填数(二)
思路来源:蛇形填数(一)#include #include using namespacestd;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
252
原创 题目二 吝啬的国度
#include #include #include #define MAX 100001using 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
205
原创 作业一 数7
题目:数7是一个简单的饭桌游戏,有很多人围成一桌,先从任意一人开始数数,1、2、3……那样数下去,逢到7的倍数(7、14、21……)和含有7的数字(17、27……)必须以敲桌子代替。如果有谁逢7却数出来了,就要接受惩罚。小明觉得这个游戏太简单了,于是对它做出了改进,那就是每逢到素数的时候就以敲桌子代替,并且数数的方向发生改变,而且最开始的那个人可以从1到10000中选一个合数,开始数数。假设现在有
2017-06-11 21:58:17
1011
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人