Red学编程

注意判断 ac个数 等于零的情况不要re

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int main()
{int n;while(~scanf("%d",&n)){int sum=0,cnt=0;for(int i=1;i<=n;i++){int x;char op[4];scanf("%d %s",&x,op);if(op[0]=='A') sum+=x,cnt++;}if(cnt==0) puts("0 0");else printf("%d %d\n",sum,sum/cnt);}
}

##Red的长跑

只能在早上跑和晚上跑的,直接就减掉
统计以及早上和晚上都能跑的可不可以平均分摊到剩下要跑的天数

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int main()
{int n,a,b,cnt=0;scanf("%d %d %d",&n,&a,&b);for(int i=1;i<=n;i++){int f[3];scanf("%d %d",&f[1],&f[2]);if(f[1]==1&&f[2]==0) a=max(a-1,0);if(f[1]==0&&f[2]==1) b=max(b-1,0);if(f[1]==1&&f[2]==1) cnt++;}if(a+b<=cnt) puts("Yes");else puts("No");
}

Red去购物

贪心 剩下的钱直接先取最大的纸币
dp 背包模型

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int main()
{int a,b,c,d,e,f,x;while(~scanf("%d %d %d %d %d %d %d",&a,&b,&c,&d,&e,&f,&x)){int sum=a+b*5+c*10+d*20+e*50+f*100;if(sum<x) puts("oh no!");else{int v[6]={1,5,10,20,50,100};sum-=x;int ans=0;for(int i=5;i>=0;i--){ans+=sum/v[i];sum-=(sum/v[i])*v[i];}printf("%d\n",ans);}}
}

Red的挖洞

bfs 直接将所有洞放入队列里,将地图上的每个点更新成与他最近的洞的编号,由于入队时满足小的编号在前面,所以题目要求 **(如果有多个出口的“曼哈顿距离”相同,选择出口编号最小的)**就可以满足
最后暴力更新x,y即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
struct node{int x,y;
};
queue<node>q;
int dx[4]={1,0,-1,0};
int dy[4]={0,-1,0,1};
int mp[1005][1005];
bool check(int x,int y)
{if(x<0||x>1000) return 0;if(y<0||y>1000) return 0;if(mp[x][y]) return 0;return 1;
}
void bfs()
{while(q.size()){int x=q.front().x,y=q.front().y;q.pop();for(int i=0;i<4;i++){int tx=x+dx[i],ty=y+dy[i];if(check(tx,ty)){mp[tx][ty]=mp[x][y];q.push({tx,ty});}}}
}
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++){int x,y;scanf("%d %d",&x,&y);q.push({x,y});mp[x][y]=i;}bfs();int sx,sy;scanf("%d %d",&sx,&sy);int ans[1005];memset(ans,0x3f,sizeof ans);for(int i=0;i<=1000;i++){for(int j=0;j<=1000;j++){ans[mp[i][j]]=min(ans[mp[i][j]],abs(i-sx)+abs(j-sy));}}for(int i=1;i<=n;i++) printf("%d\n",ans[i]);
}

Red学语言

字符串模拟
统计三个冒号的位置即可
第一个数字位切片的开始索引;
第二个数字位切片的结束索引;
第三个数字位切片的步长;
观察可以发现:
第一个数字在第一个冒号前面
第二个数字在第二个冒号前面
第三个数字在第二个冒号后面

注意最后如果没有遍历到数字,将其改为默认

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int main()
{char s[1005];int m;scanf("%s %d",s,&m);while(m--){char op[20];scanf("%s",op);int a[3]={-1,-1,-1},cnt=0;for(int i=0;op[i];i++){if(op[i]==':') cnt++;if(op[i]>='0'&&op[i]<='9'){if(a[cnt]==-1) a[cnt]=op[i]-'0';else a[cnt]=a[cnt]*10+op[i]-'0';}}if(a[0]==-1) a[0]=0;if(a[1]==-1) a[1]=strlen(s);if(a[2]==-1) a[2]=1;for(int i=a[0];i<a[1];i+=a[2]) putchar(s[i]);putchar('\n');}
}

Red的序列

贪心处理每个数字即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll f(ll x)
{ll nums[15],cnt=0,ans=0;while(x){nums[++cnt]=x%10;x/=10;}sort(nums+1,nums+1+cnt);for(int i=cnt;i;i--) ans=ans*10+nums[i];return ans;
}
int main()
{int n;scanf("%d",&n);ll sum=0;for(int i=1;i<=n;i++){ll x;scanf("%lld",&x);sum+=f(x);}printf("%lld",sum);
}

