2020校赛 D逛校园 E 布阵排兵 F 因子 补题

2024-05-31 15:18

本文主要是介绍2020校赛 D逛校园 E 布阵排兵 F 因子 补题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

稳定亚军使人懒惰!!!
只贴代码!!!

D 逛校园

#include <bits/stdc++.h>
typedef long long ll;
const ll mod = 1e9+7;
using namespace std;
const int N = 1e5 + 5;ll Case,n;
char op;
ll x,nx,ny,nd;
ll dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
ll diff[4005][4005];void print(){for(int i=2000-10;i<=2000+10;i++){for(int j=2000-10;j<=2000+10;j++){printf("%d ",diff[i][j]);}puts("");}
} 
void solve(){ll res = 0;scanf("%lld",&n);nx = 2000,ny = 2000;for(int i=1;i<=n;i++){getchar();scanf("%c %lld",&op,&x);int x1 = nx, y1 = ny;if(op=='R') nd++;else if(op=='L') nd--;else if(op=='D') nd += 2;nd=(nd+4)%4; int x2 = nx + dir[nd][0]*x;int y2 = ny + dir[nd][1]*x;if(nd == 0|| nd == 1){diff[x1][y1] += 1;diff[x1][y2+1] -= 1;diff[x2+1][y1] -= 1;diff[x2+1][y2+1] += 1;}else{diff[x2][y2] += 1;diff[x2][y1+1] -= 1;diff[x1+1][y2] -= 1;diff[x1+1][y1+1] += 1;}nx = x2,ny = y2;}for(int i=1;i<=4000;i++) {for(int j=1;j<=4000;j++) {if(diff[i][j]+=diff[i][j-1]+diff[i-1][j]-diff[i-1][j-1]) res++;}}//print();printf("%lld",res);
}int main(){//init();Case=1;//scanf("%d",&Case);while(Case--){solve();}return 0;
}

E 布阵排兵

#include <bits/stdc++.h>
typedef long long ll;
const ll mod = 9999999967;
using namespace std;
namespace fastIO {inline void input(int& res) {char c = getchar();res = 0;int f = 1;while (!isdigit(c)) { f ^= c == '-'; c = getchar(); }while (isdigit(c)) { res = (res << 3) + (res << 1) + (c ^ 48);c = getchar(); }res = f ? res : -res;}inline ll qpow(ll a, ll b) {ll ans = 1, base = a;while (b) {if (b & 1) ans = (ans * base % mod +mod )%mod;base = (base * base % mod + mod)%mod;b >>= 1;}return ans;}
}
using namespace fastIO;
const int N = 1e5 + 5;int Case,n;
ll p,x;
map<ll,ll> zr;
vector<ll> v[N];void solve(){ll res = 0;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lld %lld",&p,&x);if(!zr.count(p)) zr[p]=i;v[zr[p]].push_back(x);}for(auto i:zr){ll t1 = i.first,t2 = i.second;int len = v[t2].size();sort(v[t2].begin(),v[t2].end());for(int j=62;j>=0;j--) {for(int k=len-1;k>=0;k--){if((v[t2][k]>>j)&1){if(((res>>j)&1) == 0)res ^= v[t2][k];for(int t=len-1;t>=0;t--){if(((v[t2][t]>>j)&1)&&t!=k){v[t2][t]^=v[t2][k];}}v[t2][k]=0;break;}}}}printf("%lld",res);
}int main(){//init();Case=1;//scanf("%d",&Case);while(Case--){solve();}return 0;
}

F 因子

