当前位置:网站首页>7/31 训练日志
7/31 训练日志
2022-08-01 09:36:00 【钟钟终】
每日一题 C. Zero Path
明白了结论,这题就不难了,思路:
1.n+m为偶数时,经过的格子数为n+m-1,不可能得到累加得到0
2.设计状态,这个较为简单。mx[i][j]表示到达i行j列时可得答案最大值,mi[i][j]表示到达i行j列时可得答案最小值。
3.若0在最小和最大值之间,则说明有一条路径使得累加结果为0.
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 1e5+100;
const int mod=998244353;
int n,m,a[1005][1005],mi[1005][1005],mx[1005][1005];
signed main()
{
int t;cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=0;i<=n;i++)
for(int j=0;j<=m;j++)
mi[i][j]=1e18,mx[i][j]=-1e18;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
mi[1][1]=mx[1][1]=a[1][1];
if((n+m)%2==0)
{
cout<<"NO"<<endl;continue;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
mi[i][j]=min({
mi[i][j],mi[i-1][j]+a[i][j],mi[i][j-1]+a[i][j]});
mx[i][j]=max({
mx[i][j],mx[i-1][j]+a[i][j],mx[i][j-1]+a[i][j]});
}
}
//cout<<mi[n][m]<<"------"<<mx[n][m]<<endl;
if(mi[n][m]>0||mx[n][m]<0)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
return 0;
}
__int128的读入写出大概10^38范围,用于处理大数,但它能不能使用取决于编译器,大部分OJ是支持的
__int128 read()
{
__int128 f=1,w=0;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0')
{
w=w*10+ch-'0';
ch=getchar();
}
return f*w;
}
void print(__int128 x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x>9)print(x/10);
putchar(x%10+'0');
}
"蔚来杯"4 Jobs (Easy Version)
思路:
1.此类题好久没做了,应注意到iq,eq,aq的值在1 ~400的范围内,公司数在1 ~10范围内。
2.采用dp的方式记录第k家公司iq为i,eq为j时,对aq的最低要求是多少
#include <bits/stdc++.h>
#include <random>
#define int long long
using namespace std;
const int N = 1e5+100;
const int mod=998244353;
int seed,lastans;
int n,q,f[15][405][405];
int fastpow(int a,int b)
{
int res=1;
while(b)
{
if(b&1) res=res*a%mod;
a=a*a%mod;
b>>=1;
}
return res;
}
int solve(int x,int y,int z)
{
int res=0;
for(int i=1;i<=n;i++)
if(z>=f[i][x][y])
res++;
return res;
}
signed main()
{
cin>>n>>q;
for(int k=0;k<=10;k++)
for(int i=0;i<=400;i++)
for(int j=0;j<=400;j++)
f[k][i][j]=1e9;
for(int i=1;i<=n;i++)
{
int k;cin>>k;
for(int j=1;j<=k;j++)
{
int x,y,z;cin>>x>>y>>z;
f[i][x][y]=min(f[i][x][y],z);
}
}
cin>>seed;
for(int k=1;k<=n;k++)
for(int i=1;i<=400;i++)
for(int j=1;j<=400;j++)
f[k][i][j]=min({
f[k][i][j],f[k][i-1][j],f[k][i][j-1]});
std::mt19937 rng(seed);
std::uniform_int_distribution<> u(1,400);
int ans=0;
for (int i=1;i<=q;i++)
{
int IQ=(u(rng)^lastans)%400+1; // The IQ of the i-th friend
int EQ=(u(rng)^lastans)%400+1; // The EQ of the i-th friend
int AQ=(u(rng)^lastans)%400+1; // The AQ of the i-th friend
lastans=solve(IQ,EQ,AQ); // The answer to the i-th friend
ans=(ans+lastans*fastpow(seed,q-i)%mod)%mod;
}
cout<<ans<<endl;
return 0;
}
"蔚来杯"4 Particle Arts
思路:
1.想到了会二进制中“1”两极分化,且不会无故消失。需要统计各个数位上1的个数
2.没想到需要在原数组基础上构建一个新的数组,思维太差了。。。
#include<bits/stdc++.h>
#define int __int128
#define endl '\n'
//#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N=1e5+5;
const int mod=1e9+7;
int n,a[N],b[N],c[N];
__int128 read()
{
__int128 f=1,w=0;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0')
{
w=w*10+ch-'0';
ch=getchar();
}
return f*w;
}
void print(__int128 x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x>9)print(x/10);
putchar(x%10+'0');
}
signed main()
{
//IOS;
n=read();
int sum=0;
for(int i=1;i<=n;i++)
a[i]=read(),sum+=a[i];
for(int i=1;i<=n;i++)
{
for(int j=0;j<=15;j++)
{
if((a[i]>>j)&1==1)
b[j]++;
}
}
for(int i=1;i<=n;i++)
{
for(int j=15;j>=0;j--)
{
if(b[j])
c[i]+=1<<j,b[j]--;
}
}
int ans=0;
for(int i=1;i<=n;i++)
ans+=(n*c[i]-sum)*(n*c[i]-sum);
int k=n*n*n;
int g=__gcd(ans,k);
print(ans/g);
printf("/");
print(k/g);
printf("\n");
return 0;
}
"蔚来杯"4 NIO’s Sword
题意:武器开始攻击力为A(初始为0),通过公式10*A+x对n进行取模等于i则杀死第i个人,最少进行几次变换
思路:
1.任何数模1答案都为0
2.
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 1e5+100;
const int mod=998244353;
int n,f[15];
int cal(int n)
{
int res=0;
for(int i=1;i<=n;i++)
{
int g=i-1;
for(int j=0;j<=15;j++)
{
int k=g*f[j];
k=((i-k)%n+n)%n;
if(k<f[j])
{
res+=j;break;
}
}
}
return res;
}
signed main()
{
f[0]=1;
for(int i=1;i<=15;i++)
f[i]=f[i-1]*10;
cin>>n;
cout<<cal(n)<<endl;
return 0;
}
边栏推荐
- 如何保证数据库与缓存数据一致性?
- Prime Ring Problem
- 使用ESP32驱动QMA7981读取三轴加速度(带例程)
- Taobao commodity details and details on taobao, senior upgrade version of the API
- 基于CAP组件实现补偿事务与消息幂等性
- sql server, FULL模式, dbcc shrinkfile(2,1) 不能收缩事务日志,还是原来的大小,是为什么?
- ogg同步oracle到mysql,字段里面可能有需要转义的字符,怎么配置转义?
- Idea common plugins
- experiment....
- What's up with VS "Cannot find or open PDB file"?How to solve
猜你喜欢