yuyu的作业

简单的分解质因数 分解到两个相同的质因数即可输出sorry退出

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int main()
{int n;scanf("%d",&n);for(int i=2;i*i<=n;i++){if(n%i==0){int cnt=0;while(n%i==0){n/=i;cnt++;}if(cnt>=2){puts("Sorry");return 0;}}}puts("OK");
}

yuyu的扑克牌

两个for循环暴力更新即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int main()
{int n;int a[15];scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);int ans=-1000;for(int i=1;i<=n;i++){for(int j=1;j<=i-1;j++){ans=max(a[i]*a[j],ans);}}printf("%d",ans);
}

Red的字符

贪心考虑 如果后面有比当前大的字母那这个字母就不选

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
char s[100005];
// aaazzxbay
//    zzy
int main()
{int cnt[26]={0};scanf("%s",s);for(int i=0;s[i];i++) cnt[s[i]-'a']++;for(int i=0;s[i];i++){int num=0;for(int j=s[i]-'a'+1;j<26;j++) num+=cnt[j];if(num==0) putchar(s[i]);cnt[s[i]-'a']--;}
}

Red去上课

字符串模拟

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
char s[100005];
// aaazzxbay
//    zzy
char ss[505][505][15];
int main()
{int n,m;scanf("%d %d",&n,&m);int cnt=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf("%s",ss[i][j]);if(strcmp(ss[i][j],"null")) cnt++;}}int ans=(int)ceil(cnt*1.0/m);printf("%d\n",ans);int idx=(n-1)*m+m-1,idx1=(ans-1)*m+m-1;while(1){int x=idx/m,y=idx%m;int x1=idx1/m,y1=idx1%m;if(x==ans-1) break;if(strcmp(ss[x][y],"null")&&(!strcmp(ss[x1][y1],"null"))){swap(ss[x][y],ss[x1][y1]);}if(strcmp(ss[x][y],"null")&&(!strcmp(ss[x1][y1],"null"))) //后有人前有空位{idx--,idx1--;}if((!strcmp(ss[x][y],"null"))&&(!strcmp(ss[x1][y1],"null"))) //后没人前有空位{idx--;}if((!strcmp(ss[x][y],"null"))&&strcmp(ss[x1][y1],"null"))//后没人前没有空位{idx--;idx1--;}if(strcmp(ss[x][y],"null")&&strcmp(ss[x1][y1],"null"))// 后有人前没有空位{idx1--;}}for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(j) printf(" ");printf("%s",ss[i][j]);}printf("\n");}
}

Red的矿工

map分组
分类讨论详细见代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int gcd(int a,int b)
{if(b==0) return a;return gcd(b,a%b);
}
map<pair<int,int>,int> mp;
int idx;
vector<int>G[1005];
bool cmp(int a,int b)
{return a>b;
}
struct node{int x,y,w;
}p[1005];
bool cmp2(node a,node b)
{return abs(a.x)<abs(b.x);
}
int main()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d %d %d",&p[i].x,&p[i].y,&p[i].w);sort(p+1,p+1+n, cmp2);for(int i=1;i<=n;i++){int x=p[i].x,y=p[i].y,w=p[i].w;int g=abs(gcd(x,y));x/=g;y/=g;if(!mp.count({x,y})) mp[{x,y}]=++idx;if((int) G[mp[{x,y}]].size()<3) G[mp[{x,y}]].push_back(w);}// 全部只抓第一个;int nums[1005]={0},ans=0;for(int i=1;i<=idx;i++) nums[i]=G[i][0];sort(nums+1,nums+idx+1,cmp);ans=nums[1]+nums[2]+nums[3];// 全部只抓三个for(int i=1;i<=idx;i++){if(G[i].size()==3) ans=max(ans,G[i][0]+G[i][1]+G[i][2]);}// 只抓第一个 和 其他的 抓两个for(int i=1;i<=idx;i++){if(G[i].size()>=2){for(int j=1;j<=idx;j++){if(j==i) continue;ans=max(ans,G[i][0]+G[i][1]+G[j][0]);}}}printf("%d",ans);
}

Red的大鱼

