作业练习
文章平均质量分 64
XIAO_KE_15
这个作者很懒,什么都没留下…
展开
-
作业 二十七 三国志
解题思路: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 · 318 阅读 · 0 评论 -
作业二十六 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 · 250 阅读 · 0 评论 -
作业二十八 单词拼接
#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 · 260 阅读 · 0 评论 -
最短路径问题 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 · 280 阅读 · 0 评论 -
题目二十 士兵杀敌(二)
//用到树状数组,单纯用数组会超时#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 · 466 阅读 · 0 评论 -
题目十六 贪心算法+优先队列
#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 · 432 阅读 · 0 评论 -
题目十九 汽车考察
#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 · 284 阅读 · 0 评论 -
题目 十五 并查集
#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 · 242 阅读 · 0 评论 -
题目 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 · 359 阅读 · 0 评论 -
题目十八 独木舟上的旅行
#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 · 210 阅读 · 0 评论 -
题目十二 子序列长度
#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 · 210 阅读 · 0 评论 -
题目 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 · 275 阅读 · 0 评论 -
作业一 数7
题目:数7是一个简单的饭桌游戏,有很多人围成一桌,先从任意一人开始数数,1、2、3……那样数下去,逢到7的倍数(7、14、21……)和含有7的数字(17、27……)必须以敲桌子代替。如果有谁逢7却数出来了,就要接受惩罚。小明觉得这个游戏太简单了,于是对它做出了改进,那就是每逢到素数的时候就以敲桌子代替,并且数数的方向发生改变,而且最开始的那个人可以从1到10000中选一个合数,开始数数。假设现在有原创 2017-06-11 21:58:17 · 948 阅读 · 0 评论