首页 > 其他分享 >Educational Codeforces Round 1

Educational Codeforces Round 1

时间:2022-10-28 23:13:26浏览次数:70  
标签:Educational return int Codeforces long using include Round define

Educational Codeforces Round 1

C. Nearest vectors

题目大意

给出n个向量,求出其中夹角最小的两个向量。

分析

求出所有向量与x轴的夹角,然后排序,两两比较夹角。

AC_code

#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
long  double Pi=acos(-1);
struct node{
	int x,y,id;
	long double a;
}p[100005];
bool cmp1(node a,node b){
	return a.a<b.a;
}
int n,ans1,ans2;
long double ans;
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d%d",&p[i].x,&p[i].y);
		p[i].a=atan2(p[i].y,p[i].x);
		if(p[i].a<0)p[i].a+=2*Pi;
		p[i].id=i;
	}
	sort(p+1,p+n+1,cmp1);
	ans=p[1].a-p[n].a+2*Pi;
	ans1=p[n].id;ans2=p[1].id;
	for(int i=2;i<=n;i++){
		if(p[i].a-p[i-1].a<ans){
			ans=p[i].a-p[i-1].a;
			ans1=p[i-1].id;
			ans2=p[i].id;
		}
	}
	printf("%d %d",ans1,ans2);
	return 0;
}

D. Igor In the Museum

分析

直接暴力扫描出每一个联通块,算出每一个联通块的周长,然后结束了。

AC_code

#include <bits/stdc++.h>
#define fi first    
#define se second    
#define endl '\n'
#define ios ios::sync_with_stdio(false); cin.tie(0), cout.tie(0)
using ll = long long;
using namespace std;
const int N = 1e5 + 10,M = N*2;

int dx[4] = {1,-1,0,0},dy[4] = {0,0,1,-1}   ;

void solve() {
    int n,m,k;
    cin>>n>>m>>k;
    vector<vector<char>> g(n+1,vector<char>(m+1));
    vector<vector<int>> id(n+1,vector<int>(m+1));
    vector<int> res;
    int cnt = 0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>g[i][j];
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(g[i][j]!='*'&&!id[i][j])
            {
                cnt++;
                res.push_back(0);
                queue<pair<int,int>> q;
                id[i][j] = cnt;
                q.push({i,j});
                while(q.size())
                {
                    auto [x,y] = q.front();q.pop();
                    for(int i=0;i<4;i++)
                    {
                        int nx = x + dx[i],ny = y + dy[i];
                        if(nx<=0||nx>n||ny<=0||ny>m) continue;
                        if(g[nx][ny]=='*')
                        {
                            res[cnt-1]++;
                            continue;
                        }
                        if(id[nx][ny]) continue;
                        q.push({nx,ny});
                        id[nx][ny] = cnt;
                    }
                }
            }
    while(k--)
    {
        int x,y;cin>>x>>y;
        cout<<res[id[x][y]-1]<<'\n';
    }
}
 
int main() 
{
    ios;
    int T=1;
    // cin>>T;
 
    while(T -- ) {
        solve();
    }
 
    return 0;
}

E. Chocolate Bar

分析

状态定义为。

f[i][j][k]即为,从大小为ixj的矩阵中获得k块的代价。

转移方程为。

AC_code

#include <bits/stdc++.h>
#define fi first    
#define se second    
#define endl '\n'
#define ios ios::sync_with_stdio(false); cin.tie(0), cout.tie(0)
using ll = long long;
using namespace std;
const int N = 35,M = N*2,inf = 0x3f3f3f3f;
   
int f[N][N][55];

int g(int n,int m,int p)
{
    if(n*m==p||!p) return 0;
    if(n>m) swap(n,m);
    if(f[n][m][p]) return f[n][m][p];
    int smin = inf;
    for(int i=1;i<=n/2;i++)
        for(int j=0;j<=p;j ++)
        {
            int ans = m*m + g(i,m,j) + g(n-i,m,p-j);
            smin = min(ans,smin);
        }
    for(int i=1;i<=m/2;i++)
        for(int j=0;j<=p;j++)
        {
            int ans = n*n + g(n,i,j) + g(n,m-i,p-j);
            smin = min(ans,smin);
        }
    return f[n][m][p] = smin;
}

void solve() {
    int n,m,k;cin>>n>>m>>k;
    cout<<g(n,m,k)<<'\n';
}
 
int main() 
{
    ios;
    int T=1;
    cin>>T;
 
    while(T -- ) {
        solve();
    }
 
    return 0;
}

标签:Educational,return,int,Codeforces,long,using,include,Round,define
From: https://www.cnblogs.com/aitejiu/p/16837792.html

相关文章

  • Codeforces Round #826 (Div. 3) A-E
    比赛链接A题解知识点:模拟。时间复杂度\(O(n)\)空间复杂度\(O(n)\)代码#include<bits/stdc++.h>#definelllonglongusingnamespacestd;boolsolve(){......
  • Codeforces Round #830 (Div. 2)(持续更新)
    PrefaceAB很水,C一般难度,D1很简单但D2确实巧妙没有现场打有点可惜,后面补的时候都是1A(结果每次比赛的时候都要莫名WA上好久)A.Bestie我刚开始没咋想,感觉操作步数不会很......
  • 【CF1299D】Around the World(线性基)
    题意:给定一张\(n\)个点\(m\)条边的无向连通图,边带权,保证不存在一个长度\(>3\)的简单环经过了\(1\)号点。请求出有多少种方案删除若干条与\(1\)号点相连的边,使得......
  • Codeforces Round #739 (Div. 3) E
    E.PolycarpandStringTransformation显然我们可以通过看谁消失的最早知道删除序列然后有了删除序列以后我们能干什么呢显然对于每一个删除序列我们要是第一次就把......
  • Codeforces Round #672 (Div. 2) D
    D.RescueNibel!转化题意就是叫我们求k条线段都有重合的方案数最开始想的是离散化+线段树手模拟一下样例这样会是有重复的我们要如何保证不重不漏!显然我们可以将线......
  • Codeforces Round #631 (Div. 1) - Thanks, Denis aramis Shitov! A
    A.DreamoonLikesColoring显然我们不看把整块涂满最优的构造就是1234....但是要考虑将整块板涂满我们就要往右挪显然我们每次挪后面的板子都会动我们一定要让......
  • Educational Codeforces Round 138 F Distance to the Path
    DistancetothePath思维+树链剖分首先与树链剖分无关,先考虑如果只更新一个点的情况因为更新一个点,它既能向根的方向更新,又能向子树方向更新,非常难维护,于是我们只......
  • 近期 educational 题目收集
    最近对我比较有启发意义的题。可能很简单但是我都不会/pxARC108E(概率、区间DP)2022.10.16多校联考T4(树的直径、容斥、点分治、NTT)P3239(容斥、概率、DP)2022.10.22联......
  • Codeforces Round #829 (Div. 2)-C1
    C1题目链接:https://codeforces.com/contest/1754/problem/C1emmm,不知道怎么说,做的时候考虑的问题是我通过什么方法来划分整个数组使得题意成立,后面又困在怎么判断是否存......
  • Codeforces Round #707 (Div. 1, based on Moscow Open Olympiad in Informatics) A
    A.GoingHome观察ai<=2.5e6显然我们两数之和最多5e6我们开桶让后怎么暴力让我发愁了显然我们知道我们可能一个数被用了好多次这样显然不行可以想到就是把这个数对......