按難度順序
C.面積
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
//const int mod=1e9+7;
const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int main()
{
//ios::sync_with_stdio(false);
//cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int _;
cin>>_;
while(_--){
double x;cin>>x;
double ans=(2*(x/2)*(x/2)*3.14)+x*x;
printf("%.2f\n",ans);
}
return 0;
}
E.賽馬
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
//const int mod=1e9+7;
const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int a[maxn],b[maxn];
int main()
{
//ios::sync_with_stdio(false);
//cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int _;
cin>>_;
while(_--){
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)cin>>b[i];
sort(a+1,a+1+n);sort(b+1,b+1+n);
int ans=0,x=1;
for(int i=1;i<=n;i++){
while(a[x]<=b[i]&&x<=n)x++;
if(x==n+1) break;
x++;ans++;
}
cout<<ans<<endl;
}
return 0;
}
H.直線
題意:
題解:
AC代碼
t=int(input())
for i in range(t):
n=int(input())
print(n*(n-1)//2)
B. 減成一
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int a[maxn];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int _;
cin>>_;
while(_--){
int n;cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
a[0]=1;
int ans=0;
for(int i=1;i<=n;i++)
if(a[i]-a[i-1]>0)ans+=a[i]-a[i-1];
cout<<ans<<endl;
}
return 0;
}
J.最大值
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
//const int mod=1e9+7;
const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
string pa,str;
int nx[maxn],ans;
inline void GetNext()
{
int i = 0, j = -1, len = pa.length();
nx[i] = j;
while(i < len){
while( j != -1 && pa[i] != pa[j]) j = nx[j];
nx[++i] = ++j;
}
}
int Kmp()
{
GetNext();
int i =0, j = 0, lens=str.length(),lenp=pa.length();
while(i < lens && j < lenp){
while( j != -1 && str[i] != pa[j]) j = nx[j];
i++, j++;
ans=max(ans,j);
}
if(j == lenp) return i - lenp;///返回模式串在主串中首次出現的下標 +1是位置
else return -1;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int _;
cin>>_;
while(_--){
cin>>pa;ans=0;
str=pa;str[0]='.';
Kmp();cout<<ans<<endl;
}
return 0;
}
D.扔硬幣
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
ll fact[maxn],inv1[maxn],a[maxn];
ll Pow(ll a, ll b){
ll ans = 1;
while(b > 0){
if(b & 1){
ans = ans * a % mod;
}
a = a * a % mod;
b >>= 1;
}
return ans;
}
//逆元
ll inv(ll b){
return Pow(b,mod-2)%mod;
}
ll C(ll n,ll m){
if(m>n||n<0||m<0)return 0;
if(m==0||m==n) return 1;
ll res=(fact[n]*inv1[m]%mod*inv1[n-m])%mod;
return res;
}
void init() {
fact[0] = 1;
for (int i = 1; i < maxn; i++) {
fact[i] = fact[i - 1] * i %mod;
}
inv1[maxn - 1] = Pow(fact[maxn - 1], mod - 2);
for (int i = maxn - 2; i >= 0; i--) {
inv1[i] = inv1[i + 1] * (i + 1) %mod;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int _;
cin>>_;
a[0]=1;
init();
for(int i=1;i<=100000;i++)a[i]=a[i-1]*inv(2)%mod;
while(_--){
ll n,m,k;cin>>n>>m>>k;
if(n-m<k)cout<<0<<endl;
else{
ll y=0;
for(int i=0;i<m;i++)
y=(y+C(n,i)*a[n])%mod;
y=(mod+1-y)%mod;
ll x=C(n,k)*a[n]%mod;
cout<<x*inv(y)%mod<<endl;
}
}
return 0;
}
A.點對最大值
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
vector<pii> g[maxn];
ll val[maxn],dp[maxn],ans;
void dfs(int u,int fa){
dp[u]=2*val[u];
for(auto i:g[u]){
int v=i.fi,w=i.se;
if(v==fa)continue;
dfs(v,u);
ans=max(ans,dp[u]-val[u]+dp[v]-val[v]+w);
dp[u]=max(dp[u],val[u]+dp[v]-val[v]+w);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int _;
cin>>_;
while(_--){
int n;cin>>n;
for(int i=1;i<=n;i++)g[i].clear();
for(int i=2;i<=n;i++){
int v,w;
cin>>v>>w;
g[i].pb(mp(v,w));
g[v].pb(mp(i,w));
}
for(int i=1;i<=n;i++)cin>>val[i];
ans=-8e18;
dfs(1,0);
cout<<ans<<endl;
}
return 0;
}
G.養花
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
//dinic
int n,m,s,t,N;
struct edge{
int v,nx;
int f;
}e[200010];
int head[maxn],cnt,cur[maxn],dep[maxn];
void init(){
cnt=0;
for(int i=0;i<=N;i++)
head[i]=-1;
}
void add(int u,int v,int w){
e[cnt]={v,head[u],w};
head[u]=cnt++;
e[cnt]={u,head[v],0};
head[v]=cnt++;
}
bool bfs(){
for(int i=0;i<=N;i++)cur[i]=head[i],dep[i]=0;
queue<int> q;
q.push(s);dep[s]=1;
while(!q.empty()){
int u=q.front();
q.pop();
for(int i=head[u];i!=-1;i=e[i].nx){
int v=e[i].v;
if(e[i].f&&!dep[v]){
dep[v]=dep[u]+1;
if(v==t)return 1;
q.push(v);
}
}
}
return 0;
}
int dfs(int u,int lim){
if(u==t)return lim;
int ans=0,v,tmp;
for(int i=cur[u];i!=-1;i=e[i].nx){
cur[u]=i;
v=e[i].v;
if(dep[v]==dep[u]+1&&e[i].f){
tmp=dfs(v,min(lim,e[i].f));
e[i].f-=tmp;
e[i^1].f+=tmp;
ans+=tmp;
lim-=tmp;
if(!lim)break;
}
}
if(!ans||lim)dep[u]=0;
return ans;
}
int dinic(){
int ans=0;
while(bfs())ans+=dfs(s,inf);
return ans;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int _;
cin>>_;
while(_--){
int n,m,k;
cin>>n>>m>>k;
s=0,N=k+2*m+1,t=k;
init();
for(int i=1,x;i<=n;i++){
cin>>x;
add(s,x,1);
}
for(int i=1;i<=m;i++){
int op,c;
cin>>op>>c;
if(op==1){
int a,b;
cin>>a>>b;
add(a,b,c);
}
if(op==2){
int a1,a2,b;
cin>>a1>>a2>>b;
for(int j=a1;j<=a2;j++)
add(j,k+i,c);
add(k+i,b,c);
}
if(op==3){
int a,b1,b2;
cin>>a>>b1>>b2;
for(int j=b1;j<=b2;j++)
add(k+i,j,c);
add(a,k+i,c);
}
if(op==4){
int a1,a2,b1,b2;
cin>>a1>>a2>>b1>>b2;
for(int j=a1;j<=a2;j++)
add(j,k+i,c);
add(k+i,k+i+m,c);
for(int j=b1;j<=b2;j++)
add(k+i+m,j,c);
}
}
cout<<dinic()<<endl;
}
return 0;
}
I.字典序
題意:
題解:
AC代碼
/*
Author:zzugzx
Lang:C++
Blog:blog.csdn.net/qq_43756519
*/
#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define endl '\n'
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
const int mod=1e9+7;
//const int mod=998244353;
const double eps = 1e-10;
const double pi=acos(-1.0);
const int maxn=1e6+10;
const ll inf=0x3f3f3f3f;
const int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int l[maxn],r[maxn],a[maxn];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int _;
cin>>_;
while(_--){
int n;cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
int cnt=0;
for(int i=1;i<=n;i++){
int j=i;
while(a[j+1]==a[j]&&j+1<=n)j++;
a[++cnt]=a[i],l[cnt]=i,r[cnt]=j;
i=j;
}
a[cnt+1]=0;deque<int> q;
for(int i=cnt;i;i--)
if(a[i]>a[i+1])q.push_front(i);
else q.pb(i);
for(auto i:q)
for(int j=l[i];j<=r[i];j++)
cout<<j<<' ';
cout<<endl;
}
return 0;
}