Welcome to WordPress. This is your first post. Edit or delete it, then start writing!
【CSP-J 2019】纪念品
题目简要
小伟突然获得一种超能力,他知道未来T天N种纪念品每天的价格。某个纪念品的价格是指购买一个该纪念品所需的金币数量,以及卖出一个该纪念品换回的金币数量。
每天,小伟可以进行以下两种交易无限次:
1.任选一个纪念品,若手上有足够金币,以当日价格购买该纪念品;
2.卖出持有的任意一个纪念品,以当日价格换回金币。 每天卖出纪念品换回的金币可以立即用于购买纪念品,当日购买的纪念品也可以当日卖出换回金币。当然,一直持有纪念品也是可以的。
T 天之后,小伟的超能力消失。因此他一定会在第 T 天卖出所有纪念品换回金币。 小伟现在有 M 枚金币,他想要在超能力消失后拥有尽可能多的金币。
输入格式、样例
输入文件名为 souvenir.in。 第一行包含三个正整数 T, N, M,相邻两数之间以一个空格分开,分别代表未来天数 T,纪念品数量 N,小伟现在拥有的金币数量M。 接下来T行,每行包含 N 个正整数,相邻两数之间以一个空格分隔。第i行的N 个正整数分别为 Pi,1, Pi,2, … … , Pi,
6 1 100 50 20 25 20 25 50
输出格式、样例
输出文件名为 souvenir.out。 输出仅一行,包含一个正整数,表示小伟在超能力消失后最多能拥有的金币数量。305
其他
【输入输出样例 1 说明】 最佳策略是: 第二天花光所有 100 枚金币买入 5 个纪念品 1; 第三天卖出 5 个纪念品 1,获得金币 125 枚; 第四天买入 6 个纪念品 1,剩余 5 枚金币; 第六天必须卖出所有纪念品换回 300 枚金币,第四天剩余 5 枚金币,共 305 枚金币。 超能力消失后,小伟最多拥有 305 枚金币。
【数据规模与约定】 对于 10% 的数据,T=1。 对于 30% 的数据,T≤4,N≤4,M≤100,所有价格 10≤Pi,j≤100。 另有 15% 的数据,T≤100,N=1。 另有15% 的数据,T=2,N≤100。 对于 100% 的数据,T≤100,N≤100,M≤103,所有价格1≤Pi,j≤104,数据保证任意时刻,小明手上的金币数不可能超过 10^4。
分析
dp完全背包。
#include<bits/stdc++.h>
using namespace std;
long long t,n,m;//未来天数 T,纪念品数量 N,小伟现在拥有的金币数量M。
long long a[110][1010];//第i天第j件价格
long long f[10010];
int main()
{
cin>>t>>n>>m;
for(int i=1;i<=t;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];//输入
}
}
int ans=m;//一开始没买,可认为盈利m元。
for(int T=2;T<=t;T++)//从第二天开始买。
{
memset(f,-0x7f,8*10010);//设置f全为-0x7f.
f[0]=0;//0元换来0元的盈利。
for(int i=1;i<=n;i++)
{
for(int j=0;j<=ans;j++)//f[j]:j元获得的最大利润。so,枚举从0到ans(拥有的钱)
{
if(f[j]!=-0x7f7f7f7f)//可转移
{
f[j+a[T-1][i]]=max(f[j+a[T-1][i]],f[j]+a[T][i]-a[T-1][i]);
//f[j+a[T-1][i]]:“超能力”相当于第T天可用第T-1天的money买东西,所以此意为:花费j+昨天价格的这样东西获得最大利润。f[j]+a[T][i]-a[T-1][i]:j元+今天价-昨天价(利润)获得的最大利润。
}
}
}
long long we=0;
for(int k=1;k<=ans;k++)
{
we=max(we,f[k]);//打一次擂台,比较最值。
}
ans+=we;
}
cout<<ans;//结束!
return 0;
}
C++:邻接矩阵存图
给定n个点, m条单向边 n<=1000, m <= 100000
有k个询问,询问x出去的所有边及其权值,如果有多条边,终点编号小的先输出,具体见样例
输入格式(Format Input)
第一行输入两个整数n和m,表示有n个点和m条边。 接下来输入m行,每行三个整数x y z,表示x到y有一条权值为z的单向边。如果两个点之间有多条边,保留权值最小的一条。 输入一个数字k,表示有k个询问(k<=n)。 接下来输入k行,每行输入一个整数x(x表示节点编号)。
输出格式(Format Output)
对于每一个询问x,输入与x相连的边,每条边占一行,对于每条边先输出终点编号,再输出边权,中间用空格隔开。
输入样例(Sample Input)
4 5
1 2 5
1 3 4
2 4 3
1 4 8 1 3 3
2
2
输出样例(Sample Output)
2 5 3 3 4 8 4 3
前项星写法:
#include<bits/stdc++.h>
using namespace std;
int n,m,k,cnt=0;//cnt表示第i条边,默认为0。 k:几组查询
int last[1010];//last[i]代表i后的第一个边。
int nxt[1010];//nxt[i]代表第i条边的下一条边。
int w[1010];//w[i]代表第i条边的权值。
int ed[1010];//ed[i]表示第i条边的“终点”。
void edge(int x,int y,int z)//新增一条从x至y,边权为z的边。
{
cnt++;//此乃第i条边!
ed[cnt]=y,w[cnt]=z;//i条边终点为y,边权为z。
//前插法 将数据从“头 ”插入 。
nxt[cnt]=last[x];//i的下一条边为第x(起点)点后的第一条边。
last[x]=cnt;//x(起点)点后的第一条边为第i条边。
//注意!先让i的下一条边为第x(起点)点后的第一条边,再让x(起点)点后的第一条边为第i条边。这样才不会将图“断掉 ”。
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y,z;
cin>>x>>y>>z;
edge(x,y,z);//新增一条从x至y,边权为z的边。
}
cin>>k;
for(int i=1;i<=k;i++)
{
int x;
cin>>x;//键入要查询的节点。
for(int j=last[x];j;j=nxt[j]) //设j为 x后的第一条边。如果j!=0,就一直运行。这遍循环后,j来到j+1条边。
{
cout<<ed[j]<<" "<<w[j]<<endl; //输出终点与边权。
}
}
return 0;
}
但由于本人太菜了😭,只会前插法,所以还是用暴力点的法子吧。这法子存储的是点,上边的是边。
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int g[1001][1001];
int main()
{
cin>>n>>m;
memset(g,-1,sizeof(g));//初始值全列为-1,由于本体无负权边,so,无伤大雅。
for(int i=1;i<=m;i++)
{
int x,y,z;
cin>>x>>y>>z;
if(g[x][y]==-1) g[x][y]=z;//如果直接min,g[x][y]永远为-1,so,特判一下。
else g[x][y]=min(g[x][y],z);
}
cin>>k;
for(int i=1;i<=k;i++)
{
int x;
cin>>x;
for(int j=1;j<=n;j++)//快乐地循环n次。
{
if(g[x][j]!=-1)//有边权!!!
{
cout<<j<<" "<<g[x][j]<<endl;//快乐地输出
}
}
}
return 0;
}
感性与希望——读《流浪地球》有所感
宇宙,无边无沿,浩瀚无垠。仰望苍穹,满天星斗,一轮明月,皓照夜空,那些点点繁星连成一条银链,在夜空中流动。我们在宇宙中仅为沧海一粟。地球,如一条小舟,在跌宕起伏的大海上。它随时都会倾翻。人类,该如何应对,宇宙出的一道道难题?
《流浪地球》给我们提出了答案——希望。
“希望,是像钻石一样珍贵的东西。”是的,希望如钻石五彩斑斓,多姿多彩。在茫茫宇宙中,人类与地球没有退缩与逃避之机,没有救援,只有希望,支持着人类平视前方,迈下沉重的一步,又一步。
因为希望,人类可以不惜一切的代价,在地球表面屹立起一万多座高大的“行星发动机”,开启长达两千五百年,一百代人的流浪之旅;因为希望,人类心中的责任感油然而生。他们用自己的生命换取人类文明的延续,点燃、照亮一切光明与黑暗。他们可能默默无闻,可能并不会留名千史,但,永不屈服!英雄坦然面对一切灾难,乃至死亡。尸骨无处安放,但这并不能磨灭人类的勇气,勇气是人类最伟大的赞歌!
因为希望,即使有地球叛军的阻拦与抗拒,那最后的五千名地球派为防止发动机失控,保护地球的安全,没有反抗,在冰川之上英勇赴死。在叛军欢呼时,太阳氦闪爆发,恰恰证明了,他们的选择是正确的!
书中说,让人类保持理智是一种奢求。但何时,人类是理智的呢?人类之所以伟大,是因为拥有情感。理性可以更为客观、正确地处理事情,但人类最终的选择,都是出于感性的。感性创造了希望,希望创造了无限可能。例如抗美援朝战争,没有保家卫国、誓死抗敌的豪情壮志,我们无法取胜。没有希望就没有英雄,没有情感就没有人类。情感赋予了我们灵魂,希望赋予了我们光明!
不知时间会将人类文明推向何处,不知地球是否能跨过两千五百年,一百代人的漫长旅途,但人类的勇气与希望,将永刻于漫漫星空之下。这浩渺莫测的星空,就是人类永恒的纪念碑!祝地球,好运!
哎
又有一位同志倒下了。aigeek.top,服务商跑路。。。
人世无常,好好珍惜吧。。。