Summer training #8

A:

B:按题意直接暴力找符合题意的数的个数

#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <algorithm>
#define foror(i,a,b) for(i=a;i<b;i++)
#define foror2(i,a,b) for(i=a;i>b;i--)
#define EPS 1.0e-6
#define PI acos(-1.0)
#define INF 3000000000
#define MOD 1000000009
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define lson o<<1, l, m
#define rson o<<1|1, m+1, r
//using ll = long long;
//using ull= unsigned long long;
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
typedef long long ll;
int num[15][2];//+ 1 - 2 * 3 / 4
int main()
{
 //freopen("in.txt", "r", stdin);
 //freopen("out.txt", "w", stdout);
 int n;
 string a;
 int ans=0;
 cin >> n;
 int now;
 for(int i=1;i<=n;i++)
 {
        cin >> a >> now;
        num[i][1]=now;
        if(a[0]==‘A‘)
        num[i][0]=1;
        if(a[0]==‘S‘)
        num[i][0]=2;
        if(a[0]==‘M‘)
        num[i][0]=3;
        if(a[0]==‘D‘)
        num[i][0]=4;
 }
 for(int i=1;i<=100;i++)
 {
        int cur=i;
        for(int j=1;j<=n;j++)
        {
        if(num[j][0]==1)
        {
        cur+=num[j][1];
        }
        if(num[j][0]==2)
        {
        cur-=num[j][1];
        if(cur<0)
        {
        ans++;
        break;
        }
        }
        if(num[j][0]==3)
        {
        cur*=num[j][1];
        }
        if(num[j][0]==4)
        {
        if(cur%num[j][1]!=0)
        {
        ans++;
        break;
        }
        else
        cur/=num[j][1];
        }
        }
 }
 cout<<ans<<endl;
  return 0;
}

C:水

D:s[i][j]可以向四个方向跳s[i][j]个格子 问能不能从左上角跳到右下角 BFS

#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <algorithm>
#define foror(i,a,b) for(i=a;i<b;i++)
#define foror2(i,a,b) for(i=a;i>b;i--)
#define EPS 1.0e-6
#define PI acos(-1.0)
#define INF 3000000000
#define MOD 1000000009
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define lson o<<1, l, m
#define rson o<<1|1, m+1, r
//using ll = long long;
//using ull= unsigned long long;
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
typedef long long ll;
int dir[5][2];
int m,n;
char s1[505][505];
int  a[505][505];
int ans[505][505];
int flag=0;
pair<int,int> now;
queue<pair<int,int> > que;
void bfs()
{
 for(int i=0;i<=500;i++)
        for(int j=0;j<=500;j++)
        ans[i][j]=2e9;
 ans[1][1]=0;
 int dx,dy;
 while(!que.empty())
 {
        now=que.front();
        que.pop();
        int f=now.first;
        int s=now.second;
        int j=a[f][s];
        for(int i=0;i<4;i++)
        {
        dx=f+j*dir[i][0];
        dy=s+dir[i][1]*j;
        if(dx>=1&&dx<=m&&dy>=1&&dy<=n&&ans[dx][dy]>ans[f][s]+1)
        {
        ans[dx][dy]=ans[f][s]+1;
        now.first=dx,now.second=dy;
        que.push(now);
        }
        }
 }
}
int main()
{
 //freopen("in.txt", "r", stdin);
 //freopen("out.txt", "w", stdout);
 cin >> m >> n;
dir[0][0]=-1,dir[0][1]=0;
dir[1][0]=1,dir[1][1]=0;
dir[2][0]=0,dir[2][1]=1;
dir[3][0]=0,dir[3][1]=-1;
 for(int i=1;i<=m;i++)
 {
        scanf("%s",s1[i]+1);
        for(int j=1;j<=n;j++)
        a[i][j]=s1[i][j]-‘0‘;
 }
 /*for(int i=0;i<m;i++)
 {
        for(int j=0;j<n;j++)
        printf("%d",a[i][j]);
        cout<<endl;
 }*/
 //TS;
 now.first=now.second=1;
 que.push(now);
 bfs();
 //TS;
 if(ans[m][n]==2e9)
 cout<<"IMPOSSIBLE"<<endl;
 else
 cout<<ans[m][n]<<endl;
  return 0;
}

E:水

F:水

G:水

H:加权区间调度问题 瞎DP

