2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)
来源:互联网 发布:centos升级kde 编辑:程序博客网 时间:2024/06/07 15:37
第一次与@morestep打比赛,(好激动)结果打到一半电脑死机了……
然后就开始了开心的颓废……
这里是morestep的csdn希望大家关注 http://blog.csdn.net/morestep
进入正题……
A.
题意:给一个字符串,求要添加多少个字母使得这个字符串出现一个子序列为“abcdefghijklmnopqrstuvwxyz”
题解:求一个最长上升子序列的长度,设其为x,然后答案就是26-x
E.
题意:输入n,k,然后n行,每行一个数t[i]表示做每道题目需要的时间,然后进行以下操作:
1.读前k题。
2.找出解决它用时最少的题目x。
3.做完x,并读下一道没读过的题目(如果有没读过的题目的话)。
4.如果仍然有没解决的题目,回到步骤2。
ans为每一道题目解决时的时间的和。读题不需要时间。
输出ans
题解: 模拟就好了。
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#include<queue>#define LiangJiaJun mainusing namespace std;int n,k;priority_queue<int,vector<int>,greater<int> >q;int a[304];long long t=0,ans=0;int LiangJiaJun(){ scanf("%d%d",&n,&k); for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<=k;i++)q.push(a[i]); int tp=k+1; while(!q.empty()){ t+=q.top();q.pop(); ans+=t; if(tp<=n)q.push(a[tp++]); } printf("%I64d\n",ans); return 0;}
F.
题意:给你一个长度为9的等式,问这个等式对不对….
题解:根本不需要好吧。
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#define LiangJiaJun mainusing namespace std;string s;int l,a[4],p=0;int LiangJiaJun(){ getline(cin,s); l=s.length(); for(int i=0;i<l;i++){ if(isdigit(s[i])){ ++p; while(isdigit(s[i])){ a[p]=a[p]*10+s[i]-'0'; i++; } } } if(a[1]+a[2]!=a[3])puts("NO"); else puts("YES"); return 0;}
G.
题意:给你一个图,o表示苹果,#表示障碍,重力方向向下,求问过段时间后图会是怎样。
题解:细节模拟题
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#define LiangJiaJun mainusing namespace std;char mp[504][504];int n,m;int LiangJiaJun(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)scanf("%s",mp[i]+1); for(int i=1;i<=m;i++){ int lv=0; for(int j=n;j>=1;j--){ if(mp[j][i]=='o'){ lv=j; while(mp[lv+1][i]!='#'&&mp[lv+1][i]!='o'&&lv+1<=n){ ++lv; } swap(mp[j][i],mp[lv][i]); } } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ printf("%c",mp[i][j]); } puts(""); } return 0;}
H.
题意: 给一张图,C表示被云遮住,W表示是水,L表示是陆地。请问图中陆地最少有多少块。(几个是陆地的点连在一起的,算一块陆地)
题解: bfs,把C都当做L来做,当然如果图中没有L的话直接输出0就OK。
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#include<queue>#define LiangJiaJun main#define x first#define y second#define pa pair<int,int>using namespace std;int dx[4]={1,0,-1,0}, dy[4]={0,1,0,-1};char mp[54][54];int n,m,cnt=0;queue<pa>q;vector<pa>ld;bool vis[54][54];int bfs(int a,int b){ q.push(make_pair(a,b)); vis[a][b]=1; while(!q.empty()){ pa now=q.front();q.pop(); for(int i=0;i<4;i++){ if(now.x+dx[i]<=n&&now.x>0&&now.y+dy[i]<=m&&now.y+dy[i]>0){ if(mp[now.x+dx[i]][now.y+dy[i]]=='W'|| vis[now.x+dx[i]][now.y+dy[i]])continue; vis[now.x+dx[i]][now.y+dy[i]]=1; q.push(make_pair(now.x+dx[i],now.y+dy[i])); } } } return 1;}int LiangJiaJun(){ memset(vis,0,sizeof(vis)); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)scanf("%s",mp[i]+1); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(mp[i][j]=='L'){ ld.push_back(make_pair(i,j)); } if(ld.size()==0)return puts("0"),0; for(int i=0;i<ld.size();i++){ if(vis[ld[i].x][ld[i].y])continue; ++cnt; bfs(ld[i].x,ld[i].y); } printf("%d\n",cnt); return 0;}
K.
题意: 给两个骰子的每个面都重新写上数字,第一个人扔第一个骰子,第二个人扔第二个,扔出点数大的人获胜,点数相同则重投。求问第一个人获胜的概率。
题解: s1=第一个骰子比第二个骰子的每一个数字大的方案数,s2=第二个骰子比第一个骰子大的方案数。答案就是s1/(s1+s2)。
注意:如果s1,s2都是0,那么答案是0。
M.
题意:求最长波动序列的长度(:-D)
题解: DP
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#define LiangJiaJun mainusing namespace std;int n;int f[54][2],a[54];int LiangJiaJun(){ scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<=n;i++)f[i][1]=f[i][0]=1; for(int i=1;i<=n;i++){ for(int j=1;j<i;j++){ if(a[j]<a[i]){ f[i][1]=max(f[i][1],f[j][0]+1); } if(a[j]>a[i]){ f[i][0]=max(f[i][0],f[j][1]+1); } } } int ans=0; for(int i=1;i<=n;i++)ans=max(ans,max(f[i][0],f[i][1])); printf("%d\n",ans); return 0;}
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)【solved:12 / 13】
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) 【solved:9 / 12】
- 2017/9/23周测(CF2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2))
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2 全部题目题解
- 2015-2016 ACM-ICPC Pacific Northwest Regional Contest Div.2( Problem V Gears)
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)C】【排序 模拟】Classy 课程难度排序超多关键字
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)D】【水题】Triangle 两个三角形是否可以恰好拼成矩形
- Codeforce Gym 100819P : 2015-2016 ACM-ICPC Pacific Northwest Regional Contest - P 仔细看题啊!
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)H】【迭代 排序 模拟】Hilbert Sort 图形拐拐划分,经过所有点的
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)E】【水题 贪心】Excellence n个数两两组合使得最小和尽可能大
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)A】【floyd 最小路径覆盖】最少飞机数满足所有航班要求
- 【2015-2016 ACM-ICPC Pacific Northwest Regional Contest (Div 1)G】【坐标轴变换 LIS】Racing Gems 开车吃宝石,横向速度不能超
- Codeforce Gym 100819L : 2015-2016 ACM-ICPC Pacific Northwest Regional Contest - L 这是一道阅读理解(微笑)
- [CF Gym 100827C] Containment [2014-2015 ACM-ICPC Pacific Northwest Regional Contest C]
- [CF Gym 100827E] Hill Number [2014-2015 ACM-ICPC Pacific Northwest Regional Contest E]
- [CF Gym 100827F] Knights [2014-2015 ACM-ICPC Pacific Northwest Regional Contest F]
- 数据结构之图篇(1):概述
- bzoj 3175: [Tjoi2013]攻击装置
- 对象类型的转换
- Java--集合
- P1136 迎接仪式
- 2016-2017 ACM-ICPC Pacific Northwest Regional Contest (Div. 2)
- 源码托管平台
- input输入子系统
- Python编程入门到实践:(看书笔记总结9-7)
- java 多线程
- 进程与线程的区别,简单的图片理解+面试简要回答
- ccf认证网络延时100分
- C++顺序容器之deque初探
- [ターゲット] 最近在搞的东东