第19回浙大校試合
目次
A Thanks, TuSimple!
B Even Number Theory
C Robot CleanerI
E Potion
G Postman
J Extended Twin Composite Number
A Thanks, TuSimple!
【題意】n人の女子学生、m人の男子学生がいる.それぞれの身長をそれぞれ読み込んで1/0(彼より高い/低い人と踊る)を読み込んで、最大何人のペアを組むことができますか?
【分析】
4つのエリアに分かれています.彼より背の高い男性を探すには、彼より低い男性を探す必要があります.
それより高い女の子を探して、彼女より低い女の子を探します
4つの領域を並べ替えて、交差して解きます.
【コード】
B Even Number Theory
【題意】集合Eを定義し、集合内の数は偶数である.e-primeを定義することは、集合E内の偶数を表し、2つの異なる偶数aが存在しないことを満たし、bはaを×b=この数;
Pシーケンスを定義し、シーケンスの数はすべてe-primeです.
eを定義!,公式は問題を見て、ここkが偶数であるだけで良いことに注意して、それから分けることができる最も長い長さを求めます
【解析】2^nの長さは2^n−1であり、その後反復することが分かった.
例えばn=16、ans=15;n=20, ans=ans(16)+ans(20-16)=2^4-1+2^2-1=15+3=18
【コード】C++高精度…注意詳細処理例えばmemsetの初期化問題とA B C配列演算時の付与問題
C Robot CleanerI
【題意】ロボットがあり、地図があり、このロボットには実行命令列がある.次のステップで実行する命令には計算式があります.そして、最大拾えるごみの数を計算します.
【分析】
地図上の各位置の数値は固定されているので、計算により、ゴミ拾いの操作でなければ(この位置の数値を0にする)次の指令も変わらない.だから直接シミュレーションします
vis配列記録位置(a,b)は何回通過し、fはゴミ拾いの回数、すなわち地図全体が新しい地図になる回数、すなわち輪数を記録する.(a,b)に着いたとき、まだこのラウンドでサイクルに入ったことを説明すると、breakは落ちます.
【コード】
E Potion
【題意】
まずn個の数が需要を表し、さらにn個の数が在庫を表す.レベルごとに読み込みます.
等級の高いものは等級の低いものに降格することができ、何度も降格することができる.
すべてのニーズを満たすことができるかどうかを尋ねる
【分析】
高いレベルから低いレベルまで遍歴して、多いのは隣接する低いレベルに加えて、最後に完成するかどうかを見ます
【コード】
G Postman
【題意】郵便局は原点で、1人で送る場合は毎回最大k通まで、k通が終わったら郵便局に戻って手紙を取り続け、すべての手紙を送る最低距離を尋ねる
【分析】原点を両端に分割し、いずれも絶対値が最大の部分から遍歴し、i+=k、道のりを2に乗じ、最後の両端の道のりを合わせて、負の値が最小のものと正の値が最大のものをそれぞれ減算し、minを求める.全正または全負の場合は、特殊な処理(元のシーケンスの絶対値をaa配列に格納)
【コード】
J Extended Twin Composite Number
【題意】nを入力し、xを出力し、yはx+n=yを満たし、x,yはすべて合数である
【分析】
nを入力するため、大きい方向にとってnはパリティの区別があります;
まず最初のいくつかの合数を書き出します:4 6 8 9 10 12 14 16 18 20...
nが偶数であればx+2 n=yがあり、xとyがともに偶数であればxが偶数であればよいので、最初の合数4をとると4 n+4が出力される
nが奇数であればx+2 n+1=yがあり、yを偶数にし、最初の奇数合数9をとり、9 n+9を出力する
【コード】
A Thanks, TuSimple!
B Even Number Theory
C Robot CleanerI
E Potion
G Postman
J Extended Twin Composite Number
A Thanks, TuSimple!
【題意】n人の女子学生、m人の男子学生がいる.それぞれの身長をそれぞれ読み込んで1/0(彼より高い/低い人と踊る)を読み込んで、最大何人のペアを組むことができますか?
【分析】
4つのエリアに分かれています.彼より背の高い男性を探すには、彼より低い男性を探す必要があります.
それより高い女の子を探して、彼女より低い女の子を探します
4つの領域を並べ替えて、交差して解きます.
【コード】
#include
#include
#include
#include
#include
B Even Number Theory
【題意】集合Eを定義し、集合内の数は偶数である.e-primeを定義することは、集合E内の偶数を表し、2つの異なる偶数aが存在しないことを満たし、bはaを×b=この数;
Pシーケンスを定義し、シーケンスの数はすべてe-primeです.
eを定義!,公式は問題を見て、ここkが偶数であるだけで良いことに注意して、それから分けることができる最も長い長さを求めます
【解析】2^nの長さは2^n−1であり、その後反復することが分かった.
例えばn=16、ans=15;n=20, ans=ans(16)+ans(20-16)=2^4-1+2^2-1=15+3=18
【コード】C++高精度…注意詳細処理例えばmemsetの初期化問題とA B C配列演算時の付与問題
#include
using namespace std;
const int maxn=1e3+10;
int A[maxn],B[maxn],C[maxn];
///
string div(string a,int b)
{
if(a=="0")return a;
int len=a.length();
string ans;
int d=0;
for(int i=0;i>s;
s=div(s,2);
int k=1;
string ans;
while(s!="")
{
string ss=div(add(s,"1"),2);
s=div(s,2);
ans=add(ans,mulit(ss,k));
k++;
}
cout<
C Robot CleanerI
【題意】ロボットがあり、地図があり、このロボットには実行命令列がある.次のステップで実行する命令には計算式があります.そして、最大拾えるごみの数を計算します.
【分析】
地図上の各位置の数値は固定されているので、計算により、ゴミ拾いの操作でなければ(この位置の数値を0にする)次の指令も変わらない.だから直接シミュレーションします
vis配列記録位置(a,b)は何回通過し、fはゴミ拾いの回数、すなわち地図全体が新しい地図になる回数、すなわち輪数を記録する.(a,b)に着いたとき、まだこのラウンドでサイクルに入ったことを説明すると、breakは落ちます.
【コード】
#include
#include
#include
#include
#include
E Potion
【題意】
まずn個の数が需要を表し、さらにn個の数が在庫を表す.レベルごとに読み込みます.
等級の高いものは等級の低いものに降格することができ、何度も降格することができる.
すべてのニーズを満たすことができるかどうかを尋ねる
【分析】
高いレベルから低いレベルまで遍歴して、多いのは隣接する低いレベルに加えて、最後に完成するかどうかを見ます
【コード】
#include
#include
#include
#include
#include
G Postman
【題意】郵便局は原点で、1人で送る場合は毎回最大k通まで、k通が終わったら郵便局に戻って手紙を取り続け、すべての手紙を送る最低距離を尋ねる
【分析】原点を両端に分割し、いずれも絶対値が最大の部分から遍歴し、i+=k、道のりを2に乗じ、最後の両端の道のりを合わせて、負の値が最小のものと正の値が最大のものをそれぞれ減算し、minを求める.全正または全負の場合は、特殊な処理(元のシーケンスの絶対値をaa配列に格納)
【コード】
#include
#include
#include
#include
#include
J Extended Twin Composite Number
【題意】nを入力し、xを出力し、yはx+n=yを満たし、x,yはすべて合数である
【分析】
nを入力するため、大きい方向にとってnはパリティの区別があります;
まず最初のいくつかの合数を書き出します:4 6 8 9 10 12 14 16 18 20...
nが偶数であればx+2 n=yがあり、xとyがともに偶数であればxが偶数であればよいので、最初の合数4をとると4 n+4が出力される
nが奇数であればx+2 n+1=yがあり、yを偶数にし、最初の奇数合数9をとり、9 n+9を出力する
【コード】
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
int main()
{
int t;scanf("%d",&t);
while(t--)
{
ll n;scanf("%d",&n);
if(n%2==0)
{
printf("4 %lld
",n+4);
}
else printf("9 %lld
",n+9);
}
return 0;
}