node 格式化时间的传统做法与高级做法(moment)

阿里腾讯面试一二

net stop/start mysql80 拒绝访问

报告:想学AI的学生数量已涨200%,老师都不够用了

How to ensure the consistency of database and cache data?

《时代》杂志:元宇宙时代将改变世界

How to implement deep copy in js?
![[Software Architecture Mode] The difference between MVVM mode and MVC mode](/img/37/8470ff9267752d4ca26a6b54ec0b50.png)
[Software Architecture Mode] The difference between MVVM mode and MVC mode

【数据集】各类绝缘子、鸟巢及防震锤数据集汇总

基于MySql,Redis,Mq,ES的高可用方案解析
随机推荐
ASP.NET Core 6框架揭秘实例演示[30]:利用路由开发REST API
GBase 8s 锁分类
Manual upgrade and optimization tutorial of Lsky Pro Enterprise Edition
AI篮球裁判火了,走步算得特别准,就问哈登慌不慌
BGP综合实验
sql server, FULL模式, dbcc shrinkfile(2,1) 不能收缩事务日志,还是原来的大小,是为什么?
Explain / Desc 执行计划分析
笔记。。。。
GBase 8c中怎么查询数据库配置参数,例如datestyle
Mysql database deployment and initialization steps
朴素贝叶斯--学习笔记--基本原理及代码实现
Node's traditional and advanced practices for formatting time (moment)
STM32个人笔记-程序跑飞
mysql在cmd的登录及数据库与表的基本操作
用OpenCV的边缘检测
Intensive reading of ACmix papers, and analysis of its model structure
The soul asks: How does MySQL solve phantom reads?
HoloView -- Tabular Datasets
在GBase 8c数据库后台,使用什么样的命令来对gtm、dn节点进行主备切换的操作
企业微信群:机器人定时提醒功能数据库配置化