赛时被暴力卡过了
正解最小堆+离散化+树状数组

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7,N=1e5,INF=0x3f3f3f3f;
struct node{int pos;ll v;friend bool operator <(node a,node b){return a.pos>b.pos;}
}p[N+5];priority_queue<node> q;
ll t[N+5];
ll ans[N+5];
ll query(int x)
{ll ans=0;for(int i=x;i;i-=i&(-i)) ans+=t[i];return ans;
}
void add(int x,ll v)
{for(int i=x;i<=N;i+=i&(-i)) t[i]+=v;
}
vector<int>vec;
int findx(int x){return lower_bound(vec.begin(),vec.end(),x)-vec.begin()+1;}
int main()
{int n,w;scanf("%d %d",&n,&w);vec.push_back(0);for(int i=1;i<=n;i++){scanf("%d %lld",&p[i].pos,&p[i].v);vec.push_back(p[i].pos);}sort(vec.begin(), vec.end());add(findx(0),w);for(int i=1;i<=n;i++){int pos=findx(p[i].pos);ll v=p[i].v;int last=pos;q.push({pos,v});while(q.size()){int a=q.top().pos,b=q.top().v;last=a;if(query(a)>b) add(a,b),q.pop();else break;}if(q.empty()) last=N;ans[i] = query(last);}for(int i=1;i<=n;i++){if(ans[i]!=ans[i-1]) printf("%lld\n",ans[i]);}
}

Red的拼接

