A.有理数

签到题:直接用floor函数就行了,详细看代码

#define debug
#include<stdio.h>
#include<math.h>
#include<cmath>
#include<queue>
#include<stack>
#include<string>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<functional>
#include<iomanip>
#include<map>
#include<set>
#define f first
#define s second
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll>PLL;
typedef pair<int,ll>Pil;
const ll INF = 0x3f3f3f3f;
const double inf=1e8+100;
const double eps=1e-8;
const ll maxn =1e3+200;
const int N = 1e4+10;
const ll mod=1e9+7;
//define //--solve
void solve() {
int i,j,tt=1;
cin>>tt;
while(tt--){
ll p,q;
ll tmp;
cin>>p>>q;
if(p%q==0){
tmp=floor(p*1.0/q)-1;
}
else tmp=floor(p*1.0/q);
cout<<tmp<<endl;
}
} int main() {
ios_base::sync_with_stdio(false);
#ifdef debug
freopen("in.txt", "r", stdin);
// freopen("out.txt","w",stdout);
#endif
cin.tie(0);
cout.tie(0);
solve();
/*
#ifdef debug
fclose(stdin);
fclose(stdout);
system("out.txt");
#endif
*/
return 0;
}

 B。硬币,实际上50,10都是有5的倍数,所以可以直接吧50,10元的看成是数个5元构成硬币,那问题就容易了,假设一个物品要v元,remain=v%5,就为剩下的还要给少个硬币才能凑够买一个v元物品,然后k=5-remain,这这个k其实就是找回的1元硬币数,详细看代码

#define debug
#include<stdio.h>
#include<math.h>
#include<cmath>
#include<queue>
#include<stack>
#include<string>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<functional>
#include<iomanip>
#include<map>
#include<set>
#define f first
#define s second
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll>PLL;
typedef pair<int,ll>Pil;
const ll INF = 0x3f3f3f3f;
const double inf=1e8+100;
const double eps=1e-8;
const ll maxn =1e3+200;
const int N = 1e4+10;
const ll mod=1e9+7;
//define
ll c[maxn];
//
ll gcd(ll a,ll b) {
return b==0?a:gcd(b,a%b);
}
//--solve
void solve() {
int i,j,tt=1;
cin>>tt;
ll c1,c2,c4,c3,v;
while(tt--){
ll ans=0ll,sum=0;
cin>>c1>>c2>>c3>>c4>>v;
sum=c2*5+c3*10+c4*50;
ll remain=v%5;
ll k=0ll;
if(remain){
k=5-remain;
v+=k;
}
ans=k*(sum/v)+c1;
cout<<ans<<endl;
}
} int main() {
ios_base::sync_with_stdio(false);
#ifdef debug
freopen("in.txt", "r", stdin);
// freopen("out.txt","w",stdout);
#endif
cin.tie(0);
cout.tie(0);
solve();
/*
#ifdef debug
fclose(stdin);
fclose(stdout);
system("out.txt");
#endif
*/
return 0;
}

C.腰带环

D.迷宫

比赛的时候用bfs,tle了,然后群里大佬说是用最小分割(听的一头雾水),然后今天看了别人博客的时候发现了跟我想法一样,而他的过的原因:数组没我只开的大。至于最小分割的,以后学了再补上。

分析:实际上就是让你求从上边或者右边到下边或者左边的最短路

