2017年西南民族大学程序设计竞赛-网络同步赛
2017-12-31 22:48
453 查看
A星图
思路:利用前缀数组的特点,
代码:
B 好数
暴力
代码:
C 装进肚子
贪心
代码:
D ZZZZone爱吃糖
数组的前缀和
代码:
E 开心的涂刷
数学乘法原理 用快速幂
代码:
F 兼职数靶
暴力
代码:
G 卡牌游戏
暴力判断
代码:
H Hungry!
看故事
代码:
I 快饿死的XzzF
dp一下,打表
代码:
J 小猪佩奇练打字
题目怎么说就怎么做
代码:
K 免费WiFi
其实直接暴力,找最大就可以,我蛋疼用的树状数组区间更新。
代码:
思路:利用前缀数组的特点,
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #define LL long long using namespace std; char map[1005][1005]; int mmp[1005][1005]; int mdp[1005][1005]; int main() { int n,m,k; cin>>n>>m>>k; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>map[i][j]; if(map[i][j]=='#')mmp[i][j]=mmp[i][j-1]+1; else mmp[i][j]=mmp[i][j-1]; } } for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { if(map[j][i]=='#')mdp[j][i]=mdp[j-1][i]+1; else mdp[j][i]=mdp[j-1][i]; } } /*for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cout<<mdp[i][j]<<" "; } cout<<endl; }*/ for(int j=1;j<=k;j++) { int q,w; char a[5]; scanf("%d%d%s",&q,&w,a); if(a[0]=='L') { if(mmp[q][w]==0)printf("YES\n"); else printf("NO\n"); } else if(a[0]=='R') { int sum=mmp[q][m]-mmp[q][w-1]; if(sum==0)printf("YES\n"); else printf("NO\n"); } else if(a[0]=='U') { //cout<<mdp[q][w]<<endl; if(mdp[q][w]==0)printf("YES\n"); else printf("NO\n"); } else { int sum=mdp [w]-mdp[q-1][w]; if(sum==0)printf("YES\n"); else printf("NO\n"); } } return 0; }
B 好数
暴力
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #define LL long long using namespace std; int main() { string n; getline(cin,n); int f=0; for(int i=1;i<n.size();i++) { if(n[i]!=n[i-1]) { f=1; break; } } if(f)printf("NO\n"); else printf("YES\n"); return 0; }
C 装进肚子
贪心
代码:
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <map> using namespace std; int a[100005],b[100005],c[100005]; int main() { int n,k; while(~scanf("%d%d",&n,&k)) { for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } long long sum=0; for(int i=1;i<=n;i++) { scanf("%d",&b[i]); sum+=b[i]; c[i]=b[i]-a[i]; } sort(c+1,c+n+1); for(int i=1;i<=k;i++) { sum-=c[i]; } cout<<sum<<endl; } }
D ZZZZone爱吃糖
数组的前缀和
代码:
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; long long sum[10005]; long long v[10005]; long long dp[10005]; int main() { int n; while(~scanf("%d",&n)) { memset(sum,0,sizeof(sum)); for(int i=1;i<=n;i++) { int q; scanf("%d",&q); sum[i]=sum[i-1]+q; } //for(int i=1;i<=n;i++)cout<<sum[i]<<" ";cout<<endl; int m; cin>>m; for(int i=1;i<=m;i++) { int q,w; scanf("%d%d",&q,&w); v[i]=sum[w]-sum[q-1]; } //for(int i=1;i<=m;i++) //cout<<v[i]<<" "; //cout<<endl; for(int i=1;i<=m;i++) { if(v[i]>0)dp[i]=dp[i-1]+v[i]; else dp[i]=dp[i-1]; } cout<<dp[m]<<endl; } return 0; }
E 开心的涂刷
数学乘法原理 用快速幂
代码:
#include <iostream> #define LL long long using namespace std; const int mod=1e9+7; LL pow(LL a,LL b) { if(a==0)return 0; a%=mod; LL ans=1; while(b>0) { if(b&1)ans=(ans*a)%mod; a=(a*a)%mod; b>>=1; } return ans; } int main() { LL n,m; cin>>n>>m; LL ans=pow(m,n); LL ma= (m%mod)*(pow(m-1,n-1))%mod; cout<<(ans-ma+mod)%mod<<endl; return 0; }
F 兼职数靶
暴力
代码:
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; double map[13][13]={1,1,1,1,1,1,1,1,1,1,1,1,1, 1 ,2 ,2 ,2 ,2 ,2 ,2, 2, 2 ,2, 2 ,2, 1, 1 ,2, 2 ,2 ,2 ,2 ,2 ,2 ,2, 2, 2, 2, 1, 1 ,2, 2, 3 ,3 ,3 ,3 ,3 ,3, 3 ,2 ,2 ,1, 1 ,2, 2, 3 ,3 ,3 ,3 ,3 ,3 ,3 ,2 ,2 ,1, 1 ,2, 2, 3 ,3 ,4 ,4 ,4 ,3 ,3 ,2, 2 ,1, 1 ,2, 2 ,3 ,3 ,4 ,4 ,4 ,3 ,3 ,2, 2 ,1, 1 ,2, 2 ,3 ,3 ,4 ,4 ,4 ,3 ,3 ,2 ,2 ,1, 1 ,2, 2 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,2 ,2 ,1, 1 ,2, 2 ,3 ,3 ,3 ,3 ,3 ,3 ,3 ,2 ,2 ,1, 1 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,1, 1 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,1, 1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1, 1}; int main() { int n; while(scanf("%d",&n)&&n) { char a; double sum=0; for(int i=0;i<13;i++) { for(int j=0;j<13;j++) { cin>>a; if(a=='#'){sum+=map[i][j];} } } double ans=sum/n; printf("%.2lf\n",ans); } return 0; }
G 卡牌游戏
暴力判断
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #define LL long long using namespace std; int main() { int n; int q=0,w=0; cin>>n; string a,b; string j="Jin",m="Mu",s="Shui",h="Huo",t="Tu"; for(int i=1;i<=n;i++) { cin>>a>>b; if(a==j&&b==m)q+=3; else if(a==m&&b==t)q+=3; else if(a==t&&b==s)q+=3; else if(a==s&&b==h)q+=3; else if(a==h&&b==j)q+=3; else if(b==j&&a==m)w+=3; else if(b==m&&a==t)w+=3; else if(b==t&&a==s)w+=3; else if(b==s&&a==h)w+=3; else if(b==h&&a==j)w+=3; else {q++;w++;} } if(q>w)cout<<"Alice"<<endl; else if(q==w) { cout<<"Draw"<<endl; } else { cout<<"Bob"<<endl; } return 0; }
H Hungry!
看故事
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #define LL long long using namespace std; int main() { int n; while(~ 4000 scanf("%d",&n)) { for(int i=1;i<=n;i++) { printf("gu..."); } printf("\n"); printf("The story is so boring. And I am so hungry!\n"); } return 0; }
I 快饿死的XzzF
dp一下,打表
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #define LL long long using namespace std; int dp[22][2]; void q() { dp[1][1]=1; dp[1][0]=1; for(int i=1;i<=20;i++) { for(int j=0;j<=1;j++) { if(j) { dp[i+1][0]+=dp[i][j]; dp[i+1][1]+=dp[i][j]; } else { dp[i+1][1]+=dp[i][j]; } } } } int main() { int n; q(); while(~scanf("%d",&n)) { cout<<dp [0]+dp [1]<<endl; } return 0; }
J 小猪佩奇练打字
题目怎么说就怎么做
代码:
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <map> using namespace std; int a[130]; int v[130][130]; int main() { char s[100005]; while(~scanf("%s",s)) { memset(a,0,sizeof(a)); int n; cin>>n; for(int i=1;i<=122;i++) { a[i]=i; } for(int i=1;i<=n;i++) { char q,w; cin>>q>>w; int qq=q,ww=w; int n=a[qq]; a[qq]=a[ww]; a[ww]=n; } char ss[100005]; int end=strlen(s); for(int i=0;i<end;i++) { int e=s[i]; ss[i]=a[e]; } for(int i=0;i<end;i++) cout<<ss[i]; cout<<endl; } return 0; }
K 免费WiFi
其实直接暴力,找最大就可以,我蛋疼用的树状数组区间更新。
代码:
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; long long c[10005]; long long lowbit(long long x) { return x&(-x); } void add(long long x,long long v) { while(x<=10001) { c[x]+=v; x=x+lowbit(x); } } long long sum(int x) { long long su=0; while(x>0) { su+=c[x]; x-=lowbit(x); } return su; } int main() { int n,m; while(~scanf("%d%d",&n,&m)) { memset(c,0,sizeof(c)); int qq=0,ww=5500; for(int i=1;i<=n;i++) { long long q,w; scanf("%I64d%I64d",&q,&w); add(q,1); add(w+1,-1); if(q>qq)qq=q; if(q<ww)ww=q; if(w>qq)qq=w; if(w<ww)ww=w; } int ma=0; for(int i=ww;i<=qq;i++) { long long su=sum(i); if(su>ma)ma=su; } int mi=ma%m; if(mi)cout<<ma/m+1<<endl; else cout<<ma/m<<endl; } return 0; }
相关文章推荐
- 2017年西南民族大学程序设计竞赛-网络同步赛 C 装进肚子【贪心】
- 2017年西南民族大学程序设计竞赛-网络同步赛
- 2017年西南民族大学程序设计竞赛-网络同步赛
- 2017年西南民族大学程序设计竞赛-网络同步赛 E 开心的涂刷【排列 + 快速幂】
- 2017年西南民族大学程序设计竞赛-网络同步赛(代码)
- 【2017年西南民族大学程序设计竞赛-网络同步赛】A C D E I J
- 2017年西南民族大学程序设计竞赛-网络同步赛-C:装进肚子(思维)
- 2017年西南民族大学程序设计竞赛-网络同步赛-(A~K)
- 2017年西南民族大学程序设计竞赛-网络同步赛 A 星图【思维维护】
- 2017年西南民族大学程序设计竞赛-网络同步赛
- 2017年西南民族大学程序设计竞赛-网络同步赛
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 E 栗酱的数列【差分+KMP】
- 2017年中国大学生程序设计竞赛网络赛杭电OJ---1003 Friend-Graph
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 F 栗酱的不等式【二分】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 E-栗酱的数列(KMP)
- 北航程序设计竞赛决赛网络同步赛 A 浪哥的烦恼 dp or 母函数
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 G 取数游戏2【区间DP】
- 第十一届北京师范大学程序设计竞赛(网络同步赛)+H. 硬币水题II
- 第十一届北京师范大学程序设计竞赛(网络同步赛)+A. BNU ACM校队时间安排表
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 H 小周的曲射炮【公式推导||分类二分】