#include <bits/stdc++.h>
typedef long long ll;
const ll mod = 998244353;
using namespace std;
const int N = 1e5 + 5;ll Case,n,m,op,x;
ll tree[25][N];ll a[N];int prime[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71};ll getnum(int x,int p){ll cnt = 0;while(x%p==0){cnt++;x/=p;}return cnt;
} int lowbit(int x){return x&(-x);
}void updata(ll i,ll k,ll t){    //在i位置加上k//printf("%lld %lld %d\n",i,k,prime[t]);while(i <= n){tree[t][i] += k;i += lowbit(i);}
}ll getsum(ll i,ll t){        //求A[1 - i]的和ll res = 0;while(i > 0){res += tree[t][i];res %= mod;i -= lowbit(i);}return res;
}
void solve(){scanf("%d %d",&n,&m);for(ll i=1;i<=n;i++){scanf("%lld",&x);a[i]=x;for(ll j=0;j<20;j++){ll t = getnum(x,prime[j]);updata(i,t,j);}}while(m--){scanf("%lld",&op);if(op==1){ll x,k;scanf("%lld %lld",&k,&x);for(ll j=0;j<20;j++){ll t = getnum(a[k],prime[j]);updata(k,-t,j);}for(ll j=0;j<20;j++){ll t = getnum(x,prime[j]);updata(k,t,j);}a[k]=x;}else if(op==2){ll l,r;ll res = 1;scanf("%lld %lld",&l,&r);for(int i=0;i<20;i++){ll t1 = getsum(l-1,i);ll t2 = getsum(r,i);//cout<<prime[i]<<" "<<t1<<" "<<t2<<endl;res = res *(t2 - t1 + mod + 1)%mod;res %= mod;}printf("%lld\n",res);}}
}int main(){//init();Case=1;//scanf("%d",&Case);while(Case--){solve();}return 0;
}

这篇关于2020校赛 D逛校园 E 布阵排兵 F 因子 补题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018290

相关文章

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

hdu 1166 敌兵布阵(树状数组 or 线段树)

题意是求一个线段的和,在线段上可以进行加减的修改。 树状数组的模板题。 代码: #include <stdio.h>#include <string.h>const int maxn = 50000 + 1;int c[maxn];int n;int lowbit(int x){return x & -x;}void add(int x, int num){while

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

【hdu】敌兵布阵(线段树,更加结点,区间求和)

最近开始刷线段树,主要围绕notonlysuccess的线段树总结刷。 结点修改还是比较简单的,不需要什么懒惰标记,直接二分递归就可以了。 #include <iostream>#include <cstdlib>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <vecto

HDU2521(求因子个数)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2521 解题思路: 数据量不大,直接O(n)遍历,对每个数求其因子个数,找出最大的即可。 完整代码: #include <functional>#include <algorithm>#include <iostream>#include <fstream>#includ

2015年校赛总结

题目名为“校赛总结”,其实更想换成“Rainbow为什么五题滚粗?!”。作为今年校赛大二没拆的两个队伍之一,结果打成这样,没脸见人了,总结起来就是我认为自己今天SB了。主要有以下几点: 1.我今天状态的确不好,最后卡的那道B题跟去年在农大校赛上遇见的那题类似,在最后那段时间我已经有思路了,可是由于当时不敢写。等到最后15分钟才开始敲,加上我用很麻烦的Dijstra那种方法,调试起来好多细节要处理

连分数因子分解法——C语言实现

参考网址:连分数分解法寻找整数的因子(Python)-CSDN博客 大数运算:C语言实现 大数运算 加减乘除模运算 超详细_64编程 加减乘除取模 复杂运算-CSDN博客 ‌连分数因子分解法‌是一种用于大整数因子分解的算法,它是计算数论中的一个重要方法。连分数因子分解法通过寻找x2≡y2 (mod p)x2≡y2 (mod p)的形式来分解N。具体来说,这种方法涉及到计算N的简单连分数展开,并

node.js、php、Java、python校园点餐与数据分析系统 校园食堂订餐系统(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流! 💕💕学习资料、程序开发、技术解答、文档报告 💕💕如需要源码,可以扫取文章下方二维码联系咨询 💕💕Java项目 💕💕微信小程序项目 💕💕Android项目 �

校园订餐系统小程序的设计

管理员账户功能包括:系统首页,个人中心,餐厅信息管理,美食信息管理,订单管理 微信端账号功能包括:系统首页,餐厅信息,美食信息,购物车,我的 开发系统:Windows 架构模式:SSM JDK版本:Java JDK1.8 开发工具:IDEA(推荐) 数据库版本: mysql5.7 数据库可视化工具: navicat 服务器:SpringBoot自带 apache tomcat 主要技术:Jav

HDU 1428 漫步校园 (搜索 + dp)

OJ题目:click here ~~ 题意分析:题目中有句话“他考虑从A区域到B区域仅当存在一条从B到机房的路线比任何一条从A到机房的路线更近(否则可能永远都到不了机房了…)。”,关键是对这句话的理解。此刻在A区域,选择下面要走的B区域的条件是,存在一条B区域到机房的路线比A区域到机房的所有路线都近,也就是说,存在一条B区域到机房的路线比A区域到机房的最短路线更近(比最短的近