#define debug
#include<stdio.h>
#include<math.h>
#include<cmath>
#include<queue>
#include<stack>
#include<string>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<functional>
#include<iomanip>
#include<map>
#include<set>
#define f first
#define s second
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll>PLL;
typedef pair<int,ll>Pil;
const ll INF = 0x3f3f3f3f;
const double inf=1e8+100;
const double eps=1e-8;
const ll maxn =3e2+300;
const int N = 1e4+10;
const ll mod=1e9+7;
//define
struct node {
int x,y;
ll cost;
node(int x=0,int y=0,ll cost=0):x(x),y(y),cost(cost) {}
bool operator<(const node &a)const {
return cost>a.cost;
}
};
ll d[510][510];
ll mp[600][600];
int dir[4][2]= {0,1,1,0,0,-1,-1,0};
int t,n,m;
priority_queue<node>q;
//ok
bool ok(int x,int y) {
if(x>=1&&x<=n&&y>=1&&y<=m&&mp[x][y]!=0) {
return 1;
}
return 0;
}
//bfs
ll bfs() {
ll ans=-1ll;
while(!q.empty()) {
node now=q.top();
q.pop();
if(now.x==n||now.y==1) {
if(ans==-1)
ans=now.cost;
ans=min(ans,now.cost);
continue;
}
for(int i=0; i<4; i++) {
int xx=now.x+dir[i][0];
int yy=now.y+dir[i][1];
if(xx<1||yy<1||xx>n||yy>m||!mp[xx][yy])
continue;
if(mp[xx][yy]==-1) {
if(d[xx][yy]==-1||d[xx][yy]>now.cost) {
d[xx][yy]=now.cost;
q.push(node(xx,yy,now.cost));
// cout<<xx<<" "<<yy<<" "<d[xx][yy]<<endl;
}
} else {
if(d[xx][yy]==-1||d[xx][yy]>now.cost+mp[xx][yy]) {
d[xx][yy]=now.cost+mp[xx][yy];
q.push(node(xx,yy,d[xx][yy]));
// cout<<xx<<" "<<yy<<" "<d[xx][yy]<<endl;
}
}
}
}
return ans;
} //--solve
void solve() {
int i,j,tt=1;
// cin>>t>>n>>m;
scanf("%d%d%d",&t,&n,&m);
while(t--) {
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
// cin>>mp[i][j];
scanf("%lld",&mp[i][j]);
}
}
memset(d,-1,sizeof(d));
for(j=1; j<=m; j++) {
if(mp[1][j]) {
d[1][j]=(mp[1][j]==-1?0:mp[1][j]);
q.push(node(1,j,d[1][j]));
}
}
for(i=2; i<=n; i++) {
if(mp[i][m]) {
d[i][m]=(mp[i][m]==-1?0:mp[i][m]);
q.push(node(i,m,d[i][m]));
}
}
// for(i=1; i<=n; i++) {
// for(j=1; j<=m; j++) {
// cout<<mp[i][j]<<" ";
// }
// cout<<endl;
// }
printf("%lld\n",bfs());
}
} int main() {
// ios_base::sync_with_stdio(false);
#ifdef debug
freopen("in.txt", "r", stdin);
// freopen("out.txt","w",stdout);
#endif
// cin.tie(0);
// cout.tie(0);
solve();
/*
#ifdef debug
fclose(stdin);
fclose(stdout);
system("out.txt");
#endif
*/
return 0;
}

  

  