#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <algorithm>
#define foror(i,a,b) for(i=a;i<b;i++)
#define foror2(i,a,b) for(i=a;i>b;i--)
#define EPS 1.0e-6
#define PI acos(-1.0)
#define INF 3000000000
#define MOD 1000000009
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define lson o<<1, l, m
#define rson o<<1|1, m+1, r
//using ll = long long;
//using ull= unsigned long long;
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
typedef long long ll;
struct wave
{
ll start;
ll w;
ll t;
ll end;
}now[300005];
bool cmp(wave a,wave b)
{
return a.start>b.start;
}
ll dp[1000010];
int main()
{
 //freopen("in.txt", "r", stdin);
 //freopen("out.txt", "w", stdout);
 int n;
 ll maxn=0;
 cin >> n;
 for(int i=1;i<=n;i++)
 {
        int t;
        scanf("%d %d %d",&now[i].start,&now[i].w,&now[i].t);
        now[i].end=now[i].t+now[i].start;
        maxn=max(maxn,now[i].end);
 }
 sort(now+1,now+1+n,cmp);
 int pop=1;
 for(int i=1000000;i>=1;i--)
 {
        if(i==now[pop].start)
        {
        if(i+now[pop].t>1000000)
        dp[i]=max(dp[i+1],now[pop].w);
        else
        dp[i]=max(dp[i+1],dp[i+now[pop].t]+now[pop].w);
        pop++;
        }
        else
        dp[i]=dp[i+1];
 }
 cout<<dp[1]<<endl;
  return 0;
}

J:每个格子的值为其为中心九宫格之和 问最终的值 其实一起都要除九的话就不用除了

#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <algorithm>
#define foror(i,a,b) for(i=a;i<b;i++)
#define foror2(i,a,b) for(i=a;i>b;i--)
#define EPS 1.0e-6
#define PI acos(-1.0)
#define INF 3000000000
#define MOD 1000000009
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define lson o<<1, l, m
#define rson o<<1|1, m+1, r
//using ll = long long;
//using ull= unsigned long long;
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
typedef long long ll;
int now[110][110];
int doit[110][110];
set<int> ans;
int main()
{
 //freopen("in.txt", "r", stdin);
 //freopen("out.txt", "w", stdout);
 int m,n,time;
 cin >> m >> n >> time;
 for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
        scanf("%d",&now[i][j]);
 while(time--)
 {
        mem(doit,0);
        for(int i=0;i<n;i++)
        {
                for(int j=0;j<m;j++)
                {

                        for(int x=-1;x<=1;x++)
                        {
                                for(int y=-1;y<=1;y++)
                                {
                                int dx=(n+i+x)%n;
                                int dy=(m+j+y)%m;
                                doit[i][j]+=now[dx][dy];
                                }
                        }
                }
        }
        for(int i=0;i<n;i++)
                for(int j=0;j<m;j++)
                        now[i][j]=doit[i][j];
 }
 for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
                ans.insert(now[i][j]);
 cout<<ans.size()<<endl;
  return 0;
}

K:DFS+回溯 注意!!!每个轮子只能有一个旋转状态 如果发生矛盾了就转不动了!

#include <bits/stdc++.h>
#include <cstring>
#include <iostream>
#include <algorithm>
#define foror(i,a,b) for(i=a;i<b;i++)
#define foror2(i,a,b) for(i=a;i>b;i--)
#define EPS 1.0e-6
#define PI acos(-1.0)
#define INF 3000000000
#define MOD 1000000009
#define mem(a,b) memset((a),b,sizeof(a))
#define TS printf("!!!\n")
#define lson o<<1, l, m
#define rson o<<1|1, m+1, r
//using ll = long long;
//using ull= unsigned long long;
//std::ios::sync_with_stdio(false);
using namespace std;
//priority_queue<int,vector<int>,greater<int>> que;
typedef long long ll;
int n;
int flag=-1;
struct point
{
int x,y,r;
}a[1005];
vector<int> v[1005];
int visit[1005];
int ans=0;
int anser;
bool check(point a,point b)
{
int dx=abs(a.x-b.x);
int dy=abs(a.y-b.y);
int dr=a.r+b.r;
if(dx*dx+dy*dy==dr*dr)
 return true;
 return false;
}
void dfs(int num,int now)
{
        if(flag==1)
        return ;
        for(int i=0;i<v[num].size();i++)
        {
        int next=v[num][i];
        if(flag==1)
        return ;
        if(visit[next]==-1)
        {
        visit[next]=now;
        dfs(next,now^1);
        }
        if(visit[next]!=now)
        {
        flag=1;
        return ;
        }
        }
}
int gcd(int x,int y){return y==0?x:gcd(y,x%y);}
int main()
{
 //freopen("in.txt", "r", stdin);
 //freopen("out.txt", "w", stdout);
 cin >> n;
 mem(visit,-1);
 visit[1]=0;
 for(int i=1;i<=n;i++)
 {
        cin >> a[i].x >> a[i].y >> a[i].r;
 }
 for(int i=1;i<n;i++)
        for(int j=i+1;j<=n;j++)
 {
        if(check(a[i],a[j]))
        {
        v[i].push_back(j);
        v[j].push_back(i);
        }
 }
 dfs(1,1);
 if(flag==1)
 {
        cout<<"The input gear cannot move."<<endl;
        return 0;
 }
 if(visit[n]==-1)
 {
        cout<<"The input gear is not connected to the output gear."<<endl;
        return 0;
 }
        int chu=gcd(a[1].r,a[n].r);
        if(visit[1]!=visit[n])
        cout<<"-";
        printf("%d:%d\n",a[1].r/chu,a[n].r/chu);
  return 0;
}

