Codeforces Round #677 (Div. 3)
时间:2022-07-27
本文章向大家介绍Codeforces Round #677 (Div. 3),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
A
思路
按题意模拟即可
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<char,char> PCC;
typedef long long ll;
typedef pair<ll,ll> PLL;
const int N=3*1e5+10;
const int M=1e6+10;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
void solve(){
int x;cin>>x;
string s=to_string(x);
int u=s[0]-'0',v=sz(s),ans=0;
rep(i,0,u-1) ans+=10;
if(v==4) ans+=10;
else if(v==3) ans+=6;
else if(v==2) ans+=3;
else ans++;
cout<<ans<<endl;
}
int main(){
IOS;
//freopen("test.txt", "r", stdin);
//freopen("test.txt", "w", stdout);
int t;cin>>t;
while(t--)
solve();
return 0;
}
B
思路
找到起始1的位置和结尾1的位置,统计[st,ed]间0的位置即可
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<char,char> PCC;
typedef long long ll;
typedef pair<ll,ll> PLL;
const int N=55;
const int M=1e6+10;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
int a[N];
void solve(){
int n;cin>>n;
rep(i,1,n+1) cin>>a[i];
int st=0,ed=0;
rep(i,1,n+1){
if(!st && a[i]) st=i;
if(a[i]) ed=i;
}
int ans=0;
rep(i,st,ed+1) if(!a[i]) ans++;
cout<<ans<<endl;
}
int main(){
IOS;
//freopen("test.txt", "r", stdin);
//freopen("test.txt", "w", stdout);
int t;cin>>t;
while(t--)
solve();
return 0;
}
C
思路
显然,如果最大值和最小值相同,则肯定不满足题意。否则,一定存在一个值mx,它的左右两边存在一个小于它的数。此时,该位置的鱼满足题意。
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<char,char> PCC;
typedef long long ll;
typedef pair<ll,ll> PLL;
const int N=3*1e5+10;
const int M=1e6+10;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
int a[N];
void solve(){
int n;cin>>n;
int mx=-1,mn=INF;
rep(i,1,n+1){
cin>>a[i];
mx=max(mx,a[i]);
mn=min(mn,a[i]);
}
if(mx==mn) cout<<-1<<endl;
else{
a[0]=INF;
a[n+1]=INF;
rep(i,1,n+1){
if(a[i]==mx){
if(a[i]>a[i-1] ||a[i]>a[i+1]){
cout<<i<<endl;
return;
}
}
}
}
}
int main(){
IOS;
//freopen("test.txt", "r", stdin);
//freopen("test.txt", "w", stdout);
int t;cin>>t;
while(t--)
solve();
return 0;
}
D
思路
显然,如果海盗的类别只有一种,则一定会发生冲突。否则,我们只需要在一个与该海盗类别不同的结点下连边即可。
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<char,char> PCC;
typedef long long ll;
typedef pair<ll,ll> PLL;
const int N=5005;
const int M=1e6+10;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
int a[N];
bool st[N];
void solve(){
int n;cin>>n;
mst(st,false);
set<int> s;
rep(i,1,n+1) cin>>a[i],s.insert(a[i]);
bool flag=true;
if(sz(s)==1) flag=false;
if(!flag) cout<<"NO"<<endl;
else{
cout<<"YES"<<endl;
rep(i,1,n+1){
rep(j,1,n+1){
if(a[i]!=a[j] && !st[j]){
cout<<i<<' '<<j<<endl;
st[j]=true;
st[i]=true;
}
}
}
}
}
int main(){
IOS;
//freopen("test.txt", "r", stdin);
//freopen("test.txt", "w", stdout);
int t;cin>>t;
while(t--)
solve();
return 0;
}
E
思路
简单的组合问题。第一个坑位有n种选法,第二个坑位有n-1种选法...最后一个坑位有1种选法,故总共选法为n!,再去掉重复得选法,得到公式n!/n/n/2
AC代码
#include<bits/stdc++.h>
#define x first
#define y second
#define PB push_back
#define mst(x,a) memset(x,a,sizeof(x))
#define all(a) begin(a),end(a)
#define rep(x,l,u) for(ll x=l;x<u;x++)
#define rrep(x,l,u) for(ll x=l;x>=u;x--)
#define sz(x) x.size()
#define IOS ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<char,char> PCC;
typedef long long ll;
typedef pair<ll,ll> PLL;
const int N=3*1e5+10;
const int M=1e6+10;
const int INF=0x3f3f3f3f;
const int MOD=1e9+7;
void solve(){
ll n;cin>>n;
ll ans=1;
rep(i,1,n+1) ans*=i;
cout<<ans/(n*n/2)<<endl;
}
int main(){
IOS;
//freopen("test.txt", "r", stdin);
//freopen("test.txt", "w", stdout);
//int t;cin>>t;
//while(t--)
solve();
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法