Wannafly交流赛1(施工中)的更多相关文章

  1. Wannafly交流赛1_B_硬币【数学】

    Wannafly交流赛1_B_硬币[数学] 链接:https://www.nowcoder.com/acm/contest/69/B 来源:牛客网 题目描述 蜥蜴的生日快到了,就在这个月底! 今年,蜥 ...

  2. Wannafly交流赛1 _A_有理数 【水】

    Wannafly交流赛1 A有理数 [水] 链接:https://www.nowcoder.com/acm/contest/69/A 来源:牛客网 题目描述 有一个问题如下: 给你一个有理数v,请找到 ...

  3. Wannafly交流赛1 B 硬币[数学思维/贪心]

    链接:https://www.nowcoder.com/acm/contest/69/B来源:牛客网 蜥蜴的生日快到了,就在这个月底! 今年,蜥蜴的快乐伙伴之一壁虎想要送好多个1元硬币来恶整蜥蜴. 壁 ...

  4. Wannafly交流赛1 A 有理数[模拟/分类讨论]

    链接:https://www.nowcoder.com/acm/contest/69/A来源:牛客网 题目描述 有一个问题如下: 给你一个有理数v,请找到小于v的最大有理数. 但这个问题的答案对于任意 ...

  5. 记:青岛理工ACM交流赛筹备工作总结篇

    这几天筹备青岛理工ACM交流赛的过程中遇到了不少问题也涨了不少经验.对非常多事也有了和曾经不一样的看法, ​一直在想事后把这几天的流水帐记一遍,一直没空直到今天考完C++才坐下来開始动笔.将这几天的忙 ...

  6. 青岛理工交流赛 H题 素数间隙

    13110581088注销 素数间隙 Time Limit: 1000MS Memory limit: 262144K 题目描述 Neko猫是一个很喜欢玩数字游戏的会说话的肥猫,经常会想到很多很好玩的 ...

  7. 青岛理工ACM交流赛 J题 数格子算面积

    数格子算面积 Time Limit: 1000MS Memory limit: 262144K 题目描述 给你一个多边形(用’\’和’/’表示多边形的边),求多边形的面积. 输入  第一行两个正整数h ...

  8. 西安活动 | 2019年1月13号 "拥抱开源, 又见.NET" 线下交流活动报名进行中

    随着.NET Core的发布和开源,.NET又重新回到人们的视野..NET Core的下个3.0即将release,加入非常多的新功能,越来越拥抱变化,DevOps和Microservice的最佳实践 ...

  9. 丽泽普及2022交流赛day14

    目录 A 题面 题解 B 题面 题解 C 题面 题解 D 题面 题解 A 题面 一个 \(1\dots n\) 的排列 \(p\) 和一个 \(1\dots n-1\) 的排列 \(q\) 满足 对排 ...

随机推荐

  1. AM335x(TQ335x)学习笔记——LCD驱动移植

    TI的LCD控制器驱动是非常完善的,共通的地方已经由驱动封装好了,与按键一样,我们可以通过DTS配置完成LCD的显示.下面,我们来讨论下使用DTS方式配置内核完成LCD驱动的思路. (1)初步分析 由 ...

  2. VxWorks6.6 pcPentium BSP 使用说明(一):基本概念

    "VxWorks6.6 BSP 使用说明"将发布pcPentium和idp945两个系列的BSP的使用说明.每个系列约5篇文章.之后还将发布由这两个官方提供的BSP的实战移植方法. ...

  3. JavaScript设计模式(4)-桥接模式

    桥接模式 在设计一个 Js API 时,可用来弱化它与使用它的类和对象之间的耦合 1. 事件监听器的回调函数 function getBeerById(id, callback) { asyncReq ...

  4. type="submit" button的用法

    原因:关于页面刷新,或者点击某个按钮,开始能现实值,但几秒钟就会刷新掉的原因,这是因为sunmit 和button自带刷新属性,所以说少用就好,或者用returen fales 来断掉接下来的操作,当 ...

  5. 【转载】Apache Storm 官方文档 —— 基础概念

    [转载自https://yq.aliyun.com/articles/87510?t=t1] Storm 系统中包含以下几个基本概念: 拓扑(Topologies) 流(Streams) 数据源(Sp ...

  6. 爬虫抓包工具Fiddle设置

    安装证书(用于https)

  7. webpacke踩坑-新手

    1.题叶-webpack入门指南 2.webpack入门系列 3.w3ctech的webpack入门及实践 4.Express结合Webpack的全栈自动刷新 5.webpack 单页面应用实战 6. ...

  8. 分享一下我进入IT行业的经历

    今天突然根想写博客,就注册了一个,分享一下我的成长经历. 我第一次接触编程的时候是在上大学的时候,我学的专业是工程测量接触的第一个语言是vb,我记得很清楚,我当时写出第一个小Demo是的心情,感觉到了 ...

  9. gulp配置

    /* gulp配置 */ /* gulp配置 */ var gulp = require('gulp'), concat = require('gulp-concat'), rename = requ ...

  10. 谷歌chrome 插件(扩展)开发——进阶篇(c#本地程序和插件交互)下

    在上一篇中,我提出了总任务.接下来去实现. 获取网页内容等其它信息,这是content.js 擅长做的事情: chrome.extension.onMessage.addListener( funct ...