时间: 2024-08-05 15:00:11

Summer training #8的相关文章

Android官方开发文档Training系列课程中文版:手势处理之滚动动画及Scroller

原文地址:http://android.xsoftlab.net/training/gestures/scroll.html 在Android中,滑动经常由ScrollView类来实现.任何超出容器边界的布局都应该将自己内嵌在ScrollView中,以便提供可滚动的视图效果.自定义滚动只有在特定的场景下才会被用到.这节课将会描述这样一种场景:使用scroller显示一种可滚动的效果. 你可以使用Scroller或者OverScroller来收集一些滑动动画所需要的数据.这两个类很相似,但是Ove

2017 UESTC Training for Data Structures

2017 UESTC Training for Data Structures A    水,找区间极差,RMQ怼上去. #include<bits/stdc++.h> using namespace std; #pragma comment(linker, "/STACK:102400000,102400000") #define rep(i,a,b) for (int i=a;i<=b;i++) #define per(i,b,a) for (int i=b;i&

WeChall_Training: Programming 1 (Training, Coding)

When you visit this link you receive a message.Submit the same message back to http://www.wechall.net/challenge/training/programming1/index.php?answer=the_messageYour timelimit is 1.337 seconds 解题: 先在浏览器获取自己的cookie,再用python写了个自动提交的程序,header加上自己的cooki

Training的第二十天

今天接着做前天的活,就是实现把下载下来的jpg格式的图片设置为桌面的功能.要实现这个功能的关键点一个是要调用API(SystemParametersInfo)更换桌面:二是要把下载下来的JPG格式的图片转换成Bmp格式的图片才能够应用为桌面. 由于对API没什么概念,所以我从网上查了下资料并从网上copy了有关该API变成C#的代码和把jpg格式的图片转换成bmp格式图片的代码.接着看懂了里面的代码便自己修改了一下.接下来的是完善这个程序和把它加入到windows自动启动的任务中. 对于程序的完

2014 Multi-University Training Contest 6 Apple Tree(数学题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4925 Apple Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 176    Accepted Submission(s): 120 Problem Description I've bought an orchard an

hdu 4925 Apple Tree--2014 Multi-University Training Contest 6

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4925 Apple Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 188    Accepted Submission(s): 129 Problem Description I've bought an orchard an

xtu DP Training C.炮兵阵地

炮兵阵地 Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: 118564-bit integer IO format: %lld      Java class name: Main 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表

2014 Super Training #1 F Passage 概率DP

原题: HDU 3366   http://acm.hdu.edu.cn/showproblem.php?pid=3366 本来用贪心去做,怎么都WA,后来看网上原来是一个DP题. 首先按P/Q来做排序,即P越大,Q越小就越好,这样可以确保先选最优的路走. dp[i][j]表示已经到了第i条路(说明前i-1条都没成功的情况),还剩j块钱时能够走出去的概率. 则方程: dp[i][j] = way[i].P + way[i].Q*(dp[i+1][j-1]) + way[i].D*(dp[i+1]

2014 UESTC Training for Data Structures H - Cookies Test

H - Cookies Test Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status As chief programmer at a cookie production plant you have many responsibilities, one of them being that the cookies produced and packag

2014 UESTC Training for Data Structures K - 方师傅与栈

K - 方师傅与栈 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 方师傅有一个1?N的排列,排列的顺序是固定的,他想要把这个排列重新排列成他喜欢的顺序. 于是他买了一个栈,他会按顺序将排列扔进栈内,在某些时刻将栈顶元素取出,这样出栈后的排列就可以重新排序啦. 例如,原序列是1,2,他先将1入栈,再将2入栈,然后将2出栈,最后将1出栈,那么新序列就变