CodeForces 500 C. New Year Book Reading(贪心)
来源:互联网 发布:java web文件服务器 编辑:程序博客网 时间:2024/06/05 18:08
Description
一个人要读n本书,每本书有个重量wi,要读m天,每天读1本,他每天把要看的书抽出来(把上面的搬开,拿出要读的书再把上面的书放回去),看完以后放到一摞书的最上面,问根据他的阅读顺序怎样初始化书的排列顺序能使他搬书的重量最小,求出这个最小重量
Input
第一行两个整数n和mm表示书的数量和要读的天数,第二行n个整数wi表示每本书的重量,第三行m个整数bi表示第i天要读的书的编号
Output
搬书的最小重量
Sample Input
3 5
1 2 3
1 3 2 3 1
Sample Output
12
Solution
贪心,初始序列就是将要读的书放在上面,其他书放下面,而要读的书的顺序就是先读的在上面,拿两门书来举例,比如要读的顺序是1 2,,如果初始顺序是1 2,那么搬书的重量就是w1,如果初始顺序是2 1,那么搬书的重量就是w2+w1,以此类推可知哪本书先读就把哪本书放在较上面的位置
Code
#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define maxn 555struct node{ int pos,w;}a[maxn],temp;int main(){ int n,m,w[maxn],flag[2*maxn],b[2*maxn]; while(~scanf("%d%d",&n,&m)) { memset(flag,0,sizeof(flag)); for(int i=1;i<=n;i++)scanf("%d",&w[i]); int res=1; for(int i=1;i<=m;i++) { scanf("%d",&b[i]); if(!flag[b[i]]) { flag[b[i]]=1; a[res].pos=b[i]; a[res++].w=w[b[i]]; } } int ans=0; for(int i=1;i<=m;i++) { int tar; for(int j=1;j<=n;j++) if(a[j].pos==b[i]) { tar=j; break; } temp=a[tar]; for(int j=1;j<tar;j++)ans+=a[j].w; for(int j=tar;j>1;j--)a[j]=a[j-1]; a[1]=temp; } printf("%d\n",ans); } return 0;}
0 0
- CodeForces 500 C. New Year Book Reading(贪心)
- 【CodeForces】500C - New Year Book Reading(贪心)
- Codeforces 500C:New Year Book Reading(思维+贪心?)
- CodeForces 500C New Year Book Reading(贪心+思维)
- codeforces 500C New Year Book Reading (贪心+思维)
- CodeForces 500C New Year Book Reading 贪心
- 【Goodbye2014】Codeforces 500C New Year Book Reading【贪心+模拟】
- Codeforces 500C New Year Book Reading
- Codeforces 500C New Year Book Reading
- codeforces 500C New Year Book Reading
- CodeForces 500C New Year Book Reading
- codeforces 500C New Year Book Reading(取书)
- codeforces 500C New Year Book Reading (贪心,很好的思维题)
- C. New Year Book Reading codeforces
- codeforces 500c New Year Book Reading 【思维】
- New Year Book Reading(贪心)
- codeforces New Year Book Reading
- 【codeforces】New Year Book Reading
- Shell脚本之crontab定时任务
- android DataBinding 的简介和使用
- 剑指Offer----面试题41(2):和为s的连续正数序列
- Android 四大组件五大布局
- uikit修改uk-button样式后出现的文字重叠现象
- CodeForces 500 C. New Year Book Reading(贪心)
- PAT 1010. 一元多项式求导 C语言
- POJ 3278(简单广搜)
- Eclipse 使用C++类库:pthread和openssl
- eclipse中不能找到dubbo.xsd解决方法
- 最常见功能的封装(功能之间的组装)
- hdu 1213 并查集
- linux-vi编辑器的使用
- 1106. Lowest Price in Supply Chain (25)