zoukankan      html  css  js  c++  java
  • Wannafly交流赛1(施工中)

    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
    ",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;
    }
    

      

      

  • 相关阅读:
    IconRes提供免费高质量的Material风格android官方图标库
    android中的所谓观察者模式
    Android总结篇——Intent机制详解及示例总结
    SpringMVC注解@initbinder解决类型转换问题
    ubuntu16.04上安装tomcat7
    ImportError: No module named corsheaders
    linux 网卡
    工控机安装Ubuntu14.04
    python2安装django
    Ubuntu14.04 terminal添加右键
  • 原文地址:https://www.cnblogs.com/visualVK/p/8495964.html
Copyright © 2011-2022 走看看