组合数公式

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
// a+k=b;
// (112)89 + 9 = (112)98
// (121)89 + 9 = (121)98
// A(c1+c2+...cn,c1+c2+...cn)/A(C1,C1)/A(C2,C2)
// C(n,c1)*C(n-c1,c2)*C(n-c1-c2,c2);
// 79 +9 =88
// C(n,m)=C(n-1,m-1)+C(n-1,m)
int c[10],k;
ll C[25][25];
ll f(int x,int y)
{unordered_map<int,int> cnt;for(int tx=1;tx<=x;tx++){int dx=tx;for(int i=2;i*i<=dx;i++){while(dx%i==0) cnt[i]++,dx/=i;}if(dx>1) cnt[dx]++;}for(int tx=1;tx<=y;tx++){int dx=tx;for(int i=2;i*i<=dx;i++){while(dx%i==0) cnt[i]--,dx/=i;}if(dx>1) cnt[dx]--;}for(int tx=1;tx<=x-y;tx++){int dx=tx;for(int i=2;i*i<=dx;i++){while(dx%i==0) cnt[i]--,dx/=i;}if(dx>1) cnt[dx]--;}ll ans=1;for(auto i:cnt){for(int j=1;j<=i.second;j++) ans*=i.first;}return ans;
}
ll check(int a,int b)
{int ca[10]={0},cb[10]={0};int cr[10]={0};while(a){if(a%10==0) return 0;ca[a%10]++;a/=10;}while(b){if(b%10==0) return 0;cb[b%10]++;b/=10;}for(int i=1;i<=9;i++){if(cb[i]!=ca[i]) return 0;if(ca[i]>c[i]) return 0;}int sum=0;for(int i=1;i<=9;i++){cr[i]=c[i]-ca[i];sum+=cr[i];}ll ans=1;for(int i=1;i<=9;i++){ans=ans*C[sum][cr[i]];sum-=cr[i];}return ans;
}
unordered_map<int,int>mp;
int main()
{for(int i=0;i<=24;i++)for(int j=i;j<=24;j++){C[j][i]=f(j,i);//cout<<j<<" "<<i<<" "<<C[j][i]<<endl;}for(int i=1;i<=9;i++) scanf("%d",&c[i]);scanf("%d",&k);ll ans=0;int top=1;for(int i=k;i<100000;i++){int vec[10],x=i,flag=0,cnt=0;while(x){vec[++cnt]=x%10;x/=10;}for(int i=1,k=1,sum=0;i<=cnt;i++,k*=10){sum=sum+k*vec[i];if(mp[sum]){flag=1;break;}}if(flag) continue;ll res=check(i,i-k);if(res) mp[i]=1;ans+=res;}printf("%lld",ans);
}

第15届台州学院校赛题解相关推荐

  1. 第18届浙江大学校赛 Mergeable Stack

    The 18th Zhejiang University Programming Contest Sponsored by TuSimple 第18届浙江大学校赛的c题 解析:起先是用stack写的模 ...

  2. zju 2007校赛题解

    发信人: kelefe (~_~), 信区: ACMICPC标 题: [zz from freecity]zju校赛题解发信站: 逸仙时空 Yat-sen Channel (Wed Apr 18 18 ...

  3. 记第七届ACM校赛-回忆

    这一次校赛其实是两个月半之前的事情了---4月29日.那天比赛完之后,自己就想当天写写这一次比赛的事,但是由于那天比赛完之后又马上又赶回家,5个小时的比赛加上2个小时的车程,整个人都觉得很累,所以那天 ...

  4. 大连海事大学ACM校赛题解

    大连海事大学ACM校赛题解 感谢xzx对题目的排版~ 作为出题人之一,我先简单说一下我认为的题目难度. 我觉着第一档比较容易的签到题是L.J.M,L就是向下取整的签到:J是简单思维.构造题,到了6以后 ...

  5. 2019xupt-acm校赛 题解(C.给你一个666)by出题组tongtong

    重现赛链接 2019 ACM ICPC Xi'an University of Posts & Telecommunications School Contest 前面的话 有幸参与2019X ...

  6. 2019xupt-acm校赛 题解 ( F.猜球球 ) by出题组tongtong

    重现赛链接 2019 ACM ICPC Xi'an University of Posts & Telecommunications School Contest 前面的话 有幸参与2019X ...

  7. 第十三届NENUACM校赛正式赛总结

    目录 A B C D E F G H I 这次比赛主要是心态稳定,一直坚持不懈地想把题A掉,运气好就好在有很多思维题,我出的题没有用到高级点的算法. 一个点在于自己潜心研究了一点组合数学,其实并没有比 ...

  8. [置顶]2010年东北大学ACM程序设计竞赛冬季校赛题解

    8题只做出4题比较easy的题,而且做得挺麻烦,看来还要多练练. AC的题如下 NEUOJ  1112 I Love Apple Description So many people love app ...

  9. CTF-NEFU校赛-题解

    Write by NEFUNSI: ghosin 0ERROR 签到 signin 下载 signin.txt 打开得到一串 base64,解码得到 flag{we1come_t0_NEFUCTF!} ...

最新文章

  1. 【Codeforces】53D Physical Education (有点像冒泡)
  2. python获取数据库查询的元数据_Python数据库、MySQL存储引擎、使用分区表、更改表结构、获取数据库元数据...
  3. 图:BFS(深度优先搜索)图解分析代码实现
  4. 小白开学Asp.Net Core 《九》
  5. K8S Learning(8)—— Service
  6. OpenCV/Python:相机标定
  7. solaris10上修改最大文件句柄数
  8. 解决MyEclipse里Tomcat端口被占用而无法启动的情况
  9. 能源路由器入门必读:面向能源互联网的架构和功能
  10. Appium使用教程_Android篇
  11. ftp连接服务器连接不上,xshell可以连接上
  12. 遗传算法--旅行商问题(TSP问题)-Matlab
  13. Wet-Ra: Monitoring Diapers Wetness with Wireless Signals
  14. php随机生成18位数,PHP随机生成18位不重复的订单号代码实例
  15. arduino智能闹钟_要写一个Arduino的电子闹钟程序,板子是Arduino UNO,和一个实时钟的芯片DS1307,开发环境是Arduino-1.0.2...
  16. 鲁棒局部均值分解 (RLMD)附Matlab代码
  17. 【谁年轻时没YY过】财务自由后的某一天
  18. 深度学习之COLA-Net
  19. c语言switch逻辑用语,第一章 第二节用逻辑用语.doc
  20. 影响一个系统性能的方方面面

热门文章

  1. 黄山市对口升学计算机技校,黄山市及各县个高中、中专、技校有那些?
  2. opencv 美白磨皮人脸检测转
  3. python爬取豆瓣短评_Python爬取豆瓣指定书籍的短评
  4. 511遇见易语言乐玩插件FindPic找图
  5. IOS 原生二维码、条形码扫描for IOS7 (八)
  6. 黑苹果放html5卡,小白第一次安装黑苹果,然后卡代码,别着急,教你一个通用步骤,一个一个排查,大部分是可以解决的,毕竟安装不是最难的一个步骤...
  7. httpclient对象请求时报错javax.net.ssl.SSLException: hostname in certificate didn‘t match
  8. 利用MQTT协议实现Arduino与onenet测温湿度
  9. bash 获取脚本存放路径_如何获取Bash脚本自己的路径
  10. 【教程】Spire.PDF教程:如何给PDF添加背景颜色